summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accel-pppd/auth/auth_chap_md5.c1
-rw-r--r--accel-pppd/auth/auth_mschap_v1.c1
-rw-r--r--accel-pppd/auth/auth_mschap_v2.c1
-rw-r--r--accel-pppd/auth/auth_pap.c1
-rw-r--r--accel-pppd/ppp/ppp_auth.c8
-rw-r--r--accel-pppd/ppp/ppp_auth.h1
6 files changed, 11 insertions, 2 deletions
diff --git a/accel-pppd/auth/auth_chap_md5.c b/accel-pppd/auth/auth_chap_md5.c
index de7f741..87d5eda 100644
--- a/accel-pppd/auth/auth_chap_md5.c
+++ b/accel-pppd/auth/auth_chap_md5.c
@@ -100,6 +100,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp)
memset(d, 0, sizeof(*d));
d->auth.proto = PPP_CHAP;
+ d->auth.len = 1;
d->ppp = ppp;
return &d->auth;
diff --git a/accel-pppd/auth/auth_mschap_v1.c b/accel-pppd/auth/auth_mschap_v1.c
index 23b0f0e..d00e1a7 100644
--- a/accel-pppd/auth/auth_mschap_v1.c
+++ b/accel-pppd/auth/auth_mschap_v1.c
@@ -101,6 +101,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp)
memset(d, 0, sizeof(*d));
d->auth.proto = PPP_CHAP;
+ d->auth.len = 1;
d->ppp = ppp;
return &d->auth;
diff --git a/accel-pppd/auth/auth_mschap_v2.c b/accel-pppd/auth/auth_mschap_v2.c
index 66e17f2..1c8e444 100644
--- a/accel-pppd/auth/auth_mschap_v2.c
+++ b/accel-pppd/auth/auth_mschap_v2.c
@@ -105,6 +105,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp)
memset(d, 0, sizeof(*d));
d->auth.proto = PPP_CHAP;
+ d->auth.len = 1;
d->ppp = ppp;
return &d->auth;
diff --git a/accel-pppd/auth/auth_pap.c b/accel-pppd/auth/auth_pap.c
index a2303d1..7becc47 100644
--- a/accel-pppd/auth/auth_pap.c
+++ b/accel-pppd/auth/auth_pap.c
@@ -73,6 +73,7 @@ static struct auth_data_t* auth_data_init(struct ppp_t *ppp)
memset(d, 0, sizeof(*d));
d->auth.proto = PPP_PAP;
+ d->auth.len = 0;
d->ppp = ppp;
return &d->auth;
diff --git a/accel-pppd/ppp/ppp_auth.c b/accel-pppd/ppp/ppp_auth.c
index 33d0021..ab5200a 100644
--- a/accel-pppd/ppp/ppp_auth.c
+++ b/accel-pppd/ppp/ppp_auth.c
@@ -15,7 +15,6 @@
#include "memdebug.h"
static LIST_HEAD(auth_handlers);
-static int extra_opt_len = 0;
static int conf_noauth = 0;
static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp);
@@ -75,11 +74,12 @@ static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp)
struct ppp_auth_handler_t *h;
struct auth_data_t *d;
struct auth_layer_data_t *ad;
+ int auth_data_len = 0;
ad = container_of(ppp_find_layer_data(lcp->ppp, &auth_layer), typeof(*ad), ld);
ad->auth_opt.opt.id = CI_AUTH;
- ad->auth_opt.opt.len = 4 + extra_opt_len;
+ ad->auth_opt.opt.len = 4;
INIT_LIST_HEAD(&ad->auth_opt.auth_list);
@@ -90,8 +90,12 @@ static struct lcp_option_t *auth_init(struct ppp_lcp_t *lcp)
d = h->init(lcp->ppp);
d->h = h;
list_add_tail(&d->entry, &ad->auth_opt.auth_list);
+ if (auth_data_len < d->len)
+ auth_data_len = d->len;
}
+ ad->auth_opt.opt.len += auth_data_len;
+
return &ad->auth_opt.opt;
}
diff --git a/accel-pppd/ppp/ppp_auth.h b/accel-pppd/ppp/ppp_auth.h
index e9398c2..97dfa29 100644
--- a/accel-pppd/ppp/ppp_auth.h
+++ b/accel-pppd/ppp/ppp_auth.h
@@ -13,6 +13,7 @@ struct auth_data_t
struct list_head entry;
int proto;
int state;
+ int len;
struct ppp_auth_handler_t *h;
};