summaryrefslogtreecommitdiff
path: root/accel-pptpd/ppp/ppp.c
diff options
context:
space:
mode:
authorKozlov Dmitry <dima@server>2010-10-14 19:12:53 +0400
committerKozlov Dmitry <dima@server>2010-10-14 19:12:53 +0400
commit04c623f7a645d0decae6ba73ba19650aaec3c497 (patch)
tree5c986653ca593e9de93edeac2b35654d5164c2af /accel-pptpd/ppp/ppp.c
parentf2cca0f357cebb8aedc43673809cae396a921c98 (diff)
downloadaccel-ppp-04c623f7a645d0decae6ba73ba19650aaec3c497.tar.gz
accel-ppp-04c623f7a645d0decae6ba73ba19650aaec3c497.zip
fixed bug: incorrect handling of mppe ConfNak
improved ccp handling
Diffstat (limited to 'accel-pptpd/ppp/ppp.c')
-rw-r--r--accel-pptpd/ppp/ppp.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/accel-pptpd/ppp/ppp.c b/accel-pptpd/ppp/ppp.c
index 4acf451..9ba899f 100644
--- a/accel-pptpd/ppp/ppp.c
+++ b/accel-pptpd/ppp/ppp.c
@@ -312,6 +312,27 @@ cont:
}
}
+void ppp_recv_proto_rej(struct ppp_t *ppp, uint16_t proto)
+{
+ struct ppp_handler_t *ppp_h;
+
+ list_for_each_entry(ppp_h, &ppp->chan_handlers, entry) {
+ if (ppp_h->proto == proto) {
+ if (ppp_h->recv_proto_rej)
+ ppp_h->recv_proto_rej(ppp_h);
+ return;
+ }
+ }
+
+ list_for_each_entry(ppp_h, &ppp->unit_handlers, entry) {
+ if (ppp_h->proto == proto) {
+ if (ppp_h->recv_proto_rej)
+ ppp_h->recv_proto_rej(ppp_h);
+ return;
+ }
+ }
+}
+
void __export ppp_layer_started(struct ppp_t *ppp, struct ppp_layer_data_t *d)
{
struct layer_node_t *n = d->node;
@@ -410,7 +431,7 @@ static int get_layer_order(const char *name)
if (!strcmp(name,"lcp")) return 0;
if (!strcmp(name,"auth")) return 1;
if (!strcmp(name,"ccp")) return 2;
- if (!strcmp(name,"ipcp")) return 3;
+ if (!strcmp(name,"ipcp")) return 2;
return -1;
}