mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 05:59:16 +00:00
Merge pull request #4491 from opensourcerouting/watchfrr-sd-timeout
tools: retain WATCHDOG_USEC when reloading
This commit is contained in:
commit
7ca67f30e3
@ -71,6 +71,16 @@ reload)
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# systemd doesn't set WATCHDOG_USEC for reload commands.
|
||||
watchfrr_pidfile="$V_PATH/watchfrr.pid"
|
||||
watchfrr_pid="`cat \"$watchfrr_pidfile\"`"
|
||||
if [ -d "/proc/$watchfrr_pid" ]; then
|
||||
wdt="`tr '\0' '\n' < /proc/$watchfrr_pid/environ | grep '^WATCHDOG_USEC='`"
|
||||
wdt="${wdt#WATCHDOG_USEC=}"
|
||||
[ -n "$wdt" ] && : ${WATCHDOG_USEC:=$wdt}
|
||||
[ -n "$WATCHDOG_USEC" ] && export WATCHDOG_USEC
|
||||
fi
|
||||
|
||||
# restart watchfrr to pick up added daemons.
|
||||
# NB: This will NOT cause the other daemons to be restarted.
|
||||
daemon_list daemons
|
||||
@ -78,6 +88,21 @@ reload)
|
||||
daemon_stop watchfrr && \
|
||||
daemon_start watchfrr
|
||||
|
||||
# make systemd not kill watchfrr after ExecReload completes
|
||||
# 3 goats were sacrificed to restore sanity after coding this
|
||||
watchfrr_pid="`cat \"$watchfrr_pidfile\"`"
|
||||
if [ -f "/proc/$watchfrr_pid/cgroup" -a -d "/sys/fs/cgroup/systemd" ]; then
|
||||
cg="`egrep '^[0-9]+:name=systemd:' \"/proc/$watchfrr_pid/cgroup\"`"
|
||||
cg="${cg#*:*:}"
|
||||
|
||||
cgmain="$cg"
|
||||
cgmain="${cgmain%/.control}"
|
||||
cgmain="${cgmain%/control}"
|
||||
|
||||
[ -n "$cg" -a "$cg" != "$cgmain" ] && \
|
||||
echo "$watchfrr_pid" > "/sys/fs/cgroup/systemd/$cgmain/tasks"
|
||||
fi
|
||||
|
||||
NEW_CONFIG_FILE="${2:-$C_PATH/frr.conf}"
|
||||
[ ! -r $NEW_CONFIG_FILE ] && log_failure_msg "Unable to read new configuration file $NEW_CONFIG_FILE" && exit 1
|
||||
"$RELOAD_SCRIPT" --reload "$NEW_CONFIG_FILE"
|
||||
|
Loading…
Reference in New Issue
Block a user