Change session_zap to include a session_time argument.
authorkkalev <kkalev>
Tue, 15 Feb 2005 18:28:11 +0000 (18:28 +0000)
committerkkalev <kkalev>
Tue, 15 Feb 2005 18:28:11 +0000 (18:28 +0000)
In simultaneous-use check in rlm_sql, don't set default protocol to PPP but
rather try to find it

src/include/radiusd.h
src/main/session.c
src/modules/rlm_radutmp/rlm_radutmp.c
src/modules/rlm_radutmp/rlm_radutmp2.c
src/modules/rlm_sql/rlm_sql.c

index a382cbb..db496db 100644 (file)
@@ -312,7 +312,7 @@ int         rad_check_ts(uint32_t nasaddr, unsigned int port, const char *user,
 int            session_zap(REQUEST *request, uint32_t nasaddr,
                            unsigned int port, const char *user,
                            const char *sessionid, uint32_t cliaddr,
-                           char proto);
+                           char proto,int session_time);
 
 /* radiusd.c */
 #ifndef _LIBRADIUS
index 02ef411..cc4666d 100644 (file)
@@ -46,7 +46,8 @@
 /* End a session by faking a Stop packet to all accounting modules */
 int session_zap(REQUEST *request, uint32_t nasaddr, unsigned int port,
                const char *user,
-               const char *sessionid, uint32_t cliaddr, char proto)
+               const char *sessionid, uint32_t cliaddr, char proto,
+               int session_time)
 {
        REQUEST *stopreq;
        VALUE_PAIR *vp, *userpair;
@@ -97,7 +98,7 @@ int session_zap(REQUEST *request, uint32_t nasaddr, unsigned int port,
        }
        if(cliaddr != 0)
                IPPAIR(PW_FRAMED_IP_ADDRESS, cliaddr);
-       INTPAIR(PW_ACCT_SESSION_TIME, 0);
+       INTPAIR(PW_ACCT_SESSION_TIME, session_time);
        INTPAIR(PW_ACCT_INPUT_OCTETS, 0);
        INTPAIR(PW_ACCT_OUTPUT_OCTETS, 0);
        INTPAIR(PW_ACCT_INPUT_PACKETS, 0);
index fd08d64..16fe27b 100644 (file)
@@ -736,7 +736,7 @@ static int radutmp_checksimul(void *instance, REQUEST *request)
                                session_zap(request,
                                            u.nas_address, u.nas_port, login,
                                            session_id, u.framed_address,
-                                           u.proto);
+                                           u.proto,0);
                        }
                }
        }
index 5840184..4688a12 100644 (file)
@@ -1492,7 +1492,7 @@ static int radutmp_checksimul(void *instance, REQUEST *request)
                                session_zap(request,
                                            u.nas_address, u.nas_port, login,
                                            session_id, u.framed_address,
-                                           u.proto);
+                                           u.proto,0);
                        }
                }
        }
index 08601ea..e9fdb12 100644 (file)
@@ -1479,17 +1479,23 @@ static int rlm_sql_checksimul(void *instance, REQUEST * request) {
                          *      Stale record - zap it.
                          */
                        uint32_t framed_addr = 0;
-                       char proto = 'P';
+                       char proto = 0;
+                       int sess_time = 0;
 
                        if (row[5])
                                framed_addr = inet_addr(row[5]);
-                       if (row[7])
-                               if (strcmp(row[7],"SLIP") == 0)
+                       if (row[7]){
+                               if (strcmp(row[7],"PPP") == 0)
+                                       proto = 'P';
+                               else if (strcmp(row[7],"SLIP") == 0)
                                        proto = 'S';
+                       }
+                       if (row[8])
+                               sess_time = atoi(row[8]);
 
                        session_zap(request,
                                    nas_addr,nas_port,row[2],row[1],
-                                   framed_addr, proto);
+                                   framed_addr, proto, sess_time);
                }
        }