summaryrefslogtreecommitdiff
path: root/accel-pppd/radius
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2011-01-26 22:47:10 +0300
committerDmitry Kozlov <xeb@mail.ru>2011-01-26 22:47:10 +0300
commit419de8f6910e4fd5d442068ad5ae41b530169470 (patch)
treef28b69928983f8c772f40e873ce571379e9fa546 /accel-pppd/radius
parentb997d19f3b6e3087bffb072dd326c4b5311143b5 (diff)
downloadaccel-ppp-xebd-419de8f6910e4fd5d442068ad5ae41b530169470.tar.gz
accel-ppp-xebd-419de8f6910e4fd5d442068ad5ae41b530169470.zip
dynamicaly check if radius module loaded (so not more require to rebuild project without RADIUS to switch to chap-secrets)
Diffstat (limited to 'accel-pppd/radius')
-rw-r--r--accel-pppd/radius/radius.c9
-rw-r--r--accel-pppd/radius/radius_p.h3
2 files changed, 11 insertions, 1 deletions
diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c
index 04de1b7..f371598 100644
--- a/accel-pppd/radius/radius.c
+++ b/accel-pppd/radius/radius.c
@@ -146,6 +146,9 @@ static int check(struct pwdb_t *pwdb, struct ppp_t *ppp, const char *username, i
va_end(args);
+ if (r == PWDB_SUCCESS)
+ rpd->authenticated = 1;
+
return r;
}
@@ -192,6 +195,9 @@ static void ppp_starting(struct ppp_t *ppp)
static void ppp_acct_start(struct ppp_t *ppp)
{
struct radius_pd_t *rpd = find_pd(ppp);
+
+ if (!rpd->authenticated)
+ return;
if (rad_acct_start(rpd)) {
ppp_terminate(rpd->ppp, TERM_NAS_ERROR, 0);
@@ -207,6 +213,9 @@ static void ppp_finishing(struct ppp_t *ppp)
{
struct radius_pd_t *rpd = find_pd(ppp);
+ if (!rpd->authenticated)
+ return;
+
rad_acct_stop(rpd);
}
static void ppp_finished(struct ppp_t *ppp)
diff --git a/accel-pppd/radius/radius_p.h b/accel-pppd/radius/radius_p.h
index 71c1a63..e539dd8 100644
--- a/accel-pppd/radius/radius_p.h
+++ b/accel-pppd/radius/radius_p.h
@@ -15,6 +15,7 @@ struct radius_pd_t
struct ppp_pd_t pd;
struct ppp_t *ppp;
pthread_mutex_t lock;
+ int authenticated:1;
struct rad_req_t *auth_req;
struct rad_req_t *acct_req;
@@ -37,7 +38,7 @@ struct radius_pd_t
int attr_class_len;
uint8_t *attr_state;
int attr_state_len;
- int termination_action;
+ int termination_action;
struct list_head plugin_list;
};