From: Donald Sharp Date: Wed, 22 Jul 2015 19:35:36 +0000 (-0700) Subject: watchquagga-mode-3-fix.patch X-Git-Tag: frr-2.0-rc1~1314 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=71e7cd63d4db9bcc5e107d6fc2dba8624b349e9a;p=mirror%2Ffrr.git watchquagga-mode-3-fix.patch Watchquagga: In phased restart with zebra, invoke restart all when zebra dies To correctly handle starting and stopping of individual daemons not affecting watchquagga's monitoring, we resorted to fixing up watchquagga's daemon watch list every time a daemon was started or stopped. This was done by restarting watchquagga itself. This meant the handling of phased restart of individual daemons was broken in watchquagga as it attempted to stop daemons individually before starting them all individually. Fix this by restarting all when this happens. This does make mode 4 indistinguishable from mode 1, but I don't understood the point of mode 4 and we don't think users change watchquagga modes. Signed-off-by: Dinesh G Dutt --- diff --git a/debian/quagga.init.d b/debian/quagga.init.d index b9ad6e6669..dbf71ce885 100755 --- a/debian/quagga.init.d +++ b/debian/quagga.init.d @@ -469,9 +469,9 @@ if [ ! -d $V_PATH ]; then chmod 755 /$V_PATH fi -if [ -n "$3" ]; then +if [ -n "$3" ] && [ "$3" != "all" ]; then dmn="$2"-"$3" -elif [ -n "$2" ]; then +elif [ -n "$2" ] && [ "$2" != "all" ]; then dmn="$2" fi diff --git a/watchquagga/watchquagga.c b/watchquagga/watchquagga.c index ca05361c1c..0b48708b78 100644 --- a/watchquagga/watchquagga.c +++ b/watchquagga/watchquagga.c @@ -912,14 +912,7 @@ try_restart(struct daemon *dmn) break; } } - zlog_info("Phased restart: stopping all routing daemons."); - /* First step: stop all other daemons. */ - for (dmn = gs.daemons; dmn; dmn = dmn->next) - { - if (dmn != gs.special) - run_job(&dmn->restart,"stop",gs.stop_command,1,1); - } - set_phase(PHASE_STOPS_PENDING); + run_job(&gs.restart,"restart",gs.restart_command,0,1); break; default: zlog_err("error: unknown restart mode %d",gs.mode);