/[radius]/radius/radtest/main.c
ViewVC logotype

Diff of /radius/radtest/main.c

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

revision 1.29 by gray, Thu Jun 19 12:39:42 2003 UTC revision 1.30 by gray, Sat Jul 19 22:16:46 2003 UTC
# Line 439  var_print(Variable *var) Line 439  var_print(Variable *var)
439          }          }
440  }  }
441    
442  void  int
443  var_free(Variable *var)  var_free(Variable *var)
444  {  {
         if (var->name)  
                 return; /* named variables are not freed */  
445          switch (var->type) {          switch (var->type) {
446          case String:          case String:
447                  efree(var->datum.string);                  efree(var->datum.string);
# Line 455  var_free(Variable *var) Line 453  var_free(Variable *var)
453  }  }
454    
455  void  void
456  radtest_send(int port, int code, Variable *var)  tempvar_free(Variable *var)
457    {
458            if (var->name)
459                    return; /* named variables are not freed */
460            var_free(var);
461    }
462    
463    void
464    radtest_send(int port, int code, Variable *var, Symtab *cntl)
465  {  {
466          RADIUS_REQ *auth;          RADIUS_REQ *auth;
467                    Variable *p;
468            
469          if (reply_list)          if (reply_list)
470                  avl_free(reply_list);                  avl_free(reply_list);
471          reply_list = NULL;          reply_list = NULL;
# Line 469  radtest_send(int port, int code, Variabl Line 476  radtest_send(int port, int code, Variabl
476                  return;                  return;
477          }          }
478    
479          auth = rad_clt_send(srv_queue,          if (!cntl) {
480                              port,                  auth = rad_clt_send(srv_queue,
481                              code, var->datum.vector);                                      port,
482          if (!auth)                                      code, var->datum.vector);
483                  return;          } else {
484                    int id;
485                    u_char vector[AUTH_VECTOR_LEN];
486                    int sflags = 0;
487                    int retry = 1;
488                    Variable *delay = (Variable*)sym_lookup(cntl, "delay");
489                    
490                    p = (Variable*)sym_lookup(cntl, "repeat");
491                    if (p)
492                            retry = p->datum.number;
493                    p = (Variable*)sym_lookup(cntl, "id");
494                    if (p) {
495                            sflags |= RADCLT_ID;
496                            id = p->datum.number;
497                    }
498                    p = (Variable*)sym_lookup(cntl, "keepauth");
499                    if (p && p->datum.number)
500                            sflags |= RADCLT_AUTHENTICATOR;
501                    auth = rad_clt_send0(srv_queue,
502                                         port,
503                                         code,
504                                         var->datum.vector,
505                                         0,
506                                         &id,
507                                         vector);
508                    while (--retry) {
509                            if (delay)
510                                    sleep(delay->datum.number);
511                            auth = rad_clt_send0(srv_queue,
512                                                 port,
513                                                 code,
514                                                 var->datum.vector,
515                                                 sflags,
516                                                 &id,
517                                                 vector);
518                    }
519            }
520    
521            if (!auth)
522                    return;
523          reply_code = auth->code;          reply_code = auth->code;
524          var = (Variable*)sym_lookup(vartab, "REPLY_CODE");          var = (Variable*)sym_lookup(vartab, "REPLY_CODE");
525          var->type = Integer;          var->type = Integer;

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

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