/[radius]/radius/radiusd/files.c
ViewVC logotype

Diff of /radius/radiusd/files.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.82 by gray, Sun Sep 28 22:17:12 2003 UTC revision 1.83 by gray, Tue Sep 30 15:28:43 2003 UTC
# Line 188  struct temp_list { Line 188  struct temp_list {
188    
189  int  int
190  add_pairlist(struct temp_list *closure, char *filename, int line,  add_pairlist(struct temp_list *closure, char *filename, int line,
191               char *name, VALUE_PAIR *lhs, VALUE_PAIR *rhs)               char *name, VALUE_PAIR *lhs, VALUE_PAIR *rhs)
192  {  {
193          MATCHING_RULE *pl;          MATCHING_RULE *pl;
194                    
# Line 298  static int match_user(User_symbol *sym, Line 298  static int match_user(User_symbol *sym,
298   */   */
299  int  int
300  user_find_sym(char *name, RADIUS_REQ *req,  user_find_sym(char *name, RADIUS_REQ *req,
301                VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)                VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)
302  {  {
303          int found = 0;          int found = 0;
304          User_symbol *sym;          User_symbol *sym;
# Line 320  user_find_sym(char *name, RADIUS_REQ *re Line 320  user_find_sym(char *name, RADIUS_REQ *re
320    
321  int  int
322  match_user(User_symbol *sym, RADIUS_REQ *req,  match_user(User_symbol *sym, RADIUS_REQ *req,
323             VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)             VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)
324  {  {
325          VALUE_PAIR *p;          VALUE_PAIR *p;
326          VALUE_PAIR *check_tmp;          VALUE_PAIR *check_tmp;
# Line 390  match_user(User_symbol *sym, RADIUS_REQ Line 390  match_user(User_symbol *sym, RADIUS_REQ
390   */   */
391  int  int
392  user_find(char *name, RADIUS_REQ *req,  user_find(char *name, RADIUS_REQ *req,
393            VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)            VALUE_PAIR **check_pairs, VALUE_PAIR **reply_pairs)
394  {  {
395          int found = 0;          int found = 0;
396    
# Line 487  nextkn(char **sptr, char *token, int tok Line 487  nextkn(char **sptr, char *token, int tok
487                                  }                                  }
488                                  ++*sptr;                                  ++*sptr;
489                                  toksize--;                                  toksize--;
490                          } else if (**sptr == '"') {                          } else if (**sptr == '"') {
491                                  ++*sptr;                                  ++*sptr;
492                                  break;                                  break;
493                          } else                          } else
494                                  *token++ = *(*sptr)++;                                  *token++ = *(*sptr)++;
495                  }                  }
# Line 550  userparse(char *buffer, VALUE_PAIR **fir Line 550  userparse(char *buffer, VALUE_PAIR **fir
550                          break;                          break;
551                                                    
552                  case PS_RHS:                  case PS_RHS:
553                          pair = install_pair("<stdin>", 0, attr->name,                          pair = install_pair("<stdin>", 0, attr->name,
554                                               op, token);                                               op, token);
555                          if (!pair) {                          if (!pair) {
556                                  snprintf(errbuf, sizeof(errbuf),                                  snprintf(errbuf, sizeof(errbuf),
557                                           _("install_pair failed on %s"),                                           _("install_pair failed on %s"),
558                                           attr->name);                                           attr->name);
559                                  return -1;                                  return -1;
560                          }                          }
561                          avl_merge(first_pair, &pair);                          avl_merge(first_pair, &pair);
562                          state = PS_END;                          state = PS_END;
563                          break;                          break;
# Line 596  hints_setup(RADIUS_REQ *req) Line 596  hints_setup(RADIUS_REQ *req)
596          MATCHING_RULE   *i;          MATCHING_RULE   *i;
597          int             matched = 0;          int             matched = 0;
598    
599          /* Add Proxy-Replied pair if necessary */          /* Add Proxy-Replied pair if necessary */
600          switch (req->code) {          switch (req->code) {
601          case RT_AUTHENTICATION_ACK:          case RT_AUTHENTICATION_ACK:
602          case RT_AUTHENTICATION_REJECT:          case RT_AUTHENTICATION_REJECT:
603          case RT_ACCOUNTING_RESPONSE:          case RT_ACCOUNTING_RESPONSE:
604          case RT_ACCESS_CHALLENGE:          case RT_ACCESS_CHALLENGE:
605                  tmp = avp_create_integer(DA_PROXY_REPLIED, 1);                  tmp = avp_create_integer(DA_PROXY_REPLIED, 1);
606                  avl_merge(&request_pairs, &tmp);                  avl_merge(&request_pairs, &tmp);
607                  avp_free(tmp);                  avp_free(tmp);
608                  break;                  break;
609    
610          case RT_STATUS_SERVER:          case RT_STATUS_SERVER:
611                  return 0;                  return 0;
612          }          }
613                    
614          if (hints == NULL)          if (hints == NULL)
615                  return 0;                  return 0;
616    
# Line 618  hints_setup(RADIUS_REQ *req) Line 618  hints_setup(RADIUS_REQ *req)
618           *      Check for valid input, zero length names not permitted           *      Check for valid input, zero length names not permitted
619           */           */
620          if ((name_pair = avl_find(request_pairs, DA_USER_NAME)) == NULL) {          if ((name_pair = avl_find(request_pairs, DA_USER_NAME)) == NULL) {
621                  name_pair = avp_create_string(DA_USER_NAME, "");                  name_pair = avp_create_string(DA_USER_NAME, "");
622                  orig_name_pair = NULL;                  orig_name_pair = NULL;
623          } else {          } else {
624                  orig_name_pair = avp_create_string(DA_ORIG_USER_NAME,                  orig_name_pair = avp_create_string(DA_ORIG_USER_NAME,
625                                                     name_pair->avp_strvalue);                                                     name_pair->avp_strvalue);
626          }          }
627    
628          debug(1, ("called for `%s'", name_pair->avp_strvalue));          debug(1, ("called for `%s'", name_pair->avp_strvalue));
629                    
# Line 680  hints_setup(RADIUS_REQ *req) Line 680  hints_setup(RADIUS_REQ *req)
680                                  radlog(L_ERR, "hints:%d: %s(): %s",                                  radlog(L_ERR, "hints:%d: %s(): %s",
681                                         i->lineno,                                         i->lineno,
682                                         tmp->avp_strvalue,                                         tmp->avp_strvalue,
683                                         _("not defined"));                                         _("not defined"));
684                          }                          }
685                  }                  }
686    
# Line 707  hints_setup(RADIUS_REQ *req) Line 707  hints_setup(RADIUS_REQ *req)
707          }          }
708    
709          if (matched) {          if (matched) {
710                  if (orig_name_pair)                  if (orig_name_pair)
711                          avl_add_pair(&request_pairs, orig_name_pair);                          avl_add_pair(&request_pairs, orig_name_pair);
712                  else                  else
713                          avl_add_pair(&request_pairs, name_pair);                          avl_add_pair(&request_pairs, name_pair);
714          } else {          } else {
715                  if (orig_name_pair)                  if (orig_name_pair)
716                          avp_free(orig_name_pair);                          avp_free(orig_name_pair);
717                  else                  else
718                          avp_free(name_pair);                          avp_free(name_pair);
719          }          }
720    
721          req->request = request_pairs;          req->request = request_pairs;
722                    
723          return 0;          return 0;
724  }  }
725    
# Line 783  huntgroup_access(RADIUS_REQ *radreq) Line 783  huntgroup_access(RADIUS_REQ *radreq)
783                          radlog(L_ERR, "huntgroups:%d: %s(): %s",                          radlog(L_ERR, "huntgroups:%d: %s(): %s",
784                                 pl->lineno,                                 pl->lineno,
785                                 pair->avp_strvalue,                                 pair->avp_strvalue,
786                                 _("not defined"));                                 _("not defined"));
787                  }                  }
788          }          }
789  #endif    #endif  
# Line 811  read_naslist_file(char *file) Line 811  read_naslist_file(char *file)
811  /*ARGSUSED*/  /*ARGSUSED*/
812  int  int
813  read_clients_entry(void *u ARG_UNUSED, int fc, char **fv,  read_clients_entry(void *u ARG_UNUSED, int fc, char **fv,
814                     char *file, int lineno)                     char *file, int lineno)
815  {  {
816          CLIENT *cp;          CLIENT *cp;
817                    
818          if (fc != 2) {          if (fc != 2) {
819                  radlog(L_ERR, "%s:%d: %s",                  radlog(L_ERR, "%s:%d: %s",
820                         file, lineno,                         file, lineno,
821                         _("wrong number of fields"));                         _("wrong number of fields"));
822                  return -1;                  return -1;
823          }          }
824    
# Line 829  read_clients_entry(void *u ARG_UNUSED, i Line 829  read_clients_entry(void *u ARG_UNUSED, i
829          if (fc == 3)          if (fc == 3)
830                  STRING_COPY(cp->shortname, fv[2]);                  STRING_COPY(cp->shortname, fv[2]);
831          ip_gethostname(cp->ipaddr, cp->longname, sizeof(cp->longname));          ip_gethostname(cp->ipaddr, cp->longname, sizeof(cp->longname));
832          list_append(clients, cp);          list_append(clients, cp);
833          return 0;          return 0;
834  }  }
835    
# Line 837  static int Line 837  static int
837  client_free(void *item, void *data ARG_UNUSED)  client_free(void *item, void *data ARG_UNUSED)
838  {  {
839          CLIENT *cl = item;          CLIENT *cl = item;
840          efree(cl->secret);          efree(cl->secret);
841          efree(cl);          efree(cl);
842          return 0;          return 0;
843  }  }
844    
845  /*  /*
# Line 848  client_free(void *item, void *data ARG_U Line 848  client_free(void *item, void *data ARG_U
848  int  int
849  read_clients_file(char *file)  read_clients_file(char *file)
850  {  {
851          list_destroy(&clients, client_free, NULL);          list_destroy(&clients, client_free, NULL);
852          clients = list_create();          clients = list_create();
853          return read_raddb_file(file, 1, read_clients_entry, NULL);          return read_raddb_file(file, 1, read_clients_entry, NULL);
854  }  }
855    
# Line 861  CLIENT * Line 861  CLIENT *
861  client_lookup_ip(UINT4 ipaddr)  client_lookup_ip(UINT4 ipaddr)
862  {  {
863          CLIENT *cl;          CLIENT *cl;
864          ITERATOR *itr = iterator_create(clients);          ITERATOR *itr = iterator_create(clients);
865    
866          if (!itr)          if (!itr)
867                  return NULL;                  return NULL;
868          for (cl = iterator_first(itr); cl; cl = iterator_next(itr))          for (cl = iterator_first(itr); cl; cl = iterator_next(itr))
869                  if (ipaddr == cl->ipaddr)                  if (ipaddr == cl->ipaddr)
870                          break;                          break;
871          iterator_destroy(&itr);          iterator_destroy(&itr);
872          return cl;          return cl;
873  }  }
874    
# Line 901  client_lookup_name(UINT4 ipaddr, char *b Line 901  client_lookup_name(UINT4 ipaddr, char *b
901  /*ARGSUSED*/  /*ARGSUSED*/
902  int  int
903  read_nastypes_entry(void *u ARG_UNUSED, int fc, char **fv,  read_nastypes_entry(void *u ARG_UNUSED, int fc, char **fv,
904                      char *file, int lineno)                      char *file, int lineno)
905  {  {
906          RADCK_TYPE *mp;          RADCK_TYPE *mp;
907          int method;          int method;
908    
909          if (fc < 2) {          if (fc < 2) {
910                  radlog(L_ERR, "%s:%d: %s", file, lineno,                  radlog(L_ERR, "%s:%d: %s", file, lineno,
911                         _("too few fields"));                         _("too few fields"));
912                  return -1;                  return -1;
913          }          }
914    
# Line 928  read_nastypes_entry(void *u ARG_UNUSED, Line 928  read_nastypes_entry(void *u ARG_UNUSED,
928          mp->method = method;          mp->method = method;
929          if (fc > 2)          if (fc > 2)
930                  mp->args = envar_parse_argcv(fc-2, &fv[2]);                  mp->args = envar_parse_argcv(fc-2, &fv[2]);
931          else          else
932                  mp->args = NULL;                  mp->args = NULL;
933          list_append(radck_type, mp);          list_append(radck_type, mp);
934          return 0;          return 0;
# Line 1632  reload_data(enum reload_what what, int * Line 1632  reload_data(enum reload_what what, int *
1632    
1633          case reload_naslist:          case reload_naslist:
1634                  /*FIXME*/                  /*FIXME*/
1635                  path = mkfilename(radius_dir, RADIUS_NASTYPES);                  path = mkfilename(radius_dir, RADIUS_NASTYPES);
1636                  read_nastypes_file(path);                  read_nastypes_file(path);
1637                  efree(path);                  efree(path);
1638                  /*EMXIF*/                  /*EMXIF*/
1639                    
1640                  path = mkfilename(radius_dir, RADIUS_NASLIST);                  path = mkfilename(radius_dir, RADIUS_NASLIST);
1641                  if (read_naslist_file(path) < 0)                  if (read_naslist_file(path) < 0)
1642                          rc = 1;                          rc = 1;
# Line 1666  reload_data(enum reload_what what, int * Line 1666  reload_data(enum reload_what what, int *
1666  #endif  #endif
1667    
1668          case reload_rewrite:          case reload_rewrite:
1669                    rewrite_load_all();
1670                  break;                  break;
1671                                    
1672          default:          default:

Legend:
Removed from v.1.82  
changed lines
  Added in v.1.83

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26