cleanup packet length handling
[l2tpns.git] / radius.c
index 1739c80..5634775 100644 (file)
--- a/radius.c
+++ b/radius.c
@@ -1,6 +1,6 @@
 // L2TPNS Radius Stuff
 
 // L2TPNS Radius Stuff
 
-char const *cvs_id_radius = "$Id: radius.c,v 1.7 2004/07/07 09:09:53 bodea Exp $";
+char const *cvs_id_radius = "$Id: radius.c,v 1.10 2004/09/02 04:18:07 fred_nerk Exp $";
 
 #include <time.h>
 #include <stdio.h>
 
 #include <time.h>
 #include <stdio.h>
@@ -345,7 +345,14 @@ void radiussend(u16 r, u8 state)
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
        *(u32 *) & addr.sin_addr = config->radiusserver[(radius[r].try - 1) % config->numradiusservers];
        memset(&addr, 0, sizeof(addr));
        addr.sin_family = AF_INET;
        *(u32 *) & addr.sin_addr = config->radiusserver[(radius[r].try - 1) % config->numradiusservers];
-       addr.sin_port = htons((state == RADIUSAUTH) ? RADPORT : RADAPORT);
+       {
+           // get radius port
+           u16 port = config->radiusport[(radius[r].try - 1) % config->numradiusservers];
+           // no need to define the accounting port for itself:
+           //  the accounting port is as far as I know always one more
+           //  than the auth port    JK 20040713
+           addr.sin_port = htons((state == RADIUSAUTH) ? port : port+1);
+       }
 
        log_hex(5, "RADIUS Send", b, (p - b));
        sendto(radfds[r & RADIUS_MASK], b, p - b, 0, (void *) &addr, sizeof(addr));
 
        log_hex(5, "RADIUS Send", b, (p - b));
        sendto(radfds[r & RADIUS_MASK], b, p - b, 0, (void *) &addr, sizeof(addr));
@@ -599,7 +606,7 @@ void processrad(u8 *buf, int len, char socket_index)
                        }
 
                        // Valid Session, set it up
                        }
 
                        // Valid Session, set it up
-                       session[s].sid = 0;
+                       session[s].unique_id = 0;
                        sessionsetup(t, s);
                }
                else
                        sessionsetup(t, s);
                }
                else
@@ -664,6 +671,6 @@ void radius_clean()
                                || !session[radius[i].session].opened
                                || session[radius[i].session].die
                                || session[radius[i].session].tunnel == 0)
                                || !session[radius[i].session].opened
                                || session[radius[i].session].die
                                || session[radius[i].session].tunnel == 0)
-                       radiusclear(i, 0);
+                       radiusclear(i, radius[i].session);
        }
 }
        }
 }