diff -ruN freeradius-1.1.7.orig/src/include/radiusd.h freeradius-1.1.7/src/include/radiusd.h --- freeradius-1.1.7.orig/src/include/radiusd.h 2007-06-12 01:31:45.000000000 -0800 +++ freeradius-1.1.7/src/include/radiusd.h 2007-09-20 16:06:57.000000000 -0800 @@ -295,7 +295,7 @@ int session_zap(REQUEST *request, uint32_t nasaddr, unsigned int port, const char *user, const char *sessionid, uint32_t cliaddr, - char proto); + char proto, const char *nas_ident); /* radiusd.c */ #ifndef _LIBRADIUS diff -ruN freeradius-1.1.7.orig/src/main/session.c freeradius-1.1.7/src/main/session.c --- freeradius-1.1.7.orig/src/main/session.c 2007-05-15 01:50:51.000000000 -0800 +++ freeradius-1.1.7/src/main/session.c 2007-09-20 16:08:45.000000000 -0800 @@ -46,7 +46,7 @@ /* 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, const char *nas_ident) { REQUEST *stopreq; VALUE_PAIR *vp, *userpair; @@ -85,6 +85,7 @@ IPPAIR(PW_NAS_IP_ADDRESS, nasaddr); INTPAIR(PW_ACCT_DELAY_TIME, 0); STRINGPAIR(PW_USER_NAME, user); + STRINGPAIR(PW_NAS_IDENTIFIER, nas_ident); userpair = vp; INTPAIR(PW_NAS_PORT, port); STRINGPAIR(PW_ACCT_SESSION_ID, sessionid); diff -ruN freeradius-1.1.7.orig/src/modules/rlm_radutmp/rlm_radutmp.c freeradius-1.1.7/src/modules/rlm_radutmp/rlm_radutmp.c --- freeradius-1.1.7.orig/src/modules/rlm_radutmp/rlm_radutmp.c 2007-04-07 14:40:00.000000000 -0800 +++ freeradius-1.1.7/src/modules/rlm_radutmp/rlm_radutmp.c 2007-09-20 16:15:18.000000000 -0800 @@ -589,6 +589,7 @@ rlm_radutmp_t *inst = instance; char login[256]; char filename[1024]; + char *nas_ident = NULL; ssize_t read_size; /* @@ -664,6 +665,8 @@ ipno = vp->lvalue; if ((vp = pairfind(request->packet->vps, PW_CALLING_STATION_ID)) != NULL) call_num = vp->strvalue; + if ((vp = pairfind(request->packet->vps, PW_NAS_IDENTIFIER)) != NULL) + nas_ident = vp->strvalue; /* * lock the file while reading/writing. @@ -744,7 +747,7 @@ session_zap(request, u.nas_address, u.nas_port, login, session_id, u.framed_address, - u.proto); + u.proto, nas_ident); } } } diff -ruN freeradius-1.1.7.orig/src/modules/rlm_sql/rlm_sql.c freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.c --- freeradius-1.1.7.orig/src/modules/rlm_sql/rlm_sql.c 2007-07-17 04:59:08.000000000 -0800 +++ freeradius-1.1.7/src/modules/rlm_sql/rlm_sql.c 2007-09-20 16:14:24.000000000 -0800 @@ -1131,6 +1131,7 @@ int ret; uint32_t nas_addr = 0; int nas_port = 0; + char *nas_ident = NULL; /* If simul_count_query is not defined, we don't do any checking */ if (inst->config->simul_count_query[0] == 0) { @@ -1206,6 +1207,8 @@ ipno = vp->lvalue; if ((vp = pairfind(request->packet->vps, PW_CALLING_STATION_ID)) != NULL) call_num = vp->strvalue; + if ((vp = pairfind(request->packet->vps, PW_NAS_IDENTIFIER)) != NULL) + nas_ident = vp->strvalue; while (rlm_sql_fetch_row(sqlsocket, inst) == 0) { @@ -1270,7 +1273,7 @@ session_zap(request, nas_addr,nas_port,row[2],row[1], - framed_addr, proto); + framed_addr, proto, nas_ident); } }