blob: 217a932f06858f4cec83ae7b79d80a659044cda0 [file] [log] [blame]
William A. Kennington IIIf19a8382021-02-16 14:16:47 -08001SUMMARY = "Configures ncsi for a gBMC system"
2PR = "r1"
3LICENSE = "Apache-2.0"
4LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
5
6inherit systemd
7
William A. Kennington III95e2e992023-11-08 17:13:19 -08008GBMC_NCSI_DHCP_RELAY ??= "${@'' if int(d.getVar('FLASH_SIZE')) < 65536 else '1'}"
William A. Kennington IIId8122302023-10-16 18:25:18 -07009GBMC_NCSI_IF_OLD ??= ""
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -070010GBMC_NCSI_PURGE_ETC ??= ""
William A. Kennington IIId8122302023-10-16 18:25:18 -070011
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080012SRC_URI += " \
William A. Kennington III95e2e992023-11-08 17:13:19 -080013 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrncsidhcp.netdev'} \
14 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrncsidhcp.network'} \
15 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcncsidhcp.netdev'} \
16 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcncsidhcp.network'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080017 file://50-gbmc-ncsi.rules.in \
William A. Kennington III95e2e992023-11-08 17:13:19 -080018 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://gbmc-ncsi-dhcrelay.service.in'} \
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -070019 file://gbmc-ncsi-ip-from-ra.service.in \
20 file://gbmc-ncsi-ip-from-ra.sh.in \
William A. Kennington III71fc1892021-12-13 14:32:20 -080021 file://gbmc-ncsi-smartnic-wa.sh.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080022 file://gbmc-ncsi-sslh.socket.in \
23 file://gbmc-ncsi-sslh.service \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080024 file://gbmc-ncsi-nft.sh.in \
William A. Kennington IIIe99168a2021-03-10 23:40:47 -080025 file://gbmc-ncsi-br-pub-addr.sh.in \
William A. Kennington III21e7e452021-11-05 01:31:59 -070026 file://gbmc-ncsi-br-deprecated-ips.sh.in \
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -070027 file://gbmc-ncsi-set-nicenabled.service.in \
William A. Kennington III9f57cee2022-11-03 14:17:35 -070028 file://gbmc-ncsi-alias.service.in \
William A. Kennington III37e6f392022-05-16 16:19:11 -070029 file://50-gbmc-ncsi-clear-ip.sh.in \
William A. Kennington IIId8122302023-10-16 18:25:18 -070030 file://gbmc-ncsi-old.service.in \
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -070031 file://gbmc-ncsi-purge.service.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080032 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080033
34S = "${WORKDIR}"
35
Willy Tu4dd03ca2021-08-06 09:37:35 -070036RDEPENDS:${PN} += " \
William A. Kennington IIIb03ef8c2021-10-01 01:16:24 -070037 bash \
William A. Kennington III95e2e992023-11-08 17:13:19 -080038 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'dhcp-relay'} \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080039 gbmc-ip-monitor \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080040 ncsid \
William A. Kennington III5aa84b52021-11-15 15:20:13 -080041 network-sh \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080042 nftables-systemd \
43 sslh \
William A. Kennington III5aa84b52021-11-15 15:20:13 -080044 ndisc6-rdisc6 \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080045 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080046
Willy Tu4dd03ca2021-08-06 09:37:35 -070047FILES:${PN} += " \
William A. Kennington III37e6f392022-05-16 16:19:11 -070048 ${datadir}/gbmc-br-lib \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080049 ${datadir}/gbmc-ip-monitor \
50 ${systemd_unitdir} \
51 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080052
Willy Tu4dd03ca2021-08-06 09:37:35 -070053SYSTEMD_SERVICE:${PN} += " \
William A. Kennington III95e2e992023-11-08 17:13:19 -080054 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'gbmc-ncsi-dhcrelay.service'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080055 gbmc-ncsi-sslh.service \
56 gbmc-ncsi-sslh.socket \
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -070057 gbmc-ncsi-set-nicenabled.service \
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -070058 gbmc-ncsi-ip-from-ra.service \
William A. Kennington IIId8122302023-10-16 18:25:18 -070059 ${@'' if d.getVar('GBMC_NCSI_IF_OLD') == '' else 'gbmc-ncsi-old.service'} \
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -070060 ${@'' if d.getVar('GBMC_NCSI_PURGE_ETC') == '' else 'gbmc-ncsi-purge.service'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080061 "
62
Willy Tu4dd03ca2021-08-06 09:37:35 -070063do_install:append() {
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080064 if_name='${GBMC_NCSI_IF_NAME}'
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080065 if [ -z "$if_name" ]; then
66 echo "Missing if_name" >&2
67 exit 1
68 fi
69
70 install -d -m0755 ${D}${sysconfdir}/sysctl.d
71 echo "net.ipv6.conf.$if_name.accept_dad=0" \
72 >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf
73 echo "net.ipv6.conf.$if_name.dad_transmits=0" \
74 >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf
75
William A. Kennington III95e2e992023-11-08 17:13:19 -080076 if [ "${GBMC_NCSI_DHCP_RELAY}" = 1 ]; then
77 install -d -m0755 ${D}${systemd_unitdir}/network
78 install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.netdev \
79 ${D}${systemd_unitdir}/network/
80 install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.network \
81 ${D}${systemd_unitdir}/network/
82 install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.netdev \
83 ${D}${systemd_unitdir}/network/
84 install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.network \
85 ${D}${systemd_unitdir}/network/
86 fi
William A. Kennington III96745092021-08-06 00:06:42 -070087
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080088 netdir=${D}${systemd_unitdir}/network/00-bmc-$if_name.network.d
89 install -d -m0755 "$netdir"
90 echo '[Network]' >>"$netdir"/gbmc-ncsi.conf
91 echo 'DHCP=false' >>"$netdir"/gbmc-ncsi.conf
92 echo 'IPv6AcceptRA=false' >>"$netdir"/gbmc-ncsi.conf
93 echo 'LLMNR=false' >>"$netdir"/gbmc-ncsi.conf
94 echo 'MulticastDNS=false' >>"$netdir"/gbmc-ncsi.conf
95 echo 'LinkLocalAddressing=ipv6' >>"$netdir"/gbmc-ncsi.conf
96
97 nftdir=${D}${sysconfdir}/nftables
98 install -d -m0755 "$nftdir"
William A. Kennington III1ef795b2021-03-10 18:59:12 -080099 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi.rules.in \
William A. Kennington IIIf19a8382021-02-16 14:16:47 -0800100 >"$nftdir"/50-gbmc-ncsi.rules
101
102 wantdir=${D}${systemd_system_unitdir}/multi-user.target.wants
103 install -d -m0755 "$wantdir"
104 ln -sv ../ncsid@.service "$wantdir"/ncsid@$if_name.service
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800105
William A. Kennington III9f57cee2022-11-03 14:17:35 -0700106 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-alias.service.in \
107 >${D}${systemd_system_unitdir}/gbmc-ncsi-alias.service
108 install -d -m0755 "${D}${systemd_system_unitdir}/nic-hostless@$if_name.target.wants"
109 ln -sv ../gbmc-ncsi-alias.service "${D}${systemd_system_unitdir}/nic-hostless@$if_name.target.wants"/
110 install -d -m0755 "${D}${systemd_system_unitdir}/nic-hostful@$if_name.target.wants"
111 ln -sv ../gbmc-ncsi-alias.service "${D}${systemd_system_unitdir}/nic-hostful@$if_name.target.wants"/
112
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800113 install -m 0644 ${WORKDIR}/gbmc-ncsi-sslh.service ${D}${systemd_system_unitdir}
William A. Kennington III1ef795b2021-03-10 18:59:12 -0800114 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-sslh.socket.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800115 >${D}${systemd_system_unitdir}/gbmc-ncsi-sslh.socket
William A. Kennington III1ef795b2021-03-10 18:59:12 -0800116
117 mondir=${D}${datadir}/gbmc-ip-monitor/
118 install -d -m0755 $mondir
119 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-nft.sh.in \
120 >${WORKDIR}/gbmc-ncsi-nft.sh
121 install -m644 ${WORKDIR}/gbmc-ncsi-nft.sh $mondir
William A. Kennington IIIe99168a2021-03-10 23:40:47 -0800122 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh.in \
123 >${WORKDIR}/gbmc-ncsi-br-pub-addr.sh
124 install -m644 ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh $mondir
William A. Kennington III21e7e452021-11-05 01:31:59 -0700125 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh.in \
126 >${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh
127 install -m644 ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh $mondir
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -0700128
William A. Kennington III37e6f392022-05-16 16:19:11 -0700129 brlibdir=${D}${datadir}/gbmc-br-lib/
130 install -d -m0755 $brlibdir
131 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi-clear-ip.sh.in \
132 >${WORKDIR}/50-gbmc-ncsi-clear-ip.sh
133 install -m644 ${WORKDIR}/50-gbmc-ncsi-clear-ip.sh $brlibdir
William A. Kennington IIIb174c182021-11-03 14:54:51 -0700134
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -0700135 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-set-nicenabled.service.in \
136 >${D}${systemd_system_unitdir}/gbmc-ncsi-set-nicenabled.service
William A. Kennington III96745092021-08-06 00:06:42 -0700137
William A. Kennington III95e2e992023-11-08 17:13:19 -0800138 if [ "${GBMC_NCSI_DHCP_RELAY}" = "1" ]; then
139 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-dhcrelay.service.in \
140 >${D}${systemd_system_unitdir}/gbmc-ncsi-dhcrelay.service
141 fi
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -0700142
William A. Kennington IIId8122302023-10-16 18:25:18 -0700143 if [ -n "${GBMC_NCSI_IF_OLD}" ]; then
144 sed -e "s,@NCSI_IF@,$if_name,g" -e "s,@OLD_IF@,${GBMC_NCSI_IF_OLD},g" ${WORKDIR}/gbmc-ncsi-old.service.in \
145 >${D}${systemd_system_unitdir}/gbmc-ncsi-old.service
146 fi
147
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -0700148 if [ -n "${GBMC_NCSI_PURGE_ETC}" ]; then
149 sed -e "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-purge.service.in \
150 >${D}${systemd_system_unitdir}/gbmc-ncsi-purge.service
151 fi
152
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -0700153 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.service.in \
154 >${WORKDIR}/gbmc-ncsi-ip-from-ra.service
155 install -m0644 ${WORKDIR}/gbmc-ncsi-ip-from-ra.service ${D}${systemd_system_unitdir}
156 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh.in \
157 >${WORKDIR}/gbmc-ncsi-ip-from-ra.sh
158 install -d -m0755 ${D}${libexecdir}
159 install -m0755 ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh ${D}${libexecdir}/
William A. Kennington III71fc1892021-12-13 14:32:20 -0800160
William A. Kennington III95e2e992023-11-08 17:13:19 -0800161 sed -e "s,@NCSI_IF@,$if_name,g" -e "s,@GBMC_NCSI_DHCP_RELAY@,${GBMC_NCSI_DHCP_RELAY},g" \
162 ${WORKDIR}/gbmc-ncsi-smartnic-wa.sh.in >${WORKDIR}/gbmc-ncsi-smartnic-wa.sh
William A. Kennington III71fc1892021-12-13 14:32:20 -0800163 install -d -m0755 ${D}${bindir}
164 install -m0755 ${WORKDIR}/gbmc-ncsi-smartnic-wa.sh ${D}${bindir}/
William A. Kennington III96745092021-08-06 00:06:42 -0700165}
166
167do_rm_work:prepend() {
168 # HACK: Work around broken do_rm_work not properly calling rm with `--`
169 # It doesn't like filenames that start with `-`
170 rm -rf -- ${WORKDIR}/-*
William A. Kennington IIIf19a8382021-02-16 14:16:47 -0800171}