blob: 29ec5bd19e2e6d707de0d1ddfc3671fcd576c408 [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 IIIf31b5c62023-12-07 15:32:26 -080011GBMC_NCSI_DHCP_IMPERSONATE_HOST ??= "1"
William A. Kennington IIId8122302023-10-16 18:25:18 -070012
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080013SRC_URI += " \
William A. Kennington III95e2e992023-11-08 17:13:19 -080014 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrncsidhcp.netdev'} \
15 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrncsidhcp.network'} \
16 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcncsidhcp.netdev'} \
17 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://-bmc-gbmcncsidhcp.network'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080018 file://50-gbmc-ncsi.rules.in \
William A. Kennington III95e2e992023-11-08 17:13:19 -080019 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'file://gbmc-ncsi-dhcrelay.service.in'} \
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -070020 file://gbmc-ncsi-ip-from-ra.service.in \
21 file://gbmc-ncsi-ip-from-ra.sh.in \
William A. Kennington III71fc1892021-12-13 14:32:20 -080022 file://gbmc-ncsi-smartnic-wa.sh.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080023 file://gbmc-ncsi-sslh.socket.in \
24 file://gbmc-ncsi-sslh.service \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080025 file://gbmc-ncsi-nft.sh.in \
William A. Kennington IIIe99168a2021-03-10 23:40:47 -080026 file://gbmc-ncsi-br-pub-addr.sh.in \
William A. Kennington III21e7e452021-11-05 01:31:59 -070027 file://gbmc-ncsi-br-deprecated-ips.sh.in \
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -070028 file://gbmc-ncsi-set-nicenabled.service.in \
William A. Kennington III9f57cee2022-11-03 14:17:35 -070029 file://gbmc-ncsi-alias.service.in \
William A. Kennington III37e6f392022-05-16 16:19:11 -070030 file://50-gbmc-ncsi-clear-ip.sh.in \
William A. Kennington IIId8122302023-10-16 18:25:18 -070031 file://gbmc-ncsi-old.service.in \
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -070032 file://gbmc-ncsi-purge.service.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080033 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080034
35S = "${WORKDIR}"
36
Willy Tu4dd03ca2021-08-06 09:37:35 -070037RDEPENDS:${PN} += " \
William A. Kennington IIIb03ef8c2021-10-01 01:16:24 -070038 bash \
William A. Kennington III95e2e992023-11-08 17:13:19 -080039 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'dhcp-relay'} \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080040 gbmc-ip-monitor \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080041 ncsid \
William A. Kennington III5aa84b52021-11-15 15:20:13 -080042 network-sh \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080043 nftables-systemd \
44 sslh \
William A. Kennington III5aa84b52021-11-15 15:20:13 -080045 ndisc6-rdisc6 \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080046 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080047
Willy Tu4dd03ca2021-08-06 09:37:35 -070048FILES:${PN} += " \
William A. Kennington III37e6f392022-05-16 16:19:11 -070049 ${datadir}/gbmc-br-lib \
William A. Kennington III1ef795b2021-03-10 18:59:12 -080050 ${datadir}/gbmc-ip-monitor \
51 ${systemd_unitdir} \
52 "
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080053
Willy Tu4dd03ca2021-08-06 09:37:35 -070054SYSTEMD_SERVICE:${PN} += " \
William A. Kennington III95e2e992023-11-08 17:13:19 -080055 ${@'' if d.getVar('GBMC_NCSI_DHCP_RELAY') != '1' else 'gbmc-ncsi-dhcrelay.service'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080056 gbmc-ncsi-sslh.service \
57 gbmc-ncsi-sslh.socket \
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -070058 gbmc-ncsi-set-nicenabled.service \
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -070059 gbmc-ncsi-ip-from-ra.service \
William A. Kennington IIId8122302023-10-16 18:25:18 -070060 ${@'' if d.getVar('GBMC_NCSI_IF_OLD') == '' else 'gbmc-ncsi-old.service'} \
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -070061 ${@'' if d.getVar('GBMC_NCSI_PURGE_ETC') == '' else 'gbmc-ncsi-purge.service'} \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -080062 "
63
Willy Tu4dd03ca2021-08-06 09:37:35 -070064do_install:append() {
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080065 if_name='${GBMC_NCSI_IF_NAME}'
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080066 if [ -z "$if_name" ]; then
67 echo "Missing if_name" >&2
68 exit 1
69 fi
70
71 install -d -m0755 ${D}${sysconfdir}/sysctl.d
72 echo "net.ipv6.conf.$if_name.accept_dad=0" \
73 >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf
74 echo "net.ipv6.conf.$if_name.dad_transmits=0" \
75 >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf
76
William A. Kennington III95e2e992023-11-08 17:13:19 -080077 if [ "${GBMC_NCSI_DHCP_RELAY}" = 1 ]; then
78 install -d -m0755 ${D}${systemd_unitdir}/network
79 install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.netdev \
80 ${D}${systemd_unitdir}/network/
81 install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.network \
82 ${D}${systemd_unitdir}/network/
83 install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.netdev \
84 ${D}${systemd_unitdir}/network/
85 install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.network \
86 ${D}${systemd_unitdir}/network/
87 fi
William A. Kennington III96745092021-08-06 00:06:42 -070088
William A. Kennington IIIf19a8382021-02-16 14:16:47 -080089 netdir=${D}${systemd_unitdir}/network/00-bmc-$if_name.network.d
90 install -d -m0755 "$netdir"
91 echo '[Network]' >>"$netdir"/gbmc-ncsi.conf
92 echo 'DHCP=false' >>"$netdir"/gbmc-ncsi.conf
93 echo 'IPv6AcceptRA=false' >>"$netdir"/gbmc-ncsi.conf
94 echo 'LLMNR=false' >>"$netdir"/gbmc-ncsi.conf
95 echo 'MulticastDNS=false' >>"$netdir"/gbmc-ncsi.conf
96 echo 'LinkLocalAddressing=ipv6' >>"$netdir"/gbmc-ncsi.conf
97
98 nftdir=${D}${sysconfdir}/nftables
99 install -d -m0755 "$nftdir"
William A. Kennington III1ef795b2021-03-10 18:59:12 -0800100 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi.rules.in \
William A. Kennington IIIf19a8382021-02-16 14:16:47 -0800101 >"$nftdir"/50-gbmc-ncsi.rules
102
103 wantdir=${D}${systemd_system_unitdir}/multi-user.target.wants
104 install -d -m0755 "$wantdir"
105 ln -sv ../ncsid@.service "$wantdir"/ncsid@$if_name.service
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800106
William A. Kennington III9f57cee2022-11-03 14:17:35 -0700107 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-alias.service.in \
108 >${D}${systemd_system_unitdir}/gbmc-ncsi-alias.service
109 install -d -m0755 "${D}${systemd_system_unitdir}/nic-hostless@$if_name.target.wants"
110 ln -sv ../gbmc-ncsi-alias.service "${D}${systemd_system_unitdir}/nic-hostless@$if_name.target.wants"/
111 install -d -m0755 "${D}${systemd_system_unitdir}/nic-hostful@$if_name.target.wants"
112 ln -sv ../gbmc-ncsi-alias.service "${D}${systemd_system_unitdir}/nic-hostful@$if_name.target.wants"/
113
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800114 install -m 0644 ${WORKDIR}/gbmc-ncsi-sslh.service ${D}${systemd_system_unitdir}
William A. Kennington III1ef795b2021-03-10 18:59:12 -0800115 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-sslh.socket.in \
William A. Kennington III7f11d1f2021-02-16 14:57:41 -0800116 >${D}${systemd_system_unitdir}/gbmc-ncsi-sslh.socket
William A. Kennington III1ef795b2021-03-10 18:59:12 -0800117
118 mondir=${D}${datadir}/gbmc-ip-monitor/
119 install -d -m0755 $mondir
120 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-nft.sh.in \
121 >${WORKDIR}/gbmc-ncsi-nft.sh
122 install -m644 ${WORKDIR}/gbmc-ncsi-nft.sh $mondir
William A. Kennington IIIe99168a2021-03-10 23:40:47 -0800123 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh.in \
124 >${WORKDIR}/gbmc-ncsi-br-pub-addr.sh
125 install -m644 ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh $mondir
William A. Kennington III21e7e452021-11-05 01:31:59 -0700126 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh.in \
127 >${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh
128 install -m644 ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh $mondir
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -0700129
William A. Kennington III37e6f392022-05-16 16:19:11 -0700130 brlibdir=${D}${datadir}/gbmc-br-lib/
131 install -d -m0755 $brlibdir
132 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi-clear-ip.sh.in \
133 >${WORKDIR}/50-gbmc-ncsi-clear-ip.sh
134 install -m644 ${WORKDIR}/50-gbmc-ncsi-clear-ip.sh $brlibdir
William A. Kennington IIIb174c182021-11-03 14:54:51 -0700135
Vivekanand Veeracholane3f33702021-06-16 15:29:15 -0700136 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-set-nicenabled.service.in \
137 >${D}${systemd_system_unitdir}/gbmc-ncsi-set-nicenabled.service
William A. Kennington III96745092021-08-06 00:06:42 -0700138
William A. Kennington III95e2e992023-11-08 17:13:19 -0800139 if [ "${GBMC_NCSI_DHCP_RELAY}" = "1" ]; then
140 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-dhcrelay.service.in \
141 >${D}${systemd_system_unitdir}/gbmc-ncsi-dhcrelay.service
142 fi
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -0700143
William A. Kennington IIId8122302023-10-16 18:25:18 -0700144 if [ -n "${GBMC_NCSI_IF_OLD}" ]; then
145 sed -e "s,@NCSI_IF@,$if_name,g" -e "s,@OLD_IF@,${GBMC_NCSI_IF_OLD},g" ${WORKDIR}/gbmc-ncsi-old.service.in \
146 >${D}${systemd_system_unitdir}/gbmc-ncsi-old.service
147 fi
148
William A. Kennington IIIf0b88e22023-10-16 18:26:32 -0700149 if [ -n "${GBMC_NCSI_PURGE_ETC}" ]; then
150 sed -e "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-purge.service.in \
151 >${D}${systemd_system_unitdir}/gbmc-ncsi-purge.service
152 fi
153
William A. Kennington IIIc7454fb2021-09-14 16:01:37 -0700154 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.service.in \
155 >${WORKDIR}/gbmc-ncsi-ip-from-ra.service
156 install -m0644 ${WORKDIR}/gbmc-ncsi-ip-from-ra.service ${D}${systemd_system_unitdir}
157 sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh.in \
158 >${WORKDIR}/gbmc-ncsi-ip-from-ra.sh
159 install -d -m0755 ${D}${libexecdir}
160 install -m0755 ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh ${D}${libexecdir}/
William A. Kennington III71fc1892021-12-13 14:32:20 -0800161
William A. Kennington III95e2e992023-11-08 17:13:19 -0800162 sed -e "s,@NCSI_IF@,$if_name,g" -e "s,@GBMC_NCSI_DHCP_RELAY@,${GBMC_NCSI_DHCP_RELAY},g" \
163 ${WORKDIR}/gbmc-ncsi-smartnic-wa.sh.in >${WORKDIR}/gbmc-ncsi-smartnic-wa.sh
William A. Kennington III71fc1892021-12-13 14:32:20 -0800164 install -d -m0755 ${D}${bindir}
165 install -m0755 ${WORKDIR}/gbmc-ncsi-smartnic-wa.sh ${D}${bindir}/
William A. Kennington IIIf31b5c62023-12-07 15:32:26 -0800166
167 if [ '${GBMC_NCSI_DHCP_IMPERSONATE_HOST}' != 1 ]; then
Yuxiao Zhang283de3f2024-01-29 17:45:16 -0800168 install -d -m0755 ${D}${sysconfdir}/systemd/system/
169 ln -sv /dev/null ${D}${sysconfdir}/systemd/system/dhcp6@.service
170 ln -sv /dev/null ${D}${sysconfdir}/systemd/system/dhcp4@.service
William A. Kennington IIIf31b5c62023-12-07 15:32:26 -0800171 fi
William A. Kennington III96745092021-08-06 00:06:42 -0700172}
173
174do_rm_work:prepend() {
175 # HACK: Work around broken do_rm_work not properly calling rm with `--`
176 # It doesn't like filenames that start with `-`
177 rm -rf -- ${WORKDIR}/-*
William A. Kennington IIIf19a8382021-02-16 14:16:47 -0800178}