|
@@ -1329,13 +1329,19 @@ static int h_radius(int argc, unsigned char **argv){
|
|
|
if(strlen(argv[1]) > 63) argv[1][63] = 0;
|
|
if(strlen(argv[1]) > 63) argv[1][63] = 0;
|
|
|
strcpy(radiussecret, argv[1]);
|
|
strcpy(radiussecret, argv[1]);
|
|
|
for( nradservers=0; nradservers < MAXRADIUS && nradservers < argc -2; nradservers++){
|
|
for( nradservers=0; nradservers < MAXRADIUS && nradservers < argc -2; nradservers++){
|
|
|
|
|
+ char *s = 0;
|
|
|
|
|
+ if(strchr(argv[nradservers + 2], '/')){
|
|
|
|
|
+ *s = 0;
|
|
|
|
|
+ s++;
|
|
|
|
|
+ }
|
|
|
if( !getip46(46, argv[nradservers + 2], (struct sockaddr *)&radiuslist[nradservers].authaddr)) return 1;
|
|
if( !getip46(46, argv[nradservers + 2], (struct sockaddr *)&radiuslist[nradservers].authaddr)) return 1;
|
|
|
|
|
+ if( s && !getip46(46, s, (struct sockaddr *)&radiuslist[nradservers].localaddr)) return 2;
|
|
|
if(!*SAPORT(&radiuslist[nradservers].authaddr))*SAPORT(&radiuslist[nradservers].authaddr) = htons(1812);
|
|
if(!*SAPORT(&radiuslist[nradservers].authaddr))*SAPORT(&radiuslist[nradservers].authaddr) = htons(1812);
|
|
|
port = ntohs(*SAPORT(&radiuslist[nradservers].authaddr));
|
|
port = ntohs(*SAPORT(&radiuslist[nradservers].authaddr));
|
|
|
radiuslist[nradservers].logaddr = radiuslist[nradservers].authaddr;
|
|
radiuslist[nradservers].logaddr = radiuslist[nradservers].authaddr;
|
|
|
*SAPORT(&radiuslist[nradservers].logaddr) = htons(port+1);
|
|
*SAPORT(&radiuslist[nradservers].logaddr) = htons(port+1);
|
|
|
/*
|
|
/*
|
|
|
- bindaddr = conf.intsa;
|
|
|
|
|
|
|
+ bindaddr = radiuslist[nradservers].localaddr;
|
|
|
if ((radiuslist[nradservers].logsock = so._socket(SASOCK(&radiuslist[nradservers].logaddr), SOCK_DGRAM, 0)) < 0) return 2;
|
|
if ((radiuslist[nradservers].logsock = so._socket(SASOCK(&radiuslist[nradservers].logaddr), SOCK_DGRAM, 0)) < 0) return 2;
|
|
|
if (so._bind(radiuslist[nradservers].logsock, (struct sockaddr *)&bindaddr, SASIZE(&bindaddr))) return 3;
|
|
if (so._bind(radiuslist[nradservers].logsock, (struct sockaddr *)&bindaddr, SASIZE(&bindaddr))) return 3;
|
|
|
*/
|
|
*/
|