summaryrefslogtreecommitdiff
path: root/meta-google/recipes-google/networking/gbmc-nic-config.bb
blob: e804e2628df8867d75667a314df8e422e2172a1b (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
SUMMARY = "Configured gBMC non-NCSI interface"
PR = "r1"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"

GBMC_EXT_NICS ?= ""
GBMC_DHCP_RELAY ??= "${@'' if int(d.getVar('FLASH_SIZE')) < 65536 else '1'}"

inherit systemd

SRC_URI += " \
  file://50-gbmc-nic.rules \
  file://50-gbmc-nic.rules.in \
  file://-bmc-nic.network.in \
  file://gbmc-nic-neigh.sh.in \
  file://gbmc-nic-ra.sh \
  file://gbmc-nic-ra@.service \
  ${@'' if d.getVar('GBMC_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrnicdhcp.netdev'} \
  ${@'' if d.getVar('GBMC_DHCP_RELAY') != '1' else 'file://-bmc-gbmcbrnicdhcp.network'} \
  ${@'' if d.getVar('GBMC_DHCP_RELAY') != '1' else 'file://-bmc-gbmcnicdhcp.netdev'} \
  ${@'' if d.getVar('GBMC_DHCP_RELAY') != '1' else 'file://-bmc-gbmcnicdhcp.network'} \
  ${@'' if d.getVar('GBMC_DHCP_RELAY') != '1' else 'file://gbmc-nic-dhcrelay.service.in'} \
  "
S = "${WORKDIR}"

FILES:${PN} += " \
  ${systemd_unitdir}/network \
  ${sysconfdir}/nftables \
  ${systemd_system_unitdir} \
  ${datadir}/gbmc-ip-monitor \
  "

RDEPENDS:${PN}:append = " \
  bash \
  gbmc-ip-monitor \
  gbmc-net-common \
  nftables-systemd \
  "

do_install() {
  netdir=${D}${systemd_unitdir}/network
  install -d -m0755 $netdir
  nftdir=${D}${sysconfdir}/nftables
  install -d -m0755 $nftdir
  unitdir=${D}${systemd_system_unitdir}
  install -d -m0755 $unitdir
  wantdir=$unitdir/multi-user.target.wants
  install -d -m0755 $wantdir

  install -d -m0755 ${D}${libexecdir}
  install -m0755 ${WORKDIR}/gbmc-nic-ra.sh ${D}${libexecdir}/
  install -m0644 ${WORKDIR}/gbmc-nic-ra@.service $unitdir/

  mondir=${D}${datadir}/gbmc-ip-monitor
  install -d -m0755 $mondir
  sed 's,@IFS@,${GBMC_EXT_NICS},g' <${WORKDIR}/gbmc-nic-neigh.sh.in \
    >$mondir/gbmc-nic-neigh.sh

  uppers=
  for intf in ${GBMC_EXT_NICS}; do
    sed "s,@IF@,$intf,g" <${WORKDIR}/50-gbmc-nic.rules.in >$nftdir/50-gbmc-$intf.rules
    sed "s,@IF@,$intf,g" <${WORKDIR}/-bmc-nic.network.in >$netdir/-bmc-$intf.network
    uppers="$uppers -u ff02::1:2%%$intf"
    ln -sv ../gbmc-nic-ra@.service $wantdir/gbmc-nic-ra@$intf.service
  done

  if [ "${GBMC_DHCP_RELAY}" = 1 ]; then
    install -m0644 ${WORKDIR}/-bmc-gbmcbrnicdhcp.network $netdir/
    install -m0644 ${WORKDIR}/-bmc-gbmcbrnicdhcp.netdev $netdir/
    install -m0644 ${WORKDIR}/-bmc-gbmcnicdhcp.network $netdir/
    install -m0644 ${WORKDIR}/-bmc-gbmcnicdhcp.netdev $netdir/
    install -m0644 ${WORKDIR}/50-gbmc-nic.rules $nftdir/

    sed "s,@UPPERS@,$uppers,g" <${WORKDIR}/gbmc-nic-dhcrelay.service.in \
      >$unitdir/gbmc-nic-dhcrelay.service
    ln -sv ../gbmc-nic-dhcrelay.service $wantdir/
  fi
}