Diff for /embedaddon/mpd/src/link.c between versions 1.1.1.2 and 1.1.1.4

version 1.1.1.2, 2016/11/01 09:56:12 version 1.1.1.4, 2021/03/17 00:39:23
Line 58 Line 58
  * INTERNAL FUNCTIONS   * INTERNAL FUNCTIONS
  */   */
   
  static int    LinkSetCommand(Context ctx, int ac, char *av[], void *arg);  static int    LinkSetCommand(Context ctx, int ac, const char *const av[], const void *arg);
   static void   LinkMsg(int type, void *cookie);    static void   LinkMsg(int type, void *cookie);
   static void   LinkNgDataEvent(int type, void *cookie);    static void   LinkNgDataEvent(int type, void *cookie);
   static void   LinkReopenTimeout(void *arg);    static void   LinkReopenTimeout(void *arg);
Line 67 Line 67
  * GLOBAL VARIABLES   * GLOBAL VARIABLES
  */   */
   
  const struct cmdtab LinkSetActionCmds[] = {  static const struct cmdtab LinkSetActionCmds[] = {
     { "bundle {bundle} [{regex}]",      "Terminate incomings locally",      { "bundle {bundle} [{regex}]",      "Terminate incomings locally",
         LinkSetCommand, NULL, 2, (void *) SET_BUNDLE },          LinkSetCommand, NULL, 2, (void *) SET_BUNDLE },
     { "forward {link} [{regex}]",       "Forward incomings",      { "forward {link} [{regex}]",       "Forward incomings",
Line 76 Line 76
         LinkSetCommand, NULL, 2, (void *) SET_DROP },          LinkSetCommand, NULL, 2, (void *) SET_DROP },
     { "clear",                          "Clear actions",      { "clear",                          "Clear actions",
         LinkSetCommand, NULL, 2, (void *) SET_CLEAR },          LinkSetCommand, NULL, 2, (void *) SET_CLEAR },
    { NULL },    { NULL, NULL, NULL, NULL, 0, NULL },
   };    };
   
   const struct cmdtab LinkSetCmds[] = {    const struct cmdtab LinkSetCmds[] = {
     { "action ...",                     "Set action on incoming",      { "action ...",                     "Set action on incoming",
        CMD_SUBMENU,    NULL, 2, (void *) LinkSetActionCmds },        CMD_SUBMENU,    NULL, 2, LinkSetActionCmds },
     { "bandwidth {bps}",                "Link bandwidth",      { "bandwidth {bps}",                "Link bandwidth",
         LinkSetCommand, NULL, 2, (void *) SET_BANDWIDTH },          LinkSetCommand, NULL, 2, (void *) SET_BANDWIDTH },
     { "latency {microsecs}",            "Link latency",      { "latency {microsecs}",            "Link latency",
Line 118 Line 118
         LinkSetCommand, NULL, 2, (void *) SET_YES },          LinkSetCommand, NULL, 2, (void *) SET_YES },
     { "no {opt ...}",                   "Disable and deny option",      { "no {opt ...}",                   "Disable and deny option",
         LinkSetCommand, NULL, 2, (void *) SET_NO },          LinkSetCommand, NULL, 2, (void *) SET_NO },
    { NULL },    { NULL, NULL, NULL, NULL, 0, NULL },
   };    };
   
 /*  /*
  * INTERNAL VARIABLES   * INTERNAL VARIABLES
  */   */
   
  static struct confinfo gConfList[] = {  static const struct confinfo        gConfList[] = {
     { 0,        LINK_CONF_INCOMING,     "incoming"      },      { 0,        LINK_CONF_INCOMING,     "incoming"      },
     { 1,        LINK_CONF_PAP,          "pap"           },      { 1,        LINK_CONF_PAP,          "pap"           },
     { 1,        LINK_CONF_CHAPMD5,      "chap-md5"      },      { 1,        LINK_CONF_CHAPMD5,      "chap-md5"      },
Line 151 Line 151
   
     int         gLinksCsock = -1;               /* Socket node control socket */      int         gLinksCsock = -1;               /* Socket node control socket */
     int         gLinksDsock = -1;               /* Socket node data socket */      int         gLinksDsock = -1;               /* Socket node data socket */
    EventRef    gLinksDataEvent;    static EventRef gLinksDataEvent;
   
 int  int
 LinksInit(void)  LinksInit(void)
Line 262  LinkDown(Link l) Line 262  LinkDown(Link l)
         if (((l->conf.max_redial != 0) && (l->num_redial >= l->conf.max_redial)) ||          if (((l->conf.max_redial != 0) && (l->num_redial >= l->conf.max_redial)) ||
             gShutdownInProgress) {              gShutdownInProgress) {
             if (l->conf.max_redial >= 0) {              if (l->conf.max_redial >= 0) {
                Log(LG_LINK, ("[%s] Link: giving up after %d reconnection attempts",                Log(LG_LINK, ("[%s] Link: giving up after %hu reconnection attempts",
                   l->name, l->num_redial));                    l->name, l->num_redial));
             }              }
             if (!l->stay)              if (!l->stay)
Line 280  LinkDown(Link l) Line 280  LinkDown(Link l)
             LcpDown(l);              LcpDown(l);
   
             l->num_redial++;              l->num_redial++;
            Log(LG_LINK, ("[%s] Link: reconnection attempt %d in %d seconds",            Log(LG_LINK, ("[%s] Link: reconnection attempt %hu in %d seconds",
               l->name, l->num_redial, delay));                l->name, l->num_redial, delay));
         }          }
     } else {      } else {
Line 304  LinkReopenTimeout(void *arg) Line 304  LinkReopenTimeout(void *arg)
         return;          return;
     }      }
   
    Log(LG_LINK, ("[%s] Link: reconnection attempt %d",    Log(LG_LINK, ("[%s] Link: reconnection attempt %hu",
         l->name, l->num_redial));          l->name, l->num_redial));
     RecordLinkUpDownReason(NULL, l, 1, STR_REDIAL, NULL);      RecordLinkUpDownReason(NULL, l, 1, STR_REDIAL, NULL);
     PhysOpen(l);      PhysOpen(l);
Line 349  LinkMsg(int type, void *arg) Line 349  LinkMsg(int type, void *arg)
  */   */
   
 int  int
LinkCreate(Context ctx, int ac, char *av[], void *arg)LinkCreate(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     Link        l, lt = NULL;      Link        l, lt = NULL;
    PhysType    pt = NULL;    const struct phystype *pt = NULL;
     u_char      tmpl = 0;      u_char      tmpl = 0;
     u_char      stay = 0;      u_char      stay = 0;
     int         k;      int         k;
   
       (void)arg;
     RESETREF(ctx->lnk, NULL);      RESETREF(ctx->lnk, NULL);
     RESETREF(ctx->bund, NULL);      RESETREF(ctx->bund, NULL);
     RESETREF(ctx->rep, NULL);      RESETREF(ctx->rep, NULL);
Line 487  LinkCreate(Context ctx, int ac, char *av[], void *arg) Line 488  LinkCreate(Context ctx, int ac, char *av[], void *arg)
  */   */
   
 int  int
LinkDestroy(Context ctx, int ac, char *av[], void *arg)LinkDestroy(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     Link        l;      Link        l;
   
       (void)arg;
     if (ac > 1)      if (ac > 1)
         return(-1);          return(-1);
   
Line 528  LinkDestroy(Context ctx, int ac, char *av[], void *arg Line 530  LinkDestroy(Context ctx, int ac, char *av[], void *arg
  */   */
   
 Link  Link
LinkInst(Link lt, char *name, int tmpl, int stay)LinkInst(Link lt, const char *name, int tmpl, int stay)
 {  {
     Link        l;      Link        l;
     int         k;      int         k;
Line 815  LinkNgDataEvent(int type, void *cookie) Line 817  LinkNgDataEvent(int type, void *cookie)
     Bund                b;      Bund                b;
     u_char              *buf;      u_char              *buf;
     u_int16_t           proto;      u_int16_t           proto;
    int                 ptr;    unsigned                ptr;
     Mbuf                bp;      Mbuf                bp;
     struct sockaddr_ng  naddr;      struct sockaddr_ng  naddr;
     socklen_t           nsize;      socklen_t           nsize;
     char                *name, *rest;      char                *name, *rest;
     int                 id, num = 0;      int                 id, num = 0;
   
       (void)cookie;
       (void)type;
   
     /* Read all available packets */      /* Read all available packets */
     while (1) {      while (1) {
         if (num > 20)          if (num > 20)
Line 905  LinkNgDataEvent(int type, void *cookie) Line 910  LinkNgDataEvent(int type, void *cookie)
   
             /* A PPP frame from the bypass hook? */              /* A PPP frame from the bypass hook? */
             if (naddr.sg_data[0] == 'b') {              if (naddr.sg_data[0] == 'b') {
                Link            l;                Link            ll;
                u_int16_t       linkNum, proto;                u_int16_t       linkNum, lproto;
   
                 if (MBLEN(bp) <= 4) {                  if (MBLEN(bp) <= 4) {
                     LogDumpBp(LG_FRAME|LG_ERR, bp,                      LogDumpBp(LG_FRAME|LG_ERR, bp,
Line 918  LinkNgDataEvent(int type, void *cookie) Line 923  LinkNgDataEvent(int type, void *cookie)
                 /* Extract link number and protocol */                  /* Extract link number and protocol */
                 bp = mbread(bp, &linkNum, 2);                  bp = mbread(bp, &linkNum, 2);
                 linkNum = ntohs(linkNum);                  linkNum = ntohs(linkNum);
                bp = mbread(bp, &proto, 2);                bp = mbread(bp, &lproto, 2);
                proto = ntohs(proto);                lproto = ntohs(lproto);
   
                 /* Debugging */                  /* Debugging */
                 LogDumpBp(LG_FRAME, bp,                  LogDumpBp(LG_FRAME, bp,
                     "[%s] rec'd %zu bytes bypass frame link=%d proto=0x%04x",                      "[%s] rec'd %zu bytes bypass frame link=%d proto=0x%04x",
                    b->name, MBLEN(bp), (int16_t)linkNum, proto);                    b->name, MBLEN(bp), (int16_t)linkNum, lproto);
   
                 /* Set link */                  /* Set link */
                 assert(linkNum == NG_PPP_BUNDLE_LINKNUM || linkNum < NG_PPP_MAX_LINKS);                  assert(linkNum == NG_PPP_BUNDLE_LINKNUM || linkNum < NG_PPP_MAX_LINKS);
   
                 if (linkNum != NG_PPP_BUNDLE_LINKNUM)                  if (linkNum != NG_PPP_BUNDLE_LINKNUM)
                    l = b->links[linkNum];                    ll = b->links[linkNum];
                 else                  else
                    l = NULL;                    ll = NULL;
   
                InputFrame(b, l, proto, bp);                InputFrame(b, ll, lproto, bp);
                 continue;                  continue;
             }              }
   
Line 1012  LinkFind(const char *name) Line 1017  LinkFind(const char *name)
  */   */
   
 int  int
LinkCommand(Context ctx, int ac, char *av[], void *arg)LinkCommand(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     Link        l;      Link        l;
     int         k;      int         k;
   
       (void)arg;
     if (ac > 1)      if (ac > 1)
         return (-1);          return (-1);
   
Line 1058  LinkCommand(Context ctx, int ac, char *av[], void *arg Line 1064  LinkCommand(Context ctx, int ac, char *av[], void *arg
  */   */
   
 int  int
SessionCommand(Context ctx, int ac, char *av[], void *arg)SessionCommand(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     int         k;      int         k;
   
       (void)arg;
     if (ac > 1)      if (ac > 1)
         return (-1);          return (-1);
   
Line 1100  SessionCommand(Context ctx, int ac, char *av[], void * Line 1107  SessionCommand(Context ctx, int ac, char *av[], void *
  */   */
   
 int  int
AuthnameCommand(Context ctx, int ac, char *av[], void *arg)AuthnameCommand(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     int         k;      int         k;
   
       (void)arg;
     if (ac > 2)      if (ac > 2)
         return (-1);          return (-1);
   
Line 1262  LinkMatchAction(Link l, int stage, char *login) Line 1270  LinkMatchAction(Link l, int stage, char *login)
  */   */
   
 int  int
LinkStat(Context ctx, int ac, char *av[], void *arg)LinkStat(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     Link        l = ctx->lnk;      Link        l = ctx->lnk;
     struct linkaction *a;      struct linkaction *a;
   
       (void)ac;
       (void)av;
       (void)arg;
   
     Printf("Link %s%s:\r\n", l->name, l->tmpl?" (template)":(l->stay?" (static)":""));      Printf("Link %s%s:\r\n", l->name, l->tmpl?" (template)":(l->stay?" (static)":""));
   
     Printf("Configuration:\r\n");      Printf("Configuration:\r\n");
Line 1359  LinkUpdateStats(Link l) Line 1371  LinkUpdateStats(Link l)
         l->stats.runts    += abs(stats.runts - l->oldStats.runts);          l->stats.runts    += abs(stats.runts - l->oldStats.runts);
         l->stats.dupFragments += abs(stats.dupFragments - l->oldStats.dupFragments);          l->stats.dupFragments += abs(stats.dupFragments - l->oldStats.dupFragments);
         l->stats.dropFragments += abs(stats.dropFragments - l->oldStats.dropFragments);          l->stats.dropFragments += abs(stats.dropFragments - l->oldStats.dropFragments);
           l->oldStats = stats;
     }      }
   
     l->oldStats = stats;  
 #else  #else
     NgFuncGetStats64(l->bund, l->bundleIndex, &l->stats);      NgFuncGetStats64(l->bund, l->bundleIndex, &l->stats);
 #endif  #endif
Line 1387  LinkResetStats(Link l) Line 1399  LinkResetStats(Link l)
  */   */
   
 static int  static int
LinkSetCommand(Context ctx, int ac, char *av[], void *arg)LinkSetCommand(Context ctx, int ac, const char *const av[], const void *arg)
 {  {
     Link        l = ctx->lnk;      Link        l = ctx->lnk;
     int         val, nac = 0;      int         val, nac = 0;
     const char  *name;      const char  *name;
    char        *nav[ac];    const char   *nav[ac];
     const char  *av2[] = { "chap-md5", "chap-msv1", "chap-msv2" };      const char  *av2[] = { "chap-md5", "chap-msv1", "chap-msv2" };
   
     /* make "chap" as an alias for all chap-variants, this should keep BC */      /* make "chap" as an alias for all chap-variants, this should keep BC */
Line 1407  LinkSetCommand(Context ctx, int ac, char *av[], void * Line 1419  LinkSetCommand(Context ctx, int ac, char *av[], void *
             int i = 0;              int i = 0;
             for ( ; i < ac; i++) {              for ( ; i < ac; i++) {
                 if (strcasecmp(av[i], "chap") == 0) {                  if (strcasecmp(av[i], "chap") == 0) {
                    LinkSetCommand(ctx, 3, (char **)av2, arg);                    LinkSetCommand(ctx, 3, (const char **)av2, arg);
                 } else {                  } else {
                     nav[nac++] = av[i];                      nav[nac++] = av[i];
                 }                   } 

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


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