Diff for /embedaddon/mpd/src/auth.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 188  void  Line 188  void 
 authparamsInit(struct authparams *ap)  authparamsInit(struct authparams *ap)
 {  {
         memset(ap, 0, sizeof(struct authparams));          memset(ap, 0, sizeof(struct authparams));
   #ifdef USE_RADIUS
         ap->eapmsg = NULL;          ap->eapmsg = NULL;
         ap->state = NULL;          ap->state = NULL;
         ap->class = NULL;          ap->class = NULL;
         ap->filter_id = NULL;          ap->filter_id = NULL;
   #endif
         ap->msdomain = NULL;          ap->msdomain = NULL;
 #ifdef SIOCSIFDESCR  #ifdef SIOCSIFDESCR
         ap->ifdescr = NULL;          ap->ifdescr = NULL;
Line 208  authparamsDestroy(struct authparams *ap) Line 210  authparamsDestroy(struct authparams *ap)
         int i;          int i;
 #endif  #endif
   
   #ifdef USE_RADIUS
         Freee(ap->eapmsg);          Freee(ap->eapmsg);
         Freee(ap->state);          Freee(ap->state);
         Freee(ap->class);          Freee(ap->class);
         Freee(ap->filter_id);          Freee(ap->filter_id);
   #endif
   
 #ifdef USE_IPFW  #ifdef USE_IPFW
         ACLDestroy(ap->acl_rule);          ACLDestroy(ap->acl_rule);
Line 252  authparamsCopy(struct authparams *src, struct authpara Line 256  authparamsCopy(struct authparams *src, struct authpara
   
         memcpy(dst, src, sizeof(struct authparams));          memcpy(dst, src, sizeof(struct authparams));
   
   #ifdef USE_RADIUS
         if (src->eapmsg)          if (src->eapmsg)
                 dst->eapmsg = Mdup(MB_AUTH, src->eapmsg, src->eapmsg_len);                  dst->eapmsg = Mdup(MB_AUTH, src->eapmsg, src->eapmsg_len);
         if (src->state)          if (src->state)
Line 260  authparamsCopy(struct authparams *src, struct authpara Line 265  authparamsCopy(struct authparams *src, struct authpara
                 dst->class = Mdup(MB_AUTH, src->class, src->class_len);                  dst->class = Mdup(MB_AUTH, src->class, src->class_len);
         if (src->filter_id)          if (src->filter_id)
                 dst->filter_id = Mstrdup(MB_AUTH, src->filter_id);                  dst->filter_id = Mstrdup(MB_AUTH, src->filter_id);
   #endif
   
 #ifdef USE_IPFW  #ifdef USE_IPFW
         ACLCopy(src->acl_rule, &dst->acl_rule);          ACLCopy(src->acl_rule, &dst->acl_rule);
Line 308  AuthInit(Link l) Line 314  AuthInit(Link l)
         Enable(&ac->options, AUTH_CONF_INTERNAL);          Enable(&ac->options, AUTH_CONF_INTERNAL);
         Enable(&ac->options, AUTH_CONF_ACCT_MANDATORY);          Enable(&ac->options, AUTH_CONF_ACCT_MANDATORY);
   
   #ifdef USE_RADIUS
         EapInit(l);          EapInit(l);
         RadiusInit(l);          RadiusInit(l);
   #endif
 }  }
   
 /*  /*
Line 420  AuthStart(Link l) Line 428  AuthStart(Link l)
         case PROTO_CHAP:          case PROTO_CHAP:
                 ChapStart(l, AUTH_SELF_TO_PEER);                  ChapStart(l, AUTH_SELF_TO_PEER);
                 break;                  break;
   #ifdef USE_RADIUS
         case PROTO_EAP:          case PROTO_EAP:
                 EapStart(l, AUTH_SELF_TO_PEER);                  EapStart(l, AUTH_SELF_TO_PEER);
                 break;                  break;
   #endif
         default:          default:
                 assert(0);                  assert(0);
         }          }
Line 437  AuthStart(Link l) Line 447  AuthStart(Link l)
         case PROTO_CHAP:          case PROTO_CHAP:
                 ChapStart(l, AUTH_PEER_TO_SELF);                  ChapStart(l, AUTH_PEER_TO_SELF);
                 break;                  break;
   #ifdef USE_RADIUS
         case PROTO_EAP:          case PROTO_EAP:
                 EapStart(l, AUTH_PEER_TO_SELF);                  EapStart(l, AUTH_PEER_TO_SELF);
                 break;                  break;
   #endif
         default:          default:
                 assert(0);                  assert(0);
         }          }
Line 449  AuthStart(Link l) Line 461  AuthStart(Link l)
  * AuthInput()   * AuthInput()
  *   *
  * Deal with PAP/CHAP/EAP packet   * Deal with PAP/CHAP/EAP packet
    * But cannot be called for EAP packet if RADIUS support is not compiled in.
  */   */
   
 void  void
Line 494  AuthInput(Link l, int proto, Mbuf bp) Line 507  AuthInput(Link l, int proto, Mbuf bp)
         len -= sizeof(fsmh);          len -= sizeof(fsmh);
         pkt = MBDATA(bp);          pkt = MBDATA(bp);
   
   #ifdef USE_RADIUS
         if (proto == PROTO_EAP && bp) {          if (proto == PROTO_EAP && bp) {
                 Log(LG_AUTH, ("[%s] %s: rec'd %s #%d len: %hu, type: %s", l->name,                  Log(LG_AUTH, ("[%s] %s: rec'd %s #%d len: %hu, type: %s", l->name,
                     ProtoName(proto), AuthCode(proto, fsmh.code, buf, sizeof(buf)), fsmh.id,                      ProtoName(proto), AuthCode(proto, fsmh.code, buf, sizeof(buf)), fsmh.id,
                     fsmh_len, EapType(pkt[0])));                      fsmh_len, EapType(pkt[0])));
        } else {        } else
 #endif
                 Log(LG_AUTH, ("[%s] %s: rec'd %s #%d len: %hu", l->name,                  Log(LG_AUTH, ("[%s] %s: rec'd %s #%d len: %hu", l->name,
                     ProtoName(proto), AuthCode(proto, fsmh.code, buf, sizeof(buf)), fsmh.id,                      ProtoName(proto), AuthCode(proto, fsmh.code, buf, sizeof(buf)), fsmh.id,
                     fsmh_len));                      fsmh_len));
         }  
   
         auth = AuthDataNew(l);          auth = AuthDataNew(l);
         auth->proto = proto;          auth->proto = proto;
Line 518  AuthInput(Link l, int proto, Mbuf bp) Line 532  AuthInput(Link l, int proto, Mbuf bp)
         case PROTO_CHAP:          case PROTO_CHAP:
                 ChapInput(l, auth, pkt, len);                  ChapInput(l, auth, pkt, len);
                 break;                  break;
   #ifdef USE_RADIUS
         case PROTO_EAP:          case PROTO_EAP:
                 EapInput(l, auth, pkt, len);                  EapInput(l, auth, pkt, len);
                 break;                  break;
   #endif
         default:          default:
                 assert(0);                  assert(0);
         }          }
Line 563  AuthOutput(Link l, int proto, u_int code, u_int id, co Line 579  AuthOutput(Link l, int proto, u_int code, u_int id, co
         }          }
         bp = mbcopyback(bp, MBLEN(bp), ptr, len);          bp = mbcopyback(bp, MBLEN(bp), ptr, len);
   
   #ifdef USE_RADIUS
         if (proto == PROTO_EAP) {          if (proto == PROTO_EAP) {
                 Log(LG_AUTH, ("[%s] %s: sending %s #%d len: %d, type: %s", l->name,                  Log(LG_AUTH, ("[%s] %s: sending %s #%d len: %d, type: %s", l->name,
                     ProtoName(proto), AuthCode(proto, code, buf, sizeof(buf)), id, plen, EapType(eap_type)));                      ProtoName(proto), AuthCode(proto, code, buf, sizeof(buf)), id, plen, EapType(eap_type)));
        } else {        } else
 #endif
                 Log(LG_AUTH, ("[%s] %s: sending %s #%d len: %d", l->name,                  Log(LG_AUTH, ("[%s] %s: sending %s #%d len: %d", l->name,
                     ProtoName(proto), AuthCode(proto, code, buf, sizeof(buf)), id, plen));                      ProtoName(proto), AuthCode(proto, code, buf, sizeof(buf)), id, plen));
         }  
   
         /* Send it out */          /* Send it out */
         NgFuncWritePppFrameLink(l, proto, bp);          NgFuncWritePppFrameLink(l, proto, bp);
Line 718  AuthStop(Link l) Line 735  AuthStop(Link l)
         TimerStop(&a->timer);          TimerStop(&a->timer);
         PapStop(&a->pap);          PapStop(&a->pap);
         ChapStop(&a->chap);          ChapStop(&a->chap);
   #ifdef USE_RADIUS
         EapStop(&a->eap);          EapStop(&a->eap);
   #endif
         paction_cancel(&a->thread);          paction_cancel(&a->thread);
 }  }
   
Line 979  AuthAccount(void *arg) Line 998  AuthAccount(void *arg)
   
         Log(LG_AUTH2, ("[%s] ACCT: Thread started", auth->info.lnkname));          Log(LG_AUTH2, ("[%s] ACCT: Thread started", auth->info.lnkname));
   
   #ifdef USE_RADIUS
         if (Enabled(&auth->conf.options, AUTH_CONF_RADIUS_ACCT))          if (Enabled(&auth->conf.options, AUTH_CONF_RADIUS_ACCT))
                 err |= RadiusAccount(auth);                  err |= RadiusAccount(auth);
   #endif
 #ifdef USE_PAM  #ifdef USE_PAM
         if (Enabled(&auth->conf.options, AUTH_CONF_PAM_ACCT))          if (Enabled(&auth->conf.options, AUTH_CONF_PAM_ACCT))
                 err |= AuthPAMAcct(auth);                  err |= AuthPAMAcct(auth);
Line 1020  AuthAccountFinish(void *arg, int was_canceled) Line 1041  AuthAccountFinish(void *arg, int was_canceled)
                     auth->info.lnkname));                      auth->info.lnkname));
         }          }
   
   #ifdef USE_RADIUS
         /* Cleanup */          /* Cleanup */
         RadiusClose(auth);          RadiusClose(auth);
   #endif
   
         if (was_canceled) {          if (was_canceled) {
                 AuthDataDestroy(auth);                  AuthDataDestroy(auth);
Line 1188  AuthAsync(void *arg) Line 1211  AuthAsync(void *arg)
                                 return;                                  return;
                 }                  }
         }          }
   #ifdef USE_RADIUS
         if (auth->proto == PROTO_EAP && auth->eap_radius) {          if (auth->proto == PROTO_EAP && auth->eap_radius) {
                 auth->params.authentic = AUTH_CONF_RADIUS_AUTH;                  auth->params.authentic = AUTH_CONF_RADIUS_AUTH;
                 RadiusEapProxy(auth);                  RadiusEapProxy(auth);
Line 1205  AuthAsync(void *arg) Line 1229  AuthAsync(void *arg)
                                 return;                                  return;
                 }                  }
         }          }
   #endif
 #ifdef USE_PAM  #ifdef USE_PAM
         if (Enabled(&auth->conf.options, AUTH_CONF_PAM_AUTH)) {          if (Enabled(&auth->conf.options, AUTH_CONF_PAM_AUTH)) {
                 auth->params.authentic = AUTH_CONF_PAM_AUTH;                  auth->params.authentic = AUTH_CONF_PAM_AUTH;
Line 1274  AuthAsyncFinish(void *arg, int was_canceled) Line 1299  AuthAsyncFinish(void *arg, int was_canceled)
         if (was_canceled)          if (was_canceled)
                 Log(LG_AUTH2, ("[%s] AUTH: Thread was canceled", auth->info.lnkname));                  Log(LG_AUTH2, ("[%s] AUTH: Thread was canceled", auth->info.lnkname));
   
   #ifdef USE_RADIUS
         /* cleanup */          /* cleanup */
         RadiusClose(auth);          RadiusClose(auth);
   #endif
   
         if (was_canceled) {          if (was_canceled) {
                 AuthDataDestroy(auth);                  AuthDataDestroy(auth);
Line 1948  static const char * Line 1975  static const char *
 AuthCode(int proto, u_char code, char *buf, size_t len)  AuthCode(int proto, u_char code, char *buf, size_t len)
 {  {
         switch (proto) {          switch (proto) {
   #ifdef USE_RADIUS
         case PROTO_EAP:          case PROTO_EAP:
                 return EapCode(code, buf, len);                  return EapCode(code, buf, len);
   
   #endif
         case PROTO_CHAP:          case PROTO_CHAP:
                 return ChapCode(code, buf, len);                  return ChapCode(code, buf, len);
   

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


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