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

version 1.1.1.4, 2021/03/17 00:39:23 version 1.1.1.4.2.1, 2023/09/27 11:08:00
Line 52 Line 52
     SET_NO      SET_NO
   };    };
   
     /* Used to prevent auto-up on links closed manually */
     enum {
       LINK_ADMINSTATE_DOWN = 0,
       LINK_ADMINSTATE_OPERATIONAL
     };
   
     static const char *linkAdminStateNames[] = {
       "DOWN",
       "OPERATIONAL"
     };
     
   #define RBUF_SIZE             100    #define RBUF_SIZE             100
   
 /*  /*
Line 185  LinksShutdown(void) Line 196  LinksShutdown(void)
 }  }
   
 /*  /*
    * LinkOpenAdm()
    */
   
   void
   LinkOpenAdm(Link l)
   {
       l->admin_state = LINK_ADMINSTATE_OPERATIONAL;
       RecordLinkUpDownReason(NULL, l, 1, STR_MANUALLY, NULL);
       LinkOpen(l);
   }
   
   /*
  * LinkOpenCmd()   * LinkOpenCmd()
  */   */
   
Line 193  LinkOpenCmd(Context ctx) Line 216  LinkOpenCmd(Context ctx)
 {  {
     if (ctx->lnk->tmpl)      if (ctx->lnk->tmpl)
         Error("impossible to open template");          Error("impossible to open template");
    RecordLinkUpDownReason(NULL, ctx->lnk, 1, STR_MANUALLY, NULL);    LinkOpenAdm(ctx->lnk);
    LinkOpen(ctx->lnk); 
     return (0);      return (0);
 }  }
   
 /*  /*
    * LinkCloseAdm()
    */
   
   void
   LinkCloseAdm(Link l)
   {
       l->admin_state = LINK_ADMINSTATE_DOWN;
       RecordLinkUpDownReason(NULL, l, 0, STR_MANUALLY, NULL);
       LinkClose(l);
   }
   
   /*
  * LinkCloseCmd()   * LinkCloseCmd()
  */   */
   
Line 207  LinkCloseCmd(Context ctx) Line 241  LinkCloseCmd(Context ctx)
 {  {
     if (ctx->lnk->tmpl)      if (ctx->lnk->tmpl)
         Error("impossible to close template");          Error("impossible to close template");
       ctx->lnk->admin_state = LINK_ADMINSTATE_DOWN;
     RecordLinkUpDownReason(NULL, ctx->lnk, 0, STR_MANUALLY, NULL);      RecordLinkUpDownReason(NULL, ctx->lnk, 0, STR_MANUALLY, NULL);
     LinkClose(ctx->lnk);      LinkClose(ctx->lnk);
     return (0);      return (0);
Line 258  LinkDown(Link l) Line 293  LinkDown(Link l)
 {  {
     Log(LG_LINK, ("[%s] Link: DOWN event", l->name));      Log(LG_LINK, ("[%s] Link: DOWN event", l->name));
   
    if (OPEN_STATE(l->lcp.fsm.state)) {    if (OPEN_STATE(l->lcp.fsm.state) || l->admin_state != LINK_ADMINSTATE_DOWN) {
         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) {
Line 307  LinkReopenTimeout(void *arg) Line 342  LinkReopenTimeout(void *arg)
     Log(LG_LINK, ("[%s] Link: reconnection attempt %hu",      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);
       if (!OPEN_STATE(l->lcp.fsm.state))
           LinkOpen(l);
     PhysOpen(l);      PhysOpen(l);
 }  }
   
Line 411  LinkCreate(Context ctx, int ac, const char *const av[] Line 448  LinkCreate(Context ctx, int ac, const char *const av[]
         strlcpy(l->name, av[0 + stay], sizeof(l->name));          strlcpy(l->name, av[0 + stay], sizeof(l->name));
         l->type = pt;          l->type = pt;
         l->tmpl = tmpl;          l->tmpl = tmpl;
           l->admin_state = LINK_ADMINSTATE_OPERATIONAL;
         l->stay = stay;          l->stay = stay;
         l->parent = -1;          l->parent = -1;
         SLIST_INIT(&l->actions);          SLIST_INIT(&l->actions);
   
         /* Initialize link configuration with defaults */          /* Initialize link configuration with defaults */
         l->conf.mru = LCP_DEFAULT_MRU;          l->conf.mru = LCP_DEFAULT_MRU;
        l->conf.mtu = LCP_DEFAULT_MRU;        /* Do not assume any MTU value for this moment */
         l->conf.mtu = 0;
         l->conf.mrru = MP_DEFAULT_MRRU;          l->conf.mrru = MP_DEFAULT_MRRU;
         l->conf.accmap = 0x000a0000;          l->conf.accmap = 0x000a0000;
         l->conf.max_redial = -1;          l->conf.max_redial = -1;
Line 551  LinkInst(Link lt, const char *name, int tmpl, int stay Line 590  LinkInst(Link lt, const char *name, int tmpl, int stay
             SLIST_INSERT_AFTER(ap, a, next);              SLIST_INSERT_AFTER(ap, a, next);
         ap = a;          ap = a;
     }      }
       l->admin_state = LINK_ADMINSTATE_OPERATIONAL;
     l->tmpl = tmpl;      l->tmpl = tmpl;
     l->stay = stay;      l->stay = stay;
     /* Count link as one more child of parent. */      /* Count link as one more child of parent. */
Line 1321  LinkStat(Context ctx, int ac, const char *const av[],  Line 1361  LinkStat(Context ctx, int ac, const char *const av[], 
         Printf("\tChildren       : %d\r\n", l->children);          Printf("\tChildren       : %d\r\n", l->children);
     else {      else {
         Printf("\tState          : %s\r\n", gPhysStateNames[l->state]);          Printf("\tState          : %s\r\n", gPhysStateNames[l->state]);
           Printf("\tAdmin. state   : %s\r\n", linkAdminStateNames[l->admin_state]);
         Printf("\tSession Id     : %s\r\n", l->session_id);          Printf("\tSession Id     : %s\r\n", l->session_id);
         Printf("\tPeer ident     : %s\r\n", l->lcp.peer_ident);          Printf("\tPeer ident     : %s\r\n", l->lcp.peer_ident);
         if (l->state == PHYS_STATE_UP)          if (l->state == PHYS_STATE_UP)
Line 1529  LinkSetCommand(Context ctx, int ac, const char *const  Line 1570  LinkSetCommand(Context ctx, int ac, const char *const 
             name = ((intptr_t)arg == SET_MTU) ? "MTU" : "MRU";              name = ((intptr_t)arg == SET_MTU) ? "MTU" : "MRU";
             if (val < LCP_MIN_MRU)              if (val < LCP_MIN_MRU)
                 Error("min %s is %d", name, LCP_MIN_MRU);                  Error("min %s is %d", name, LCP_MIN_MRU);
            else if (l->type && (val > l->type->mru)) {            else if (l->type && (val > l->type->mtu)) {
                 Error("max %s on type \"%s\" links is %d",                  Error("max %s on type \"%s\" links is %d",
                    name, l->type->name, l->type->mru);                    name, l->type->name, l->type->mtu);
             } else if ((intptr_t)arg == SET_MTU)              } else if ((intptr_t)arg == SET_MTU)
                 l->conf.mtu = val;                  l->conf.mtu = val;
             else              else

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


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