From 67af795b70319ac8972c86060ed8346b421fc75b Mon Sep 17 00:00:00 2001 From: Brendan O'Dea Date: Sat, 3 Jun 2006 08:16:46 +0000 Subject: [PATCH 1/1] kludge around problem with Netgear DM602 authentication --- Changes | 1 + ppp.c | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Changes b/Changes index 0029cfd..7927769 100644 --- a/Changes +++ b/Changes @@ -4,6 +4,7 @@ - Add Multilink support from Khaled Al Hamwi. - Remove non-working setuid option. - Convert manual.html to Docbook. +- Kludge around problem with Netgear DM602 authentication. * Tue Apr 18 2006 Brendan O'Dea 2.1.18 - Don't shutdown on TerminateReq, wait for CDN. diff --git a/ppp.c b/ppp.c index c369f37..8c1c9a3 100644 --- a/ppp.c +++ b/ppp.c @@ -1,6 +1,6 @@ // L2TPNS PPP Stuff -char const *cvs_id_ppp = "$Id: ppp.c,v 1.100 2006-04-27 09:53:50 bodea Exp $"; +char const *cvs_id_ppp = "$Id: ppp.c,v 1.101 2006-06-03 08:16:46 bodea Exp $"; #include #include @@ -179,16 +179,24 @@ void processchap(sessionidt s, tunnelidt t, uint8_t *p, uint16_t l) return; } - r = sess_local[s].radius; - if (!r) + if (session[s].ppp.phase != Authenticate) { - LOG(3, s, t, "Unexpected CHAP message\n"); + LOG(2, s, t, "CHAP ignored in %s phase\n", ppp_phase(session[s].ppp.phase)); return; } - if (session[s].ppp.phase != Authenticate) + r = sess_local[s].radius; + if (!r) { - LOG(2, s, t, "CHAP ignored in %s phase\n", ppp_phase(session[s].ppp.phase)); + LOG(3, s, t, "Unexpected CHAP message\n"); + + // Some modems (Netgear DM602, possibly others) persist in using CHAP even + // after ACKing our ConfigReq for PAP. + if (sess_local[s].lcp_authtype == AUTHPAP && config->radius_authtypes & AUTHCHAP) + { + sess_local[s].lcp_authtype = AUTHCHAP; + sendchap(s, t); + } return; } -- 2.20.1