Diff for /embedaddon/quagga/watchquagga/watchquagga.c between versions 1.1.1.2 and 1.1.1.3

version 1.1.1.2, 2013/07/21 23:54:41 version 1.1.1.3, 2016/11/02 10:09:12
Line 215  usage(const char *progname, int status) Line 215  usage(const char *progname, int status)
   if (status != 0)    if (status != 0)
     fprintf(stderr, "Try `%s --help' for more information.\n", progname);      fprintf(stderr, "Try `%s --help' for more information.\n", progname);
   else    else
    printf("Usage : %s [OPTION...] <daemon name> ...\n\n\    {
       printf("Usage : %s [OPTION...] <daemon name> ...\n\n\
 Watchdog program to monitor status of quagga daemons and try to restart\n\  Watchdog program to monitor status of quagga daemons and try to restart\n\
 them if they are down or unresponsive.  It determines whether a daemon is\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\  up based on whether it can connect to the daemon's vty unix stream socket.\n\
Line 259  the -m and -M options allow you to control the minimum Line 260  the -m and -M options allow you to control the minimum
 restart commands.  The minimum restart delay is recalculated each time\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\  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\  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\Otherwise, the interval is doubled (but capped at the -M value).\n\n",
Options:\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]);
 
       printf("Options:\n\
 -d, --daemon    Run in daemon mode.  In this mode, error messages are sent\n\  -d, --daemon    Run in daemon mode.  In this mode, error messages are sent\n\
                 to syslog instead of stdout.\n\                  to syslog instead of stdout.\n\
 -S, --statedir  Set the vty socket directory (default is %s)\n\  -S, --statedir  Set the vty socket directory (default is %s)\n\
Line 318  Options:\n\ Line 323  Options:\n\
                 it with a space.  This is an ugly hack to circumvent problems\n\                  it with a space.  This is an ugly hack to circumvent problems\n\
                 passing command-line arguments with embedded spaces.\n\                  passing command-line arguments with embedded spaces.\n\
 -v, --version   Print program version\n\  -v, --version   Print program version\n\
-h, --help      Display this help and exit\n\-h, --help      Display this help and exit\n",
", progname,mode_str[0],progname,mode_str[1],progname,mode_str[2],        VTYDIR,DEFAULT_LOGLEVEL,LOG_EMERG,LOG_DEBUG,LOG_DEBUG,
progname,mode_str[3],progname,mode_str[4],progname,mode_str[2],mode_str[3],        DEFAULT_MIN_RESTART,DEFAULT_MAX_RESTART,
VTYDIR,DEFAULT_LOGLEVEL,LOG_EMERG,LOG_DEBUG,LOG_DEBUG,        DEFAULT_PERIOD,DEFAULT_TIMEOUT,DEFAULT_RESTART_TIMEOUT,
DEFAULT_MIN_RESTART,DEFAULT_MAX_RESTART,        DEFAULT_PIDFILE);
DEFAULT_PERIOD,DEFAULT_TIMEOUT,DEFAULT_RESTART_TIMEOUT,DEFAULT_PIDFILE);    }
   
   return status;    return status;
 }  }
   
 static pid_t  static pid_t
run_background(const char *shell_cmd)run_background(char *shell_cmd)
 {  {
   pid_t child;    pid_t child;
   
Line 345  run_background(const char *shell_cmd) Line 350  run_background(const char *shell_cmd)
       if (setpgid(0,0) < 0)        if (setpgid(0,0) < 0)
         zlog_warn("warning: setpgid(0,0) failed: %s",safe_strerror(errno));          zlog_warn("warning: setpgid(0,0) failed: %s",safe_strerror(errno));
       {        {
        const char *argv[4] = { "sh", "-c", shell_cmd, NULL};        char shell[] = "sh";
        execv("/bin/sh",(char *const *)argv);        char dashc[] = "-c";
         char *const argv[4] = { shell, dashc, shell_cmd, NULL};
         execv("/bin/sh", argv);
         zlog_err("execv(/bin/sh -c '%s') failed: %s",          zlog_err("execv(/bin/sh -c '%s') failed: %s",
                  shell_cmd,safe_strerror(errno));                   shell_cmd,safe_strerror(errno));
         _exit(127);          _exit(127);
Line 381  restart_kill(struct thread *t_kill) Line 388  restart_kill(struct thread *t_kill)
   time_elapsed(&delay,&restart->time);    time_elapsed(&delay,&restart->time);
   zlog_warn("Warning: %s %s child process %d still running after "    zlog_warn("Warning: %s %s child process %d still running after "
             "%ld seconds, sending signal %d",              "%ld seconds, sending signal %d",
            restart->what,restart->name,(int)restart->pid,delay.tv_sec,            restart->what,restart->name,(int)restart->pid, (long)delay.tv_sec,
             (restart->kills ? SIGKILL : SIGTERM));              (restart->kills ? SIGKILL : SIGTERM));
   kill(-restart->pid,(restart->kills ? SIGKILL : SIGTERM));    kill(-restart->pid,(restart->kills ? SIGKILL : SIGTERM));
   restart->kills++;    restart->kills++;
Line 654  handle_read(struct thread *t_read) Line 661  handle_read(struct thread *t_read)
         {          {
           dmn->state = DAEMON_UP;            dmn->state = DAEMON_UP;
           zlog_warn("%s state -> up : echo response received after %ld.%06ld "            zlog_warn("%s state -> up : echo response received after %ld.%06ld "
                    "seconds", dmn->name,delay.tv_sec,delay.tv_usec);                    "seconds", dmn->name,
                     (long)delay.tv_sec, (long)delay.tv_usec);
         }          }
       else        else
         zlog_warn("%s: slow echo response finally received after %ld.%06ld "          zlog_warn("%s: slow echo response finally received after %ld.%06ld "
                  "seconds", dmn->name,delay.tv_sec,delay.tv_usec);                  "seconds", dmn->name,
                   (long)delay.tv_sec, (long)delay.tv_usec);
     }      }
   else if (gs.loglevel > LOG_DEBUG+1)    else if (gs.loglevel > LOG_DEBUG+1)
     zlog_debug("%s: echo response received after %ld.%06ld seconds",      zlog_debug("%s: echo response received after %ld.%06ld seconds",
               dmn->name,delay.tv_sec,delay.tv_usec);               dmn->name, (long)delay.tv_sec, (long)delay.tv_usec);
   
   SET_READ_HANDLER(dmn);    SET_READ_HANDLER(dmn);
   if (dmn->t_wakeup)    if (dmn->t_wakeup)

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>