summaryrefslogtreecommitdiff
path: root/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
blob: 0312f05023bbeb01c8fe3601c6fcaaea7db35fac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
SUMMARY = "Configures ncsi for a gBMC system"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"

inherit systemd

SRC_URI += " \
  file://-bmc-gbmcbrncsidhcp.netdev \
  file://-bmc-gbmcbrncsidhcp.network \
  file://-bmc-gbmcncsidhcp.netdev \
  file://-bmc-gbmcncsidhcp.network \
  file://50-gbmc-ncsi.rules.in \
  file://gbmc-ncsi-dhcrelay.service.in \
  file://gbmc-ncsi-ip-from-ra.service.in \
  file://gbmc-ncsi-ip-from-ra.sh.in \
  file://gbmc-ncsi-sslh.socket.in \
  file://gbmc-ncsi-sslh.service \
  file://gbmc-ncsi-nft.sh.in \
  file://gbmc-ncsi-br-pub-addr.sh.in \
  file://gbmc-ncsi-br-deprecated-ips.sh.in \
  file://gbmc-ncsi-set-nicenabled.service.in \
  file://25-gbmc-ncsi-clear-ip.sh.in \
  "

S = "${WORKDIR}"

RDEPENDS:${PN} += " \
  bash \
  dhcp-relay \
  gbmc-ip-monitor \
  ncsid \
  network-sh \
  nftables-systemd \
  sslh \
  ndisc6-rdisc6 \
  "

FILES:${PN} += " \
  ${datadir}/gbmc-br-dhcp \
  ${datadir}/gbmc-ip-monitor \
  ${systemd_unitdir} \
  "

SYSTEMD_SERVICE:${PN} += " \
  gbmc-ncsi-dhcrelay.service \
  gbmc-ncsi-sslh.service \
  gbmc-ncsi-sslh.socket \
  gbmc-ncsi-set-nicenabled.service \
  gbmc-ncsi-ip-from-ra.service \
  "

do_install:append() {
  if_name='${GBMC_NCSI_IF_NAME}'
  if [ -z "$if_name" ]; then
    echo "Missing if_name" >&2
    exit 1
  fi

  install -d -m0755 ${D}${sysconfdir}/sysctl.d
  echo "net.ipv6.conf.$if_name.accept_dad=0" \
    >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf
  echo "net.ipv6.conf.$if_name.dad_transmits=0" \
    >>${D}${sysconfdir}/sysctl.d/25-gbmc-ncsi.conf

  install -d -m0755 ${D}${systemd_unitdir}/network
  install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.netdev \
    ${D}${systemd_unitdir}/network/
  install -m0644 ${WORKDIR}/-bmc-gbmcbrncsidhcp.network \
    ${D}${systemd_unitdir}/network/
  install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.netdev \
    ${D}${systemd_unitdir}/network/
  install -m0644 ${WORKDIR}/-bmc-gbmcncsidhcp.network \
    ${D}${systemd_unitdir}/network/

  netdir=${D}${systemd_unitdir}/network/00-bmc-$if_name.network.d
  install -d -m0755 "$netdir"
  echo '[Network]' >>"$netdir"/gbmc-ncsi.conf
  echo 'DHCP=false' >>"$netdir"/gbmc-ncsi.conf
  echo 'IPv6AcceptRA=false' >>"$netdir"/gbmc-ncsi.conf
  echo 'LLMNR=false' >>"$netdir"/gbmc-ncsi.conf
  echo 'MulticastDNS=false' >>"$netdir"/gbmc-ncsi.conf
  echo 'LinkLocalAddressing=ipv6' >>"$netdir"/gbmc-ncsi.conf

  nftdir=${D}${sysconfdir}/nftables
  install -d -m0755 "$nftdir"
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/50-gbmc-ncsi.rules.in \
    >"$nftdir"/50-gbmc-ncsi.rules

  wantdir=${D}${systemd_system_unitdir}/multi-user.target.wants
  install -d -m0755 "$wantdir"
  ln -sv ../ncsid@.service "$wantdir"/ncsid@$if_name.service

  install -m 0644 ${WORKDIR}/gbmc-ncsi-sslh.service ${D}${systemd_system_unitdir}
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-sslh.socket.in \
    >${D}${systemd_system_unitdir}/gbmc-ncsi-sslh.socket

  mondir=${D}${datadir}/gbmc-ip-monitor/
  install -d -m0755 $mondir
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-nft.sh.in \
    >${WORKDIR}/gbmc-ncsi-nft.sh
  install -m644 ${WORKDIR}/gbmc-ncsi-nft.sh $mondir
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh.in \
    >${WORKDIR}/gbmc-ncsi-br-pub-addr.sh
  install -m644 ${WORKDIR}/gbmc-ncsi-br-pub-addr.sh $mondir
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh.in \
    >${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh
  install -m644 ${WORKDIR}/gbmc-ncsi-br-deprecated-ips.sh $mondir

  dhcpdir=${D}${datadir}/gbmc-br-dhcp/
  install -d -m0755 $dhcpdir
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/25-gbmc-ncsi-clear-ip.sh.in \
    >${WORKDIR}/25-gbmc-ncsi-clear-ip.sh
  install -m644 ${WORKDIR}/25-gbmc-ncsi-clear-ip.sh $dhcpdir

  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-set-nicenabled.service.in \
    >${D}${systemd_system_unitdir}/gbmc-ncsi-set-nicenabled.service

  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-dhcrelay.service.in \
    >${D}${systemd_system_unitdir}/gbmc-ncsi-dhcrelay.service

  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.service.in \
    >${WORKDIR}/gbmc-ncsi-ip-from-ra.service
  install -m0644 ${WORKDIR}/gbmc-ncsi-ip-from-ra.service ${D}${systemd_system_unitdir}
  sed "s,@NCSI_IF@,$if_name,g" ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh.in \
    >${WORKDIR}/gbmc-ncsi-ip-from-ra.sh
  install -d -m0755 ${D}${libexecdir}
  install -m0755 ${WORKDIR}/gbmc-ncsi-ip-from-ra.sh ${D}${libexecdir}/
}

do_rm_work:prepend() {
  # HACK: Work around broken do_rm_work not properly calling rm with `--`
  # It doesn't like filenames that start with `-`
  rm -rf -- ${WORKDIR}/-*
}