summaryrefslogtreecommitdiff
path: root/meta-google/recipes-google/ncsi/gbmc-ncsi-config.bb
blob: 10ef56a768f69d9b98bc77fdd881cdf935d188a4 (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
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-set-nicenabled.service.in \
  "

S = "${WORKDIR}"

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

FILES:${PN} += " \
  ${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-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}/-*
}