summaryrefslogtreecommitdiff
path: root/meta-google
diff options
context:
space:
mode:
Diffstat (limited to 'meta-google')
-rw-r--r--meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-deprecated-ips.sh.in37
1 files changed, 23 insertions, 14 deletions
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-deprecated-ips.sh.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-deprecated-ips.sh.in
index 96037ea450..fdfa87803f 100644
--- a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-deprecated-ips.sh.in
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-deprecated-ips.sh.in
@@ -20,6 +20,25 @@ gbmc_ncsi_br_deprecated_ips_init=
gbmc_ncsi_br_deprecated_ips_confip=
gbmc_ncsi_br_deprecated_ips_lastip=
+gbmc_ncsi_br_deprecated_ips_addr_contents() {
+ local addr="$1"
+
+ # If our address is assigned explicitly, don't mark it deprecated
+ local line
+ for line in $(grep '^Address=' /etc/systemd/network/*-bmc-@NCSI_IF@.network); do
+ # Remove `Address=` on the input line
+ local apfx="$(echo "$line" | sed 's,^[^=]*=,,')"
+ # ip_pfx_concat is used to normalize the address string for comparison
+ [[ "$addr/128" == "$(ip_pfx_concat "$apfx" ::)" ]] && return
+ done
+
+ cat <<EOF
+[Address]
+Address=$addr/128
+PreferredLifetime=0
+EOF
+}
+
gbmc_ncsi_br_deprecated_ips_update() {
[ -n "$gbmc_ncsi_br_deprecated_ips_init" ] || return
[ "$gbmc_ncsi_br_deprecated_ips_confip" != "$gbmc_ncsi_br_deprecated_ips_lastip" ] || return
@@ -44,20 +63,10 @@ gbmc_ncsi_br_deprecated_ips_update() {
pfx_bytes[8]=0
pfx_bytes[9]=0
local host_pfx="$(ip_bytes_to_str pfx_bytes)"
- read -r -d '' contents <<EOF
-[Address]
-Address=$pfx/128
-PreferredLifetime=0
-[Address]
-Address=$stateless_pfx/128
-PreferredLifetime=0
-[Address]
-Address=$stateless_ip/128
-PreferredLifetime=0
-[Address]
-Address=$host_pfx/128
-PreferredLifetime=0
-EOF
+ contents+="$(gbmc_ncsi_br_deprecated_ips_addr_contents "$pfx")"$'\n'
+ contents+="$(gbmc_ncsi_br_deprecated_ips_addr_contents "$stateless_pfx")"$'\n'
+ contents+="$(gbmc_ncsi_br_deprecated_ips_addr_contents "$stateless_ip")"$'\n'
+ contents+="$(gbmc_ncsi_br_deprecated_ips_addr_contents "$host_pfx")"$'\n'
read -r -d '' nfcontents <<EOF
table inet filter {
chain ncsi_input {