summaryrefslogtreecommitdiff
path: root/meta-google
diff options
context:
space:
mode:
authorWilliam A. Kennington III <wak@google.com>2022-05-20 23:30:21 +0300
committerNan Zhou <nanzhoumails@gmail.com>2022-05-27 02:03:35 +0300
commit3b127c47a4b596c1181169e954b693b8369ed424 (patch)
tree9ec048eb1fd058b90a6b70a592fc49a80c49d469 /meta-google
parent06ff30465ea0d4234c3bd46952723d2c6e2c5510 (diff)
downloadopenbmc-3b127c47a4b596c1181169e954b693b8369ed424.tar.xz
meta-google: gbmc-bridge: Prefer using stateful source
The stateless addr has some routing issues outside of the machine under some ToR configs. Use the stateful address as a preference to avoid these issues. Change-Id: I6a30678fd95b5096ee6b3b8add1d1dd409f0db5f Signed-off-by: William A. Kennington III <wak@google.com>
Diffstat (limited to 'meta-google')
-rw-r--r--meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh12
1 files changed, 10 insertions, 2 deletions
diff --git a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh
index 4bd3828213..6085240ccf 100644
--- a/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh
+++ b/meta-google/recipes-google/networking/gbmc-bridge/gbmc-br-gw-src.sh
@@ -16,7 +16,8 @@
source /usr/share/network/lib.sh || exit
-gbmc_br_gw_src_ip=
+gbmc_br_gw_src_ip_stateful=
+gbmc_br_gw_src_ip_stateless=
declare -A gbmc_br_gw_src_routes=()
gbmc_br_gw_defgw=
@@ -49,6 +50,7 @@ gbmc_br_set_router() {
}
gbmc_br_gw_src_update() {
+ local gbmc_br_gw_src_ip="${gbmc_br_gw_src_ip_stateful:-$gbmc_br_gw_src_ip_stateless}"
[ -n "$gbmc_br_gw_src_ip" ] || return
local route
@@ -87,9 +89,15 @@ gbmc_br_gw_src_hook() {
echo "gBMC Bridge Ensure RA Invalid IP: $ip" >&2
return 1
fi
- if (( ip_bytes[8] != 0xfd || ip_bytes[9] != 0 )); then
+ # Ignore ULAs and non-gBMC addresses
+ if (( ip_bytes[0] & 0xfe == 0xfc || ip_bytes[8] != 0xfd )); then
return 0
fi
+ if (( ip_bytes[9] != 0 )); then
+ local -n gbmc_br_gw_src_ip=gbmc_br_gw_src_ip_stateful
+ else
+ local -n gbmc_br_gw_src_ip=gbmc_br_gw_src_ip_stateless
+ fi
if [ "$action" = 'add' -a "$ip" != "$gbmc_br_gw_src_ip" ]; then
gbmc_br_gw_src_ip="$ip"
gbmc_br_gw_src_update