diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2010-10-28 01:02:37 +0400 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2010-10-28 01:02:37 +0400 |
commit | e1603a51f450ad7ee52fe89ef5d78b82845fdcc2 (patch) | |
tree | 02759aee4bbb3053bbc9c1be80af33585c356bda /accel-pptpd/ppp | |
parent | 04a57e858bed078548c4c8715aa3d35ba81401ae (diff) | |
download | accel-ppp-e1603a51f450ad7ee52fe89ef5d78b82845fdcc2.tar.gz accel-ppp-e1603a51f450ad7ee52fe89ef5d78b82845fdcc2.zip |
radius: rewrited Termination-Action attribute handling so it is rfc compliant now
Diffstat (limited to 'accel-pptpd/ppp')
-rw-r--r-- | accel-pptpd/ppp/ppp_auth.c | 18 | ||||
-rw-r--r-- | accel-pptpd/ppp/ppp_auth.h | 6 |
2 files changed, 20 insertions, 4 deletions
diff --git a/accel-pptpd/ppp/ppp_auth.c b/accel-pptpd/ppp/ppp_auth.c index 959dc2f..c993414 100644 --- a/accel-pptpd/ppp/ppp_auth.c +++ b/accel-pptpd/ppp/ppp_auth.c @@ -298,7 +298,7 @@ static void auth_layer_free(struct ppp_layer_data_t *ld) _free(ad); } -void __export auth_successed(struct ppp_t *ppp, char *username) +void __export ppp_auth_successed(struct ppp_t *ppp, char *username) { struct auth_layer_data_t *ad = container_of(ppp_find_layer_data(ppp, &auth_layer), typeof(*ad), ld); log_ppp_debug("auth_layer_started\n"); @@ -307,7 +307,7 @@ void __export auth_successed(struct ppp_t *ppp, char *username) triton_event_fire(EV_PPP_AUTHORIZED, ppp); } -void __export auth_failed(struct ppp_t *ppp) +void __export ppp_auth_failed(struct ppp_t *ppp) { ppp_terminate(ppp, TERM_AUTH_ERROR, 0); } @@ -318,6 +318,20 @@ int __export ppp_auth_register_handler(struct ppp_auth_handler_t *h) return 0; } +int __export ppp_auth_restart(struct ppp_t *ppp) +{ + struct auth_layer_data_t *ad = container_of(ppp_find_layer_data(ppp, &auth_layer), typeof(*ad), ld); + log_ppp_debug("ppp_auth_restart\n"); + + if (!ad->auth_opt.auth->h->restart) + return -1; + + if (ad->auth_opt.auth->h->restart(ppp, ad->auth_opt.auth)) + return -1; + + return 0; +} + static void __init ppp_auth_init() { ppp_register_layer("auth", &auth_layer); diff --git a/accel-pptpd/ppp/ppp_auth.h b/accel-pptpd/ppp/ppp_auth.h index fbd2017..ea12d9c 100644 --- a/accel-pptpd/ppp/ppp_auth.h +++ b/accel-pptpd/ppp/ppp_auth.h @@ -24,12 +24,14 @@ struct ppp_auth_handler_t int (*finish)(struct ppp_t*, struct auth_data_t*); void (*free)(struct ppp_t*,struct auth_data_t*); int (*check)(uint8_t *); + int (*restart)(struct ppp_t*,struct auth_data_t*); }; int ppp_auth_register_handler(struct ppp_auth_handler_t*); -void auth_successed(struct ppp_t *ppp, char *username); -void auth_failed(struct ppp_t *ppp); +void ppp_auth_successed(struct ppp_t *ppp, char *username); +void ppp_auth_failed(struct ppp_t *ppp); +int ppp_auth_restart(struct ppp_t *ppp); #endif |