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
/* 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;
}
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);
session_zap(request,
u.nas_address, u.nas_port, login,
session_id, u.framed_address,
- u.proto);
+ u.proto,0);
}
}
}
session_zap(request,
u.nas_address, u.nas_port, login,
session_id, u.framed_address,
- u.proto);
+ u.proto,0);
}
}
}
* 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);
}
}