summaryrefslogtreecommitdiff
path: root/accel-pptpd/radius/acct.c
diff options
context:
space:
mode:
authorKozlov Dmitry <dima@server>2010-10-19 13:08:48 +0400
committerKozlov Dmitry <dima@server>2010-10-19 13:08:48 +0400
commitb61784a785b48429fe0a75fbcbb9d867eee509f5 (patch)
treec97d5fb3c198b686717099d7e9ad06c4a6a815f0 /accel-pptpd/radius/acct.c
parentf7ac3aa1be2fe2a5bf987728e98544c4a20e57fb (diff)
downloadaccel-ppp-xebd-b61784a785b48429fe0a75fbcbb9d867eee509f5.tar.gz
accel-ppp-xebd-b61784a785b48429fe0a75fbcbb9d867eee509f5.zip
radius: implemented Acct-Terminate-Cause attribute
Diffstat (limited to 'accel-pptpd/radius/acct.c')
-rw-r--r--accel-pptpd/radius/acct.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/accel-pptpd/radius/acct.c b/accel-pptpd/radius/acct.c
index 0c914cf..9ebd196 100644
--- a/accel-pptpd/radius/acct.c
+++ b/accel-pptpd/radius/acct.c
@@ -193,6 +193,24 @@ void rad_acct_stop(struct radius_pd_t *rpd)
if (rpd->acct_req->timeout.tpd)
triton_timer_del(&rpd->acct_req->timeout);
+ switch (rpd->ppp->terminate_cause) {
+ case TERM_USER_REQUEST:
+ rad_packet_add_val(rpd->acct_req->pack, "Acct-Terminate-Cause", "User-Request");
+ break;
+ case TERM_SESSION_TIMEOUT:
+ rad_packet_add_val(rpd->acct_req->pack, "Acct-Terminate-Cause", "Session-Timeout");
+ break;
+ case TERM_ADMIN_RESET:
+ rad_packet_add_val(rpd->acct_req->pack, "Acct-Terminate-Cause", "Admin-Reset");
+ break;
+ case TERM_USER_ERROR:
+ case TERM_AUTH_ERROR:
+ rad_packet_add_val(rpd->acct_req->pack, "Acct-Terminate-Cause", "User-Error");
+ break;
+ case TERM_NAS_ERROR:
+ rad_packet_add_val(rpd->acct_req->pack, "Acct-Terminate-Cause", "NAS-Error");
+ break;
+ }
rad_packet_change_val(rpd->acct_req->pack, "Acct-Status-Type", "Stop");
req_set_stat(rpd->acct_req, rpd->ppp);
req_set_RA(rpd->acct_req, conf_acct_secret);