From 59a6e7a488a872bcf20b1fb4c6c2164f279d97ca Mon Sep 17 00:00:00 2001 From: bodea Date: Tue, 10 May 2005 09:57:19 +0000 Subject: [PATCH 1/1] sendchap on ConfigAck --- ppp.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/ppp.c b/ppp.c index 80dce17..b8973c7 100644 --- a/ppp.c +++ b/ppp.c @@ -1,6 +1,6 @@ // L2TPNS PPP Stuff -char const *cvs_id_ppp = "$Id: ppp.c,v 1.56 2005/05/10 09:47:23 bodea Exp $"; +char const *cvs_id_ppp = "$Id: ppp.c,v 1.57 2005/05/10 09:57:19 bodea Exp $"; #include #include @@ -355,7 +355,34 @@ void processlcp(tunnelidt t, sessionidt s, uint8_t *p, uint16_t l) if (*p == ConfigAck) { - LOG(3, s, t, "LCP: Discarding ConfigAck\n"); + int x = l - 4; + uint8_t *o = (p + 4); + int authtype = 0; + + LOG(3, s, t, "LCP: ConfigAck (%d bytes)...\n", l); + if (config->debug > 3) dumplcp(p, l); + + while (x > 2) + { + int type = o[0]; + int length = o[1]; + + if (length == 0 || type == 0 || x < length) break; + switch (type) + { + case 3: // Authentication-Protocol + { + int proto = ntohs(*(uint16_t *)(o + 2)); + if (proto == PPPCHAP && *(o + 4) == 5) + sendchap(t, s); + } + + break; + } + x -= length; + o += length; + } + session[s].flags |= SF_LCP_ACKED; } else if (*p == ConfigReq) -- 2.20.1