Diff for /embedaddon/mpd/src/main.c between versions 1.1 and 1.1.1.4.2.1

version 1.1, 2012/02/21 23:32:47 version 1.1.1.4.2.1, 2023/09/27 11:08:01
Line 26 Line 26
 #include "ccp_mppc.h"  #include "ccp_mppc.h"
 #endif  #endif
   
   #ifdef USE_BACKTRACE
   #include <execinfo.h>
   #endif
 #include <netgraph.h>  #include <netgraph.h>
   
 /*  /*
Line 47 Line 50
   };    };
   typedef struct option *Option;    typedef struct option *Option;
   
  static const char             *UsageStr = "[options] [system]";  static const char             *UsageStr = "[options] [configuration]";
   static struct option          OptList[] = {    static struct option          OptList[] = {
     { 0, 'b',   "background",   "",      { 0, 'b',   "background",   "",
                                 "Run as a background daemon"    },                                  "Run as a background daemon"    },
Line 65 Line 68
     { 1, 's',   "syslog-ident", "ident",      { 1, 's',   "syslog-ident", "ident",
                                 "Identifier to use for syslog"  },                                  "Identifier to use for syslog"  },
 #endif  #endif
   #ifdef USE_PAM
       { 1, 'm',   "pam-service",  "service",
                                   "PAM service name"      },
   #endif
     { 0, 'v',   "version",      "",      { 0, 'v',   "version",      "",
                                 "Show version information"      },                                  "Show version information"      },
     { 0, 'h',   "help",         "",      { 0, 'h',   "help",         "",
Line 90 Line 97
 #ifndef NOWEB  #ifndef NOWEB
   struct web            gWeb;    struct web            gWeb;
 #endif  #endif
   #ifdef USE_RADIUS
   struct radsrv         gRadsrv;    struct radsrv         gRadsrv;
   #endif
   int                   gBackground = FALSE;    int                   gBackground = FALSE;
   int                   gShutdownInProgress = FALSE;    int                   gShutdownInProgress = FALSE;
   int                   gOverload = 0;    int                   gOverload = 0;
Line 99 Line 108
   
 #ifdef PHYSTYPE_PPTP  #ifdef PHYSTYPE_PPTP
   int                   gPPTPto = 10;    int                   gPPTPto = 10;
  int                   gPPTPtunlimit = 100;  unsigned                gPPTPtunlimit = 100;
 #endif  #endif
 #ifdef PHYSTYPE_L2TP  #ifdef PHYSTYPE_L2TP
   int                   gL2TPto = 10;    int                   gL2TPto = 10;
 #if ((__FreeBSD_version > 603100 && __FreeBSD_version < 700000) || __FreeBSD_version >= 700055)  #if ((__FreeBSD_version > 603100 && __FreeBSD_version < 700000) || __FreeBSD_version >= 700055)
  int                   gL2TPtunlimit = 100;  unsigned                gL2TPtunlimit = 100;
 #else  #else
  int                   gL2TPtunlimit = 10;  unsigned                gL2TPtunlimit = 10;
 #endif  #endif
 #endif  #endif
   int                   gChildren = 0;          /* Current number of children links */    int                   gChildren = 0;          /* Current number of children links */
Line 116 Line 125
   struct acl            *acl_filters[ACL_FILTERS]; /* mpd's global internal bpf filters */    struct acl            *acl_filters[ACL_FILTERS]; /* mpd's global internal bpf filters */
 #endif  #endif
   
   #ifdef USE_PAM
     char                  gPamService[32];
   #endif
   
   struct globalconf     gGlobalConf;    struct globalconf     gGlobalConf;
   
   pthread_mutex_t       gGiantMutex;    pthread_mutex_t       gGiantMutex;
Line 163  main(int ac, char *av[]) Line 176  main(int ac, char *av[])
     int                 ret, k;      int                 ret, k;
     char                *args[MAX_ARGS];      char                *args[MAX_ARGS];
     Context             c;      Context             c;
    PhysType            pt;    const struct phystype *pt;
   
    gPid=getpid();    gPid = getpid();
   
     /* enable libpdel typed_mem */      /* enable libpdel typed_mem */
     typed_mem_enable();      typed_mem_enable();
Line 202  main(int ac, char *av[]) Line 215  main(int ac, char *av[])
     RadsrvInit(&gRadsrv);      RadsrvInit(&gRadsrv);
 #endif  #endif
   
   #ifdef USE_PAM
       if (!*gPamService)
           strcpy(gPamService, "mpd");
   #endif
   
   
     /* Set up libnetgraph logging */      /* Set up libnetgraph logging */
     NgSetErrLog(NgFuncErr, NgFuncErrx);      NgSetErrLog(NgFuncErr, NgFuncErrx);
   
Line 251  main(int ac, char *av[]) Line 270  main(int ac, char *av[])
     }      }
   
     /* Create signaling pipe */      /* Create signaling pipe */
    if ((ret = pipe(gSignalPipe)) != 0) {    if (pipe(gSignalPipe) < 0) {
        Log(LG_ERR, ("Could not create signal pipe %d", ret));        Perror("Could not create signal pipe");
         exit(EX_UNAVAILABLE);          exit(EX_UNAVAILABLE);
     }      }
     if (EventRegister(&gSignalEvent, EVENT_READ, gSignalPipe[0],       if (EventRegister(&gSignalEvent, EVENT_READ, gSignalPipe[0], 
Line 306  static void Line 325  static void
 ConfigRead(int type, void *arg)  ConfigRead(int type, void *arg)
 {  {
     Context     c = (Context)arg;      Context     c = (Context)arg;
       int         err;
   
       (void)type;
     /* Read startup configuration section */      /* Read startup configuration section */
    ReadFile(gConfigFile, STARTUP_CONF, DoCommand, c);    err = ReadFile(gConfigFile, STARTUP_CONF, DoCommand, c);
   
     /* Read configuration as specified on the command line, or default */      /* Read configuration as specified on the command line, or default */
    if (!gPeerSystem)    if (!gPeerSystem) {
        ReadFile(gConfigFile, DEFAULT_CONF, DoCommand, c);        if (err != -2)
    else {            ReadFile(gConfigFile, DEFAULT_CONF, DoCommand, c);
        if (ReadFile(gConfigFile, gPeerSystem, DoCommand, c) < 0) {    } else {
         if (err == -2 || ReadFile(gConfigFile, gPeerSystem, DoCommand, c) < 0) {
             Log(LG_ERR, ("can't read configuration for \"%s\"", gPeerSystem));              Log(LG_ERR, ("can't read configuration for \"%s\"", gPeerSystem));
             DoExit(EX_CONFIG);              DoExit(EX_CONFIG);
         }          }
Line 355  DoExit(int code) Line 377  DoExit(int code)
     Bund        b;      Bund        b;
     Rep         r;      Rep         r;
     Link        l;      Link        l;
    PhysType    pt;    const struct phystype *pt;
     int         k;      int         k;
   
     gShutdownInProgress=1;      gShutdownInProgress=1;
Line 429  SignalHandler(int type, void *arg) Line 451  SignalHandler(int type, void *arg)
 {  {
     u_char      sig;      u_char      sig;
   
       (void)type;
       (void)arg;
     read(gSignalPipe[0], &sig, sizeof(sig));      read(gSignalPipe[0], &sig, sizeof(sig));
   
     switch(sig) {      switch(sig) {
Line 455  FatalSignal(int sig) Line 479  FatalSignal(int sig)
     static struct pppTimer      gDeathTimer;      static struct pppTimer      gDeathTimer;
     int                         k;      int                         k;
     int                         upLinkCount;      int                         upLinkCount;
   #ifdef USE_BACKTRACE
       void                        *buffer[100];
       char                        **strings;
       int                         n;
   #endif
   
     /* If a SIGTERM or SIGINT, gracefully shutdown; otherwise shutdown now */      /* If a SIGTERM or SIGINT, gracefully shutdown; otherwise shutdown now */
     Log(LG_ERR, ("caught fatal signal %s", sys_signame[sig]));      Log(LG_ERR, ("caught fatal signal %s", sys_signame[sig]));
     gShutdownInProgress=1;      gShutdownInProgress=1;
   #ifdef USE_BACKTRACE
       if (sig != SIGTERM && sig != SIGINT) {
           n = backtrace(buffer, 100);
           strings = backtrace_symbols(buffer, n);
           if (strings == NULL) {
               Log(LG_ERR, ("No backtrace symbols found"));
           } else {
               for (k = 0; k < n; k++) {
                   Log(LG_ERR, ("%s", strings[k]));
               }
               free(strings);
           }
       }
   #endif
     for (k = 0; k < gNumBundles; k++) {      for (k = 0; k < gNumBundles; k++) {
         if ((b = gBundles[k])) {          if ((b = gBundles[k])) {
             if (sig != SIGTERM && sig != SIGINT)              if (sig != SIGTERM && sig != SIGINT)
Line 513  OpenCloseSignal(int sig) Line 556  OpenCloseSignal(int sig)
         if (sig == SIGUSR1) {          if (sig == SIGUSR1) {
             Log(LG_ALWAYS, ("[%s] rec'd signal %s, opening",              Log(LG_ALWAYS, ("[%s] rec'd signal %s, opening",
                 l->name, sys_signame[sig]));                  l->name, sys_signame[sig]));
            RecordLinkUpDownReason(NULL, l, 1, STR_MANUALLY, NULL);            LinkOpenAdm(l);
            LinkOpen(l); 
         } else {          } else {
             Log(LG_ALWAYS, ("[%s] rec'd signal %s, closing",              Log(LG_ALWAYS, ("[%s] rec'd signal %s, closing",
                 l->name, sys_signame[sig]));                  l->name, sys_signame[sig]));
            RecordLinkUpDownReason(NULL, l, 0, STR_MANUALLY, NULL);            LinkCloseAdm(l);
            LinkClose(l); 
         }          }
     } else      } else
         Log(LG_ALWAYS, ("rec'd signal %s, ignored", sys_signame[sig]));          Log(LG_ALWAYS, ("rec'd signal %s, ignored", sys_signame[sig]));
Line 590  OptApply(Option opt, int ac, char *av[]) Line 631  OptApply(Option opt, int ac, char *av[])
 #ifdef SYSLOG_FACILITY  #ifdef SYSLOG_FACILITY
     memset(gSysLogIdent, 0, sizeof(gSysLogIdent));      memset(gSysLogIdent, 0, sizeof(gSysLogIdent));
 #endif  #endif
   #ifdef USE_PAM
       memset(gPamService, 0, sizeof(gPamService));
   #endif
   
     if (opt == NULL)      if (opt == NULL)
         Usage(EX_USAGE);          Usage(EX_USAGE);
Line 619  OptApply(Option opt, int ac, char *av[]) Line 663  OptApply(Option opt, int ac, char *av[])
             strlcpy(gSysLogIdent, *av, sizeof(gSysLogIdent));              strlcpy(gSysLogIdent, *av, sizeof(gSysLogIdent));
             return(1);              return(1);
 #endif  #endif
   #ifdef USE_PAM
           case 'm':
               strlcpy(gPamService, *av, sizeof(gPamService));
               return(1);
   #endif
         case 'v':          case 'v':
             fprintf(stderr, "Version %s\n", gVersion);              fprintf(stderr, "Version %s\n", gVersion);
             exit(EX_NORMAL);              exit(EX_NORMAL);
Line 666  Usage(int ex) Line 715  Usage(int ex)
         opt = OptList + k;          opt = OptList + k;
         snprintf(buf, sizeof(buf), "  -%c, --%-s %s",          snprintf(buf, sizeof(buf), "  -%c, --%-s %s",
             opt->sflag, opt->lflag, opt->usage);              opt->sflag, opt->lflag, opt->usage);
        fprintf(stderr, "%-40s%s\n", buf, opt->desc);        fprintf(stderr, "%-35s%s\n", buf, opt->desc);
     }      }
     exit(ex);      exit(ex);
 }  }

Removed from v.1.1  
changed lines
  Added in v.1.1.1.4.2.1


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