diff options
author | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:03:14 +0200 |
---|---|---|
committer | whitespace / reindent <invalid@invalid.invalid> | 2017-07-17 14:04:07 +0200 |
commit | d62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch) | |
tree | 3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /watchfrr | |
parent | *: add indent control files (diff) | |
download | frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip |
*: reindentreindent-master-after
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'`
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'watchfrr')
-rw-r--r-- | watchfrr/watchfrr.c | 496 | ||||
-rw-r--r-- | watchfrr/watchfrr.h | 2 | ||||
-rw-r--r-- | watchfrr/watchfrr_vty.c | 22 |
3 files changed, 266 insertions, 254 deletions
diff --git a/watchfrr/watchfrr.c b/watchfrr/watchfrr.c index 53d58668d..1aa25b41d 100644 --- a/watchfrr/watchfrr.c +++ b/watchfrr/watchfrr.c @@ -129,18 +129,22 @@ static struct global_state { struct restart_info restart; int unresponsive_restart; int loglevel; - struct daemon *special; /* points to zebra when doing phased restart */ + struct daemon *special; /* points to zebra when doing phased restart */ int numdaemons; int numpids; - int numdown; /* # of daemons that are not UP or UNRESPONSIVE */ + int numdown; /* # of daemons that are not UP or UNRESPONSIVE */ } gs = { -.mode = MODE_MONITOR,.phase = PHASE_NONE,.vtydir = VTYDIR,.period = - 1000 * DEFAULT_PERIOD,.timeout = - DEFAULT_TIMEOUT,.restart_timeout = - DEFAULT_RESTART_TIMEOUT,.loglevel = - DEFAULT_LOGLEVEL,.min_restart_interval = - DEFAULT_MIN_RESTART,.max_restart_interval = - DEFAULT_MAX_RESTART,.do_ping = 1,}; + .mode = MODE_MONITOR, + .phase = PHASE_NONE, + .vtydir = VTYDIR, + .period = 1000 * DEFAULT_PERIOD, + .timeout = DEFAULT_TIMEOUT, + .restart_timeout = DEFAULT_RESTART_TIMEOUT, + .loglevel = DEFAULT_LOGLEVEL, + .min_restart_interval = DEFAULT_MIN_RESTART, + .max_restart_interval = DEFAULT_MAX_RESTART, + .do_ping = 1, +}; typedef enum { DAEMON_INIT, @@ -150,15 +154,11 @@ typedef enum { DAEMON_UNRESPONSIVE } daemon_state_t; -#define IS_UP(DMN) \ - (((DMN)->state == DAEMON_UP) || ((DMN)->state == DAEMON_UNRESPONSIVE)) +#define IS_UP(DMN) \ + (((DMN)->state == DAEMON_UP) || ((DMN)->state == DAEMON_UNRESPONSIVE)) static const char *state_str[] = { - "Init", - "Down", - "Connecting", - "Up", - "Unresponsive", + "Init", "Down", "Connecting", "Up", "Unresponsive", }; struct daemon { @@ -192,14 +192,13 @@ static const struct option longopts[] = { {"all-restart", no_argument, NULL, 'a'}, {"always-all-restart", no_argument, NULL, 'A'}, {"unresponsive-restart", no_argument, NULL, 'z'}, - {"min-restart-interval", required_argument, NULL, OPTION_MINRESTART }, - {"max-restart-interval", required_argument, NULL, OPTION_MAXRESTART }, + {"min-restart-interval", required_argument, NULL, OPTION_MINRESTART}, + {"max-restart-interval", required_argument, NULL, OPTION_MAXRESTART}, {"pid-file", required_argument, NULL, 'p'}, {"blank-string", required_argument, NULL, 'b'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'v'}, - {NULL, 0, NULL, 0} -}; + {NULL, 0, NULL, 0}}; static int try_connect(struct daemon *dmn); static int wakeup_send_echo(struct thread *t_wakeup); @@ -209,7 +208,8 @@ static void phase_check(void); static const char *progname; static void printhelp(FILE *target) { - fprintf(target, "Usage : %s [OPTION...] <daemon name> ...\n\n\ + fprintf(target, + "Usage : %s [OPTION...] <daemon name> ...\n\n\ Watchdog program to monitor status of frr daemons and try to restart\n\ them if they are down or unresponsive. It determines whether a daemon is\n\ up based on whether it can connect to the daemon's vty unix stream socket.\n\ @@ -253,9 +253,13 @@ the -m and -M options allow you to control the minimum delay between\n\ restart commands. The minimum restart delay is recalculated each time\n\ a restart is attempted: if the time since the last restart attempt exceeds\n\ twice the -M value, then the restart delay is set to the -m value.\n\ -Otherwise, the interval is doubled (but capped at the -M value).\n\n", progname, mode_str[0], progname, mode_str[1], progname, mode_str[2], progname, mode_str[3], progname, mode_str[4], progname, mode_str[2], mode_str[3]); +Otherwise, the interval is doubled (but capped at the -M value).\n\n", + progname, mode_str[0], progname, mode_str[1], progname, + mode_str[2], progname, mode_str[3], progname, mode_str[4], + progname, mode_str[2], mode_str[3]); - fprintf(target, "Options:\n\ + fprintf(target, + "Options:\n\ -d, --daemon Run in daemon mode. In this mode, error messages are sent\n\ to syslog instead of stdout.\n\ -S, --statedir Set the vty socket directory (default is %s)\n\ @@ -313,7 +317,10 @@ Otherwise, the interval is doubled (but capped at the -M value).\n\n", progname, it with a space. This is an ugly hack to circumvent problems\n\ passing command-line arguments with embedded spaces.\n\ -v, --version Print program version\n\ --h, --help Display this help and exit\n", VTYDIR, DEFAULT_LOGLEVEL, LOG_EMERG, LOG_DEBUG, LOG_DEBUG, DEFAULT_MIN_RESTART, DEFAULT_MAX_RESTART, DEFAULT_PERIOD, DEFAULT_TIMEOUT, DEFAULT_RESTART_TIMEOUT, DEFAULT_PIDFILE); +-h, --help Display this help and exit\n", + VTYDIR, DEFAULT_LOGLEVEL, LOG_EMERG, LOG_DEBUG, LOG_DEBUG, + DEFAULT_MIN_RESTART, DEFAULT_MAX_RESTART, DEFAULT_PERIOD, + DEFAULT_TIMEOUT, DEFAULT_RESTART_TIMEOUT, DEFAULT_PIDFILE); } static pid_t run_background(char *shell_cmd) @@ -322,22 +329,23 @@ static pid_t run_background(char *shell_cmd) switch (child = fork()) { case -1: - zlog_err("fork failed, cannot run command [%s]: %s", - shell_cmd, safe_strerror(errno)); + zlog_err("fork failed, cannot run command [%s]: %s", shell_cmd, + safe_strerror(errno)); return -1; case 0: /* Child process. */ - /* Use separate process group so child processes can be killed easily. */ + /* Use separate process group so child processes can be killed + * easily. */ if (setpgid(0, 0) < 0) zlog_warn("warning: setpgid(0,0) failed: %s", safe_strerror(errno)); { char shell[] = "sh"; char dashc[] = "-c"; - char *const argv[4] = { shell, dashc, shell_cmd, NULL }; + char *const argv[4] = {shell, dashc, shell_cmd, NULL}; execv("/bin/sh", argv); - zlog_err("execv(/bin/sh -c '%s') failed: %s", - shell_cmd, safe_strerror(errno)); + zlog_err("execv(/bin/sh -c '%s') failed: %s", shell_cmd, + safe_strerror(errno)); _exit(127); } default: @@ -367,10 +375,11 @@ static int restart_kill(struct thread *t_kill) struct timeval delay; time_elapsed(&delay, &restart->time); - zlog_warn("Warning: %s %s child process %d still running after " - "%ld seconds, sending signal %d", - restart->what, restart->name, (int)restart->pid, - (long)delay.tv_sec, (restart->kills ? SIGKILL : SIGTERM)); + zlog_warn( + "Warning: %s %s child process %d still running after " + "%ld seconds, sending signal %d", + restart->what, restart->name, (int)restart->pid, + (long)delay.tv_sec, (restart->kills ? SIGKILL : SIGTERM)); kill(-restart->pid, (restart->kills ? SIGKILL : SIGTERM)); restart->kills++; restart->t_kill = NULL; @@ -423,26 +432,27 @@ static void sigchild(void) gs.numpids--; thread_cancel(restart->t_kill); restart->t_kill = NULL; - /* Update restart time to reflect the time the command completed. */ + /* Update restart time to reflect the time the command + * completed. */ gettimeofday(&restart->time, NULL); } else { - zlog_err - ("waitpid returned status for an unknown child process %d", - (int)child); + zlog_err( + "waitpid returned status for an unknown child process %d", + (int)child); name = "(unknown)"; what = "background"; } if (WIFSTOPPED(status)) - zlog_warn("warning: %s %s process %d is stopped", - what, name, (int)child); + zlog_warn("warning: %s %s process %d is stopped", what, name, + (int)child); else if (WIFSIGNALED(status)) - zlog_warn("%s %s process %d terminated due to signal %d", - what, name, (int)child, WTERMSIG(status)); + zlog_warn("%s %s process %d terminated due to signal %d", what, + name, (int)child, WTERMSIG(status)); else if (WIFEXITED(status)) { if (WEXITSTATUS(status) != 0) - zlog_warn - ("%s %s process %d exited with non-zero status %d", - what, name, (int)child, WEXITSTATUS(status)); + zlog_warn( + "%s %s process %d exited with non-zero status %d", + what, name, (int)child, WEXITSTATUS(status)); else zlog_debug("%s %s process %d exited normally", what, name, (int)child); @@ -452,9 +462,8 @@ static void sigchild(void) phase_check(); } -static int -run_job(struct restart_info *restart, const char *cmdtype, const char *command, - int force, int update_interval) +static int run_job(struct restart_info *restart, const char *cmdtype, + const char *command, int force, int update_interval) { struct timeval delay; @@ -463,22 +472,24 @@ run_job(struct restart_info *restart, const char *cmdtype, const char *command, if (restart->pid) { if (gs.loglevel > LOG_DEBUG + 1) - zlog_debug - ("cannot %s %s, previous pid %d still running", - cmdtype, restart->name, (int)restart->pid); + zlog_debug( + "cannot %s %s, previous pid %d still running", + cmdtype, restart->name, (int)restart->pid); return -1; } - /* Note: time_elapsed test must come before the force test, since we need + /* Note: time_elapsed test must come before the force test, since we + need to make sure that delay is initialized for use below in updating the restart interval. */ if ((time_elapsed(&delay, &restart->time)->tv_sec < restart->interval) && !force) { if (gs.loglevel > LOG_DEBUG + 1) - zlog_debug("postponing %s %s: " - "elapsed time %ld < retry interval %ld", - cmdtype, restart->name, (long)delay.tv_sec, - restart->interval); + zlog_debug( + "postponing %s %s: " + "elapsed time %ld < retry interval %ld", + cmdtype, restart->name, (long)delay.tv_sec, + restart->interval); return -1; } @@ -489,8 +500,8 @@ run_job(struct restart_info *restart, const char *cmdtype, const char *command, snprintf(cmd, sizeof(cmd), command, restart->name); if ((restart->pid = run_background(cmd)) > 0) { restart->t_kill = NULL; - thread_add_timer(master, restart_kill, restart, gs.restart_timeout, - &restart->t_kill); + thread_add_timer(master, restart_kill, restart, + gs.restart_timeout, &restart->t_kill); restart->what = cmdtype; gs.numpids++; } else @@ -510,32 +521,33 @@ run_job(struct restart_info *restart, const char *cmdtype, const char *command, return restart->pid; } -#define SET_READ_HANDLER(DMN) \ - do { \ - (DMN)->t_read = NULL; \ - thread_add_read (master, handle_read, (DMN), (DMN)->fd, &(DMN)->t_read); \ - } while (0); - -#define SET_WAKEUP_DOWN(DMN) \ - do { \ - (DMN)->t_wakeup = NULL; \ - thread_add_timer_msec (master, wakeup_down, (DMN), FUZZY(gs.period), \ - &(DMN)->t_wakeup); \ - } while (0); - -#define SET_WAKEUP_UNRESPONSIVE(DMN) \ - do { \ - (DMN)->t_wakeup = NULL; \ - thread_add_timer_msec (master, wakeup_unresponsive, (DMN), \ - FUZZY(gs.period), &(DMN)->t_wakeup); \ - } while (0); - -#define SET_WAKEUP_ECHO(DMN) \ - do { \ - (DMN)->t_wakeup = NULL; \ - thread_add_timer_msec (master, wakeup_send_echo, (DMN), \ - FUZZY(gs.period), &(DMN)->t_wakeup); \ - } while (0); +#define SET_READ_HANDLER(DMN) \ + do { \ + (DMN)->t_read = NULL; \ + thread_add_read(master, handle_read, (DMN), (DMN)->fd, \ + &(DMN)->t_read); \ + } while (0); + +#define SET_WAKEUP_DOWN(DMN) \ + do { \ + (DMN)->t_wakeup = NULL; \ + thread_add_timer_msec(master, wakeup_down, (DMN), \ + FUZZY(gs.period), &(DMN)->t_wakeup); \ + } while (0); + +#define SET_WAKEUP_UNRESPONSIVE(DMN) \ + do { \ + (DMN)->t_wakeup = NULL; \ + thread_add_timer_msec(master, wakeup_unresponsive, (DMN), \ + FUZZY(gs.period), &(DMN)->t_wakeup); \ + } while (0); + +#define SET_WAKEUP_ECHO(DMN) \ + do { \ + (DMN)->t_wakeup = NULL; \ + thread_add_timer_msec(master, wakeup_send_echo, (DMN), \ + FUZZY(gs.period), &(DMN)->t_wakeup); \ + } while (0); static int wakeup_down(struct thread *t_wakeup) { @@ -626,8 +638,8 @@ static int handle_read(struct thread *t_read) char why[100 + sizeof(buf)]; snprintf(why, sizeof(why), "read returned bad echo response of %d bytes " - "(expecting %u): %.*s", (int)rc, (u_int) sizeof(resp), - (int)rc, buf); + "(expecting %u): %.*s", + (int)rc, (u_int)sizeof(resp), (int)rc, buf); daemon_down(dmn, why); return 0; } @@ -637,15 +649,17 @@ static int handle_read(struct thread *t_read) if (dmn->state == DAEMON_UNRESPONSIVE) { if (delay.tv_sec < gs.timeout) { dmn->state = DAEMON_UP; - zlog_warn - ("%s state -> up : echo response received after %ld.%06ld " - "seconds", dmn->name, (long)delay.tv_sec, - (long)delay.tv_usec); + zlog_warn( + "%s state -> up : echo response received after %ld.%06ld " + "seconds", + dmn->name, (long)delay.tv_sec, + (long)delay.tv_usec); } else - zlog_warn - ("%s: slow echo response finally received after %ld.%06ld " - "seconds", dmn->name, (long)delay.tv_sec, - (long)delay.tv_usec); + zlog_warn( + "%s: slow echo response finally received after %ld.%06ld " + "seconds", + dmn->name, (long)delay.tv_sec, + (long)delay.tv_usec); } else if (gs.loglevel > LOG_DEBUG + 1) zlog_debug("%s: echo response received after %ld.%06ld seconds", dmn->name, (long)delay.tv_sec, (long)delay.tv_usec); @@ -670,8 +684,8 @@ static void daemon_send_ready(void) fp = fopen(DAEMON_VTY_DIR "/watchfrr.started", "w"); fclose(fp); - zlog_notice - ("Watchfrr: Notifying Systemd we are up and running"); + zlog_notice( + "Watchfrr: Notifying Systemd we are up and running"); systemd_send_started(master, 0); sent = 1; } @@ -706,9 +720,10 @@ static int check_connect(struct thread *t_write) } if ((reslen == sizeof(sockerr)) && sockerr) { char why[100]; - snprintf(why, sizeof(why), - "getsockopt reports that connection attempt failed: %s", - safe_strerror(sockerr)); + snprintf( + why, sizeof(why), + "getsockopt reports that connection attempt failed: %s", + safe_strerror(sockerr)); daemon_down(dmn, why); return 0; } @@ -742,13 +757,13 @@ static int try_connect(struct daemon *dmn) memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; - snprintf(addr.sun_path, sizeof(addr.sun_path), "%s/%s.vty", - gs.vtydir, dmn->name); + snprintf(addr.sun_path, sizeof(addr.sun_path), "%s/%s.vty", gs.vtydir, + dmn->name); #ifdef HAVE_STRUCT_SOCKADDR_UN_SUN_LEN len = addr.sun_len = SUN_LEN(&addr); #else len = sizeof(addr.sun_family) + strlen(addr.sun_path); -#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ +#endif /* HAVE_STRUCT_SOCKADDR_UN_SUN_LEN */ /* Quick check to see if we might succeed before we go to the trouble of creating a socket. */ @@ -761,14 +776,14 @@ static int try_connect(struct daemon *dmn) } if ((sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { - zlog_err("%s(%s): cannot make socket: %s", - __func__, addr.sun_path, safe_strerror(errno)); + zlog_err("%s(%s): cannot make socket: %s", __func__, + addr.sun_path, safe_strerror(errno)); return -1; } if (set_nonblocking(sock) < 0 || set_cloexec(sock) < 0) { - zlog_err("%s(%s): set_nonblocking/cloexec(%d) failed", - __func__, addr.sun_path, sock); + zlog_err("%s(%s): set_nonblocking/cloexec(%d) failed", __func__, + addr.sun_path, sock); close(sock); return -1; } @@ -788,9 +803,10 @@ static int try_connect(struct daemon *dmn) dmn->fd = sock; dmn->t_write = NULL; thread_add_write(master, check_connect, dmn, dmn->fd, - &dmn->t_write);dmn->t_wakeup = NULL; - thread_add_timer(master, wakeup_connect_hanging, dmn, gs.timeout, - &dmn->t_wakeup); + &dmn->t_write); + dmn->t_wakeup = NULL; + thread_add_timer(master, wakeup_connect_hanging, dmn, + gs.timeout, &dmn->t_wakeup); SET_READ_HANDLER(dmn); return 0; } @@ -828,11 +844,11 @@ static void phase_check(void) case PHASE_STOPS_PENDING: if (gs.numpids) break; - zlog_info - ("Phased restart: all routing daemon stop jobs have completed."); + zlog_info( + "Phased restart: all routing daemon stop jobs have completed."); set_phase(PHASE_WAITING_DOWN); - /*FALLTHRU*/ + /*FALLTHRU*/ case PHASE_WAITING_DOWN: if (gs.numdown + IS_UP(gs.special) < gs.numdaemons) break; @@ -841,7 +857,7 @@ static void phase_check(void) 1); set_phase(PHASE_ZEBRA_RESTART_PENDING); - /*FALLTHRU*/ + /*FALLTHRU*/ case PHASE_ZEBRA_RESTART_PENDING: if (gs.special->restart.pid) break; @@ -849,7 +865,7 @@ static void phase_check(void) gs.special->name); set_phase(PHASE_WAITING_ZEBRA_UP); - /*FALLTHRU*/ + /*FALLTHRU*/ case PHASE_WAITING_ZEBRA_UP: if (!IS_UP(gs.special)) break; @@ -887,35 +903,36 @@ static void try_restart(struct daemon *dmn) run_job(&dmn->restart, "restart", gs.restart_command, 0, 1); else - zlog_debug - ("%s: postponing restart attempt because master %s daemon " - "not up [%s], or phased restart in progress", - dmn->name, gs.special->name, - state_str[gs.special->state]); + zlog_debug( + "%s: postponing restart attempt because master %s daemon " + "not up [%s], or phased restart in progress", + dmn->name, gs.special->name, + state_str[gs.special->state]); break; } - /*FALLTHRU*/ + /*FALLTHRU*/ case MODE_PHASED_ALL_RESTART: if ((gs.phase != PHASE_NONE) || gs.numpids) { if (gs.loglevel > LOG_DEBUG + 1) - zlog_debug - ("postponing phased global restart: restart already in " - "progress [%s], or outstanding child processes [%d]", - phase_str[gs.phase], gs.numpids); + zlog_debug( + "postponing phased global restart: restart already in " + "progress [%s], or outstanding child processes [%d]", + phase_str[gs.phase], gs.numpids); break; } /* Is it too soon for a restart? */ { struct timeval delay; - if (time_elapsed(&delay, &gs.special->restart.time)-> - tv_sec < gs.special->restart.interval) { + if (time_elapsed(&delay, &gs.special->restart.time) + ->tv_sec + < gs.special->restart.interval) { if (gs.loglevel > LOG_DEBUG + 1) - zlog_debug - ("postponing phased global restart: " - "elapsed time %ld < retry interval %ld", - (long)delay.tv_sec, - gs.special->restart.interval); + zlog_debug( + "postponing phased global restart: " + "elapsed time %ld < retry interval %ld", + (long)delay.tv_sec, + gs.special->restart.interval); break; } } @@ -933,9 +950,10 @@ static int wakeup_unresponsive(struct thread *t_wakeup) dmn->t_wakeup = NULL; if (dmn->state != DAEMON_UNRESPONSIVE) - zlog_err("%s: no longer unresponsive (now %s), " - "wakeup should have been cancelled!", - dmn->name, state_str[dmn->state]); + zlog_err( + "%s: no longer unresponsive (now %s), " + "wakeup should have been cancelled!", + dmn->name, state_str[dmn->state]); else { SET_WAKEUP_UNRESPONSIVE(dmn); try_restart(dmn); @@ -949,8 +967,10 @@ static int wakeup_no_answer(struct thread *t_wakeup) dmn->t_wakeup = NULL; dmn->state = DAEMON_UNRESPONSIVE; - zlog_err("%s state -> unresponsive : no response yet to ping " - "sent %ld seconds ago", dmn->name, gs.timeout); + zlog_err( + "%s state -> unresponsive : no response yet to ping " + "sent %ld seconds ago", + dmn->name, gs.timeout); if (gs.unresponsive_restart) { SET_WAKEUP_UNRESPONSIVE(dmn); try_restart(dmn); @@ -965,12 +985,12 @@ static int wakeup_send_echo(struct thread *t_wakeup) struct daemon *dmn = THREAD_ARG(t_wakeup); dmn->t_wakeup = NULL; - if (((rc = write(dmn->fd, echocmd, sizeof(echocmd))) < 0) || - ((size_t) rc != sizeof(echocmd))) { + if (((rc = write(dmn->fd, echocmd, sizeof(echocmd))) < 0) + || ((size_t)rc != sizeof(echocmd))) { char why[100 + sizeof(echocmd)]; snprintf(why, sizeof(why), "write '%s' returned %d instead of %u", echocmd, - (int)rc, (u_int) sizeof(echocmd)); + (int)rc, (u_int)sizeof(echocmd)); daemon_down(dmn, why); } else { gettimeofday(&dmn->echo_sent, NULL); @@ -993,7 +1013,7 @@ static int valid_command(const char *cmd) char *p; return ((p = strchr(cmd, '%')) != NULL) && (*(p + 1) == 's') - && !strchr(p + 1, '%'); + && !strchr(p + 1, '%'); } /* This is an ugly hack to circumvent problems with passing command-line @@ -1038,17 +1058,16 @@ static struct quagga_signal_t watchfrr_signals[] = { }; FRR_DAEMON_INFO(watchfrr, WATCHFRR, - .flags = FRR_NO_PRIVSEP | FRR_NO_TCPVTY | FRR_LIMITED_CLI - | FRR_NO_CFG_PID_DRY | FRR_NO_ZCLIENT, + .flags = FRR_NO_PRIVSEP | FRR_NO_TCPVTY | FRR_LIMITED_CLI + | FRR_NO_CFG_PID_DRY | FRR_NO_ZCLIENT, - .printhelp = printhelp, - .copyright = "Copyright 2004 Andrew J. Schorr", + .printhelp = printhelp, + .copyright = "Copyright 2004 Andrew J. Schorr", - .signals = watchfrr_signals, - .n_signals = array_size(watchfrr_signals), + .signals = watchfrr_signals, + .n_signals = array_size(watchfrr_signals), - .privs = &watchfrr_privs, -) + .privs = &watchfrr_privs, ) int main(int argc, char **argv) { @@ -1100,68 +1119,59 @@ int main(int argc, char **argv) } gs.stop_command = optarg; break; - case 'l': - { - char garbage[3]; - if ((sscanf - (optarg, "%d%1s", &gs.loglevel, - garbage) != 1) - || (gs.loglevel < LOG_EMERG)) { - fprintf(stderr, - "Invalid loglevel argument: %s\n", - optarg); - frr_help_exit(1); - } + case 'l': { + char garbage[3]; + if ((sscanf(optarg, "%d%1s", &gs.loglevel, garbage) + != 1) + || (gs.loglevel < LOG_EMERG)) { + fprintf(stderr, + "Invalid loglevel argument: %s\n", + optarg); + frr_help_exit(1); } - break; - case OPTION_MINRESTART: - { - char garbage[3]; - if ((sscanf(optarg, "%ld%1s", - &gs.min_restart_interval, - garbage) != 1) - || (gs.min_restart_interval < 0)) { - fprintf(stderr, - "Invalid min_restart_interval argument: %s\n", - optarg); - frr_help_exit(1); - } + } break; + case OPTION_MINRESTART: { + char garbage[3]; + if ((sscanf(optarg, "%ld%1s", &gs.min_restart_interval, + garbage) + != 1) + || (gs.min_restart_interval < 0)) { + fprintf(stderr, + "Invalid min_restart_interval argument: %s\n", + optarg); + frr_help_exit(1); } - break; - case OPTION_MAXRESTART: - { - char garbage[3]; - if ((sscanf(optarg, "%ld%1s", - &gs.max_restart_interval, - garbage) != 1) - || (gs.max_restart_interval < 0)) { - fprintf(stderr, - "Invalid max_restart_interval argument: %s\n", - optarg); - frr_help_exit(1); - } + } break; + case OPTION_MAXRESTART: { + char garbage[3]; + if ((sscanf(optarg, "%ld%1s", &gs.max_restart_interval, + garbage) + != 1) + || (gs.max_restart_interval < 0)) { + fprintf(stderr, + "Invalid max_restart_interval argument: %s\n", + optarg); + frr_help_exit(1); } - break; - case 'i': - { - char garbage[3]; - int period; - if ((sscanf(optarg, "%d%1s", &period, garbage) - != 1) || (gs.period < 1)) { - fprintf(stderr, - "Invalid interval argument: %s\n", - optarg); - frr_help_exit(1); - } - gs.period = 1000 * period; + } break; + case 'i': { + char garbage[3]; + int period; + if ((sscanf(optarg, "%d%1s", &period, garbage) != 1) + || (gs.period < 1)) { + fprintf(stderr, + "Invalid interval argument: %s\n", + optarg); + frr_help_exit(1); } - break; + gs.period = 1000 * period; + } break; case 'p': pidfile = optarg; break; case 'r': - if ((gs.mode == MODE_GLOBAL_RESTART) || - (gs.mode == MODE_SEPARATE_RESTART)) { + if ((gs.mode == MODE_GLOBAL_RESTART) + || (gs.mode == MODE_SEPARATE_RESTART)) { fputs("Ambiguous operating mode selected.\n", stderr); frr_help_exit(1); @@ -1203,33 +1213,29 @@ int main(int argc, char **argv) case 'S': gs.vtydir = optarg; break; - case 't': - { - char garbage[3]; - if ((sscanf - (optarg, "%ld%1s", &gs.timeout, - garbage) != 1) || (gs.timeout < 1)) { - fprintf(stderr, - "Invalid timeout argument: %s\n", - optarg); - frr_help_exit(1); - } + case 't': { + char garbage[3]; + if ((sscanf(optarg, "%ld%1s", &gs.timeout, garbage) + != 1) + || (gs.timeout < 1)) { + fprintf(stderr, + "Invalid timeout argument: %s\n", + optarg); + frr_help_exit(1); } - break; - case 'T': - { - char garbage[3]; - if ((sscanf - (optarg, "%ld%1s", &gs.restart_timeout, - garbage) != 1) - || (gs.restart_timeout < 1)) { - fprintf(stderr, - "Invalid restart timeout argument: %s\n", - optarg); - frr_help_exit(1); - } + } break; + case 'T': { + char garbage[3]; + if ((sscanf(optarg, "%ld%1s", &gs.restart_timeout, + garbage) + != 1) + || (gs.restart_timeout < 1)) { + fprintf(stderr, + "Invalid restart timeout argument: %s\n", + optarg); + frr_help_exit(1); } - break; + } break; case 'z': gs.unresponsive_restart = 1; break; @@ -1255,7 +1261,8 @@ int main(int argc, char **argv) break; case MODE_GLOBAL_RESTART: case MODE_SEPARATE_RESTART: - if (!gs.restart_command || gs.start_command || gs.stop_command) { + if (!gs.restart_command || gs.start_command + || gs.stop_command) { fprintf(stderr, "No start/kill commands needed in [%s] mode.\n", mode_str[gs.mode]); @@ -1277,13 +1284,13 @@ int main(int argc, char **argv) if (blankstr) { if (gs.restart_command) gs.restart_command = - translate_blanks(gs.restart_command, blankstr); + translate_blanks(gs.restart_command, blankstr); if (gs.start_command) gs.start_command = - translate_blanks(gs.start_command, blankstr); + translate_blanks(gs.start_command, blankstr); if (gs.stop_command) gs.stop_command = - translate_blanks(gs.stop_command, blankstr); + translate_blanks(gs.stop_command, blankstr); } gs.restart.interval = gs.min_restart_interval; @@ -1293,10 +1300,10 @@ int main(int argc, char **argv) zlog_set_level(ZLOG_DEST_MONITOR, ZLOG_DISABLED); if (watchfrr_di.daemon_mode) { zlog_set_level(ZLOG_DEST_SYSLOG, MIN(gs.loglevel, LOG_DEBUG)); - if (daemon (0, 0) < 0) { + if (daemon(0, 0) < 0) { fprintf(stderr, "Watchfrr daemon failed: %s", - strerror(errno)); - exit (1); + strerror(errno)); + exit(1); } } else zlog_set_level(ZLOG_DEST_STDOUT, MIN(gs.loglevel, LOG_DEBUG)); @@ -1314,7 +1321,7 @@ int main(int argc, char **argv) if (!(dmn = (struct daemon *)calloc(1, sizeof(*dmn)))) { fprintf(stderr, "calloc(1,%u) failed: %s\n", - (u_int) sizeof(*dmn), + (u_int)sizeof(*dmn), safe_strerror(errno)); return 1; } @@ -1324,7 +1331,8 @@ int main(int argc, char **argv) gs.numdown++; dmn->fd = -1; dmn->t_wakeup = NULL; - thread_add_timer_msec(master, wakeup_init, dmn, 100 + (random() % 900), + thread_add_timer_msec(master, wakeup_init, dmn, + 100 + (random() % 900), &dmn->t_wakeup); dmn->restart.interval = gs.min_restart_interval; if (tail) @@ -1333,9 +1341,9 @@ int main(int argc, char **argv) gs.daemons = dmn; tail = dmn; - if (((gs.mode == MODE_PHASED_ZEBRA_RESTART) || - (gs.mode == MODE_PHASED_ALL_RESTART)) && - !strcmp(dmn->name, special)) + if (((gs.mode == MODE_PHASED_ZEBRA_RESTART) + || (gs.mode == MODE_PHASED_ALL_RESTART)) + && !strcmp(dmn->name, special)) gs.special = dmn; } } @@ -1343,8 +1351,9 @@ int main(int argc, char **argv) fputs("Must specify one or more daemons to monitor.\n", stderr); frr_help_exit(1); } - if (((gs.mode == MODE_PHASED_ZEBRA_RESTART) || - (gs.mode == MODE_PHASED_ALL_RESTART)) && !gs.special) { + if (((gs.mode == MODE_PHASED_ZEBRA_RESTART) + || (gs.mode == MODE_PHASED_ALL_RESTART)) + && !gs.special) { fprintf(stderr, "In mode [%s], but cannot find master daemon %s\n", mode_str[gs.mode], special); @@ -1372,9 +1381,8 @@ int main(int argc, char **argv) strcpy(p, dmn->name); p += strlen(p); } - zlog_notice("%s %s watching [%s], mode [%s]", - progname, FRR_VERSION, buf, - mode_str[gs.mode]); + zlog_notice("%s %s watching [%s], mode [%s]", progname, + FRR_VERSION, buf, mode_str[gs.mode]); } } diff --git a/watchfrr/watchfrr.h b/watchfrr/watchfrr.h index e7aba643d..53b92bd83 100644 --- a/watchfrr/watchfrr.h +++ b/watchfrr/watchfrr.h @@ -26,4 +26,4 @@ extern void watchfrr_vty_init(void); extern pid_t integrated_write_pid; extern void integrated_write_sigchld(int status); -#endif /* FRR_WATCHFRR_H */ +#endif /* FRR_WATCHFRR_H */ diff --git a/watchfrr/watchfrr_vty.c b/watchfrr/watchfrr_vty.c index 276e186c4..9cfdab44a 100644 --- a/watchfrr/watchfrr_vty.c +++ b/watchfrr/watchfrr_vty.c @@ -41,7 +41,7 @@ DEFUN(config_write_integrated, sigset_t oldmask, sigmask; if (integrated_write_pid != -1) { - vty_out (vty,"%% configuration write already in progress.\n"); + vty_out(vty, "%% configuration write already in progress.\n"); return CMD_WARNING; } @@ -59,19 +59,23 @@ DEFUN(config_write_integrated, child = fork(); if (child == -1) { - vty_out (vty, "%% configuration write fork() failed: %s.\n", + vty_out(vty, "%% configuration write fork() failed: %s.\n", safe_strerror(errno)); sigprocmask(SIG_SETMASK, &oldmask, NULL); return CMD_WARNING; } if (child != 0) { - /* note: the VTY won't write a command return value to vtysh; the - * session temporarily enters an intentional "hang" state. This is + /* note: the VTY won't write a command return value to vtysh; + * the + * session temporarily enters an intentional "hang" state. This + * is * to make sure latency in vtysh doing the config write (several - * seconds is not rare to see) does not interfere with watchfrr's + * seconds is not rare to see) does not interfere with + * watchfrr's * supervisor job. * - * The fd is duplicated here so we don't need to hold a vty pointer + * The fd is duplicated here so we don't need to hold a vty + * pointer * (which could become invalid in the meantime). */ integrated_write_pid = child; @@ -91,15 +95,15 @@ DEFUN(config_write_integrated, /* unbuffered write; we just messed with stdout... */ char msg[512]; - snprintf(msg, sizeof(msg), "error executing %s: %s\n", - VTYSH_BIN_PATH, safe_strerror(errno)); + snprintf(msg, sizeof(msg), "error executing %s: %s\n", VTYSH_BIN_PATH, + safe_strerror(errno)); write(1, msg, strlen(msg)); exit(1); } void integrated_write_sigchld(int status) { - uint8_t reply[4] = { 0, 0, 0, CMD_WARNING }; + uint8_t reply[4] = {0, 0, 0, CMD_WARNING}; if (WIFEXITED(status)) { zlog_info("configuration write completed with exit code %d", |