summaryrefslogtreecommitdiff
path: root/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
diff options
context:
space:
mode:
authorjmbills <jason.m.bills@intel.com>2022-01-18 21:55:05 +0300
committerGitHub <noreply@github.com>2022-01-18 21:55:05 +0300
commit7cf0c1cd0ce835d1833509b7b911e8a97380278b (patch)
tree0b45c3beaa9874facc4ed1a2395a31e42be0135d /meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
parent4dac5fcd49b5e2de1074f1363775ec0f19041072 (diff)
parent1fc0d70f658da30091bcd49f9bf29aecd6b99ba7 (diff)
downloadopenbmc-7cf0c1cd0ce835d1833509b7b911e8a97380278b.tar.xz
Merge pull request #76 from Intel-BMC/update1-0.86
Update
Diffstat (limited to 'meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh')
-rwxr-xr-xmeta-google/recipes-google/networking/files/gbmc-ip-monitor.sh23
1 files changed, 21 insertions, 2 deletions
diff --git a/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh b/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
index e64c8675e..9da090f47 100755
--- a/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
+++ b/meta-google/recipes-google/networking/files/gbmc-ip-monitor.sh
@@ -44,6 +44,17 @@ gbmc_ip_monitor_generate_init() {
echo '[INIT]'
}
+GBMC_IP_MONITOR_DEFER_OUTSTANDING=
+gbmc_ip_monitor_defer_() {
+ sleep 1
+ printf '[DEFER]\n' >&$GBMC_IP_MONITOR_DEFER
+}
+gbmc_ip_monitor_defer() {
+ [ -z "$GBMC_IP_MONITOR_DEFER_OUTSTANDING" ] || return 0
+ gbmc_ip_monitor_defer_ &
+ GBMC_IP_MONITOR_DEFER_OUTSTANDING=1
+}
+
gbmc_ip_monitor_parse_line() {
local line="$1"
if [[ "$line" == '[INIT]'* ]]; then
@@ -98,11 +109,16 @@ gbmc_ip_monitor_parse_line() {
read line || break
data=($line)
mac="${data[1]}"
+ elif [[ "$line" == '[DEFER]'* ]]; then
+ GBMC_IP_MONITOR_DEFER_OUTSTANDING=
+ change=defer
else
return 2
fi
}
+return 0 2>/dev/null
+
cleanup() {
local st="$?"
trap - HUP INT QUIT ABRT TERM EXIT
@@ -111,7 +127,10 @@ cleanup() {
}
trap cleanup HUP INT QUIT ABRT TERM EXIT
-return 0 2>/dev/null
+FIFODIR="$(mktemp -d)"
+mkfifo "$FIFODIR"/fifo
+exec {GBMC_IP_MONITOR_DEFER}<>"$FIFODIR"/fifo
+rm -rf "$FIFODIR"
while read line; do
gbmc_ip_monitor_parse_line "$line" || continue
@@ -119,4 +138,4 @@ while read line; do
if [ "$change" = 'init' ]; then
systemd-notify --ready
fi
-done < <(gbmc_ip_monitor_generate_init; exec ip monitor link addr route label)
+done < <(gbmc_ip_monitor_generate_init; ip monitor link addr route label & cat <&$GBMC_IP_MONITOR_DEFER)