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

Diff of /radius/radiusd/radius.c

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

revision 1.42 by gray, Fri Apr 18 05:27:10 2003 UTC revision 1.43 by gray, Fri Apr 25 22:49:29 2003 UTC
# Line 153  radius_req_decode(struct sockaddr_in *sa Line 153  radius_req_decode(struct sockaddr_in *sa
153                                  inputsize);                                  inputsize);
154          if (!radreq)          if (!radreq)
155                  return 1;                  return 1;
156    
157          *output = radreq;          *output = radreq;
158          return 0;          return 0;
159  }  }
# Line 199  radius_req_cmp(void *adata, void *bdata) Line 200  radius_req_cmp(void *adata, void *bdata)
200          VALUE_PAIR *alist = NULL, *blist = NULL, *ap, *bp;          VALUE_PAIR *alist = NULL, *blist = NULL, *ap, *bp;
201          int rc;          int rc;
202          NAS *nas;          NAS *nas;
203    
204            if (proxy_cmp(a, b) == 0)
205                    return RCMP_PROXY;
206                    
207          if (a->ipaddr != b->ipaddr || a->code != b->code)          if (a->ipaddr != b->ipaddr || a->code != b->code)
208                  return 1;                  return RCMP_NE;
209                    
210          if (a->id == b->id          if (a->id == b->id
211              && memcmp(a->vector, b->vector, sizeof(a->vector)) == 0)              && memcmp(a->vector, b->vector, sizeof(a->vector)) == 0)
212                  return 0;                  return RCMP_EQ;
213    
214          if (nas = nas_request_to_nas(a))          if (nas = nas_request_to_nas(a))
215                  prop = envar_lookup_int(nas->args, "compare-atribute-flag", 0);                  prop = envar_lookup_int(nas->args, "compare-atribute-flag", 0);
# Line 229  radius_req_cmp(void *adata, void *bdata) Line 233  radius_req_cmp(void *adata, void *bdata)
233          }          }
234    
235          if (prop == 0)          if (prop == 0)
236                  return 1;                  return RCMP_NE;
237    
238          prop |= AP_REQ_CMP;          prop |= AP_REQ_CMP;
239          alist = _extract_pairs(a, prop);          alist = _extract_pairs(a, prop);
# Line 242  radius_req_cmp(void *adata, void *bdata) Line 246  radius_req_cmp(void *adata, void *bdata)
246    
247          avl_free(alist);          avl_free(alist);
248          avl_free(blist);          avl_free(blist);
249          return rc;          return rc == 0 ? RCMP_EQ : RCMP_NE;
250    }
251    
252    void
253    radius_req_update(void *req_ptr, void *data_ptr)
254    {
255            RADIUS_REQ *req = req_ptr;
256            RADIUS_UPDATE *upd = data_ptr;
257            RADIUS_SERVER *server;
258            REALM *realm;
259            int i;
260            
261            req->server_id = upd->proxy_id;
262            realm = realm_lookup_name(upd->realmname);
263            server = realm->queue->first_server;
264            for (i = 0; i < upd->server_no && server; i++)
265                    server = server->next;
266            req->server = server;
267  }  }
268    
269  void  void
# Line 321  radius_respond(REQUEST *req) Line 342  radius_respond(REQUEST *req)
342          case RT_ACCOUNTING_REQUEST:          case RT_ACCOUNTING_REQUEST:
343                  if (avl_find(radreq->request, DA_USER_NAME) == NULL)                  if (avl_find(radreq->request, DA_USER_NAME) == NULL)
344                          break;                          break;
345                  if (proxy_send(radreq, req->fd) != 0) {                  if (proxy_send(req) != 0) {
                         req->type = R_PROXY;  
346                          return 0;                          return 0;
347                  }                  }
348                  break;                  break;
# Line 331  radius_respond(REQUEST *req) Line 351  radius_respond(REQUEST *req)
351          case RT_AUTHENTICATION_REJECT:          case RT_AUTHENTICATION_REJECT:
352          case RT_ACCOUNTING_RESPONSE:          case RT_ACCOUNTING_RESPONSE:
353          case RT_ACCESS_CHALLENGE:          case RT_ACCESS_CHALLENGE:
354                  if (proxy_receive(radreq, req->fd) < 0) {                  if (!req->orig) {
355                            char buf[MAX_SHORTNAME];
356                            radlog_req(L_PROXY|L_ERR, radreq,
357                                       _("Unrecognized proxy reply from server %s, proxy ID %d"),
358                                       client_lookup_name(radreq->ipaddr,
359                                                          buf, sizeof buf),
360                                       radreq->id);
361                            return 1;
362                    }
363                    
364                    if (proxy_receive(radreq, req->orig->data, req->fd) < 0) {
365                          return 1;                          return 1;
366                  }                  }
367                  break;                  break;

Legend:
Removed from v.1.42  
changed lines
  Added in v.1.43

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