diff options
Diffstat (limited to 'net/ppp-mppe/patches/patch-bm')
-rw-r--r-- | net/ppp-mppe/patches/patch-bm | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/net/ppp-mppe/patches/patch-bm b/net/ppp-mppe/patches/patch-bm new file mode 100644 index 00000000000..1ae4d8431d9 --- /dev/null +++ b/net/ppp-mppe/patches/patch-bm @@ -0,0 +1,207 @@ +$NetBSD: patch-bm,v 1.1.1.1 1999/10/08 04:34:43 dbj Exp $ + +--- pppd/lcp.c.orig Wed May 12 17:33:32 1999 ++++ pppd/lcp.c Thu Jun 24 16:05:42 1999 +@@ -35,6 +35,8 @@ + #include "chap.h" + #include "magic.h" + ++extern bool refuse_chap; ++ + /* + * LCP-related command-line options. + */ +@@ -277,19 +279,47 @@ + wo->asyncmap = 0; + wo->neg_chap = 0; /* Set to 1 on server */ + wo->neg_upap = 0; /* Set to 1 on server */ +- wo->chap_mdtype = CHAP_DIGEST_MD5; ++ wo->use_digest = 1; ++#ifdef CHAPMS ++ if(wo->use_chapms_v2) ++ wo->chap_mdtype = CHAP_MICROSOFT_V2; ++ else if(wo->use_chapms) ++ wo->chap_mdtype = CHAP_MICROSOFT; ++ else ++#endif ++ if(wo->use_digest) ++ wo->chap_mdtype = CHAP_DIGEST_MD5; ++ else ++ refuse_chap = 1; + wo->neg_magicnumber = 1; + wo->neg_pcompression = 1; + wo->neg_accompression = 1; + wo->neg_lqr = 0; /* no LQR implementation yet */ ++#ifdef CBCP_SUPPORT ++ wo->neg_cbcp = 1; ++#else + wo->neg_cbcp = 0; ++#endif + + ao->neg_mru = 1; + ao->mru = MAXMRU; + ao->neg_asyncmap = 1; + ao->asyncmap = 0; + ao->neg_chap = 1; +- ao->chap_mdtype = CHAP_DIGEST_MD5; ++ ao->use_digest = 1; ++#ifdef CHAPMS ++ ao->use_chapms_v2 = ao->use_chapms = 1; ++ if(ao->use_chapms_v2) ++ ao->chap_mdtype = CHAP_MICROSOFT_V2; ++ else if(ao->use_chapms) ++ ao->chap_mdtype = CHAP_MICROSOFT; ++ else ++#else ++ if(ao->use_digest) ++ ao->chap_mdtype = CHAP_DIGEST_MD5; ++ else ++ refuse_chap = 1; ++#endif + ao->neg_upap = 1; + ao->neg_magicnumber = 1; + ao->neg_pcompression = 1; +@@ -557,6 +587,18 @@ + * NB: we only ask for one of CHAP and UPAP, even if we will + * accept either. + */ ++#ifdef CHAPMS ++ if(go->use_chapms_v2) ++ go->chap_mdtype = CHAP_MICROSOFT_V2; ++ else if(go->use_chapms) ++ go->chap_mdtype = CHAP_MICROSOFT; ++ else ++#endif ++ if(go->use_digest) ++ go->chap_mdtype = CHAP_DIGEST_MD5; ++ else ++ go->neg_chap = 0; ++ + return (LENCISHORT(go->neg_mru && go->mru != DEFMRU) + + LENCILONG(go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF) + + LENCICHAP(go->neg_chap) + +@@ -922,7 +964,34 @@ + * algorithm. If they can't do MD5, we'll have to stop + * asking for CHAP. + */ +- if (cichar != go->chap_mdtype) ++ if (go->chap_mdtype == CHAP_MICROSOFT_V2) ++ { ++ try.use_chapms_v2 = 0; ++ if(try.use_chapms) ++ try.chap_mdtype = CHAP_MICROSOFT; ++ else if(try.use_digest) ++ try.chap_mdtype = CHAP_DIGEST_MD5; ++ else ++ try.neg_chap = 0; ++ } ++ else if(go->chap_mdtype == CHAP_MICROSOFT) ++ { ++ try.use_chapms = 0; ++ if(try.use_digest) ++ try.chap_mdtype = CHAP_DIGEST_MD5; ++ else ++ try.neg_chap = 0; ++ } ++ else if(go->chap_mdtype == CHAP_DIGEST_MD5) ++ { ++ try.use_digest = 0; ++ try.neg_chap = 0; ++ } ++ else ++ try.neg_chap = 0; ++ if ((cichar != CHAP_MICROSOFT_V2) && ++ (cichar != CHAP_MICROSOFT) && ++ (cichar != CHAP_DIGEST_MD5)) + try.neg_chap = 0; + } else { + /* +@@ -1133,8 +1202,22 @@ + /* Check rejected value. */ \ + if (cishort != val || cichar != digest) \ + goto bad; \ +- try.neg = 0; \ +- try.neg_upap = 0; \ ++ switch(digest) \ ++ { \ ++ case CHAP_MICROSOFT_V2: \ ++ try.use_chapms_v2 = 0; \ ++ break; \ ++ case CHAP_MICROSOFT: \ ++ try.use_chapms = 0; \ ++ break; \ ++ case CHAP_DIGEST_MD5: \ ++ try.use_digest = 0; \ ++ } \ ++ if(!try.use_chapms_v2 && !try.use_chapms && !try.use_digest) \ ++ { \ ++ try.neg = 0; \ ++ try.neg_upap = 0; \ ++ } \ + } + #define REJCILONG(opt, neg, val) \ + if (go->neg && \ +@@ -1370,9 +1453,10 @@ + if (cichar != CHAP_DIGEST_MD5 + #ifdef CHAPMS + && cichar != CHAP_MICROSOFT ++ && cichar != CHAP_MICROSOFT_V2 + #endif + ) { +- orc = CONFNAK; ++ orc = CONFREJ; /* !!! CONFNAK !!! */ + PUTCHAR(CI_AUTHTYPE, nakp); + PUTCHAR(CILEN_CHAP, nakp); + PUTSHORT(PPP_CHAP, nakp); +@@ -1449,6 +1533,23 @@ + ho->magicnumber = cilong; + break; + ++#ifdef CBCP_SUPPORT ++ case CI_CALLBACK: ++ LCPDEBUG((LOG_INFO, "lcp_reqci: rcvd CBCP")); ++ if (!ao->neg_cbcp || ++ cilen != CILEN_CHAR) { ++ orc = CONFREJ; ++ break; ++ } ++ GETCHAR(cichar, p); ++ if(cichar != CBCP_OPT) ++ { ++ orc = CONFREJ; ++ break; ++ } ++ ho->neg_cbcp = 1; ++ break; ++#endif + + case CI_PCOMPRESSION: + if (!ao->neg_pcompression || +@@ -1721,20 +1822,23 @@ + } + } + break; ++#ifdef CBCP_SUPPORT + case CI_CALLBACK: +- if (olen >= CILEN_CHAR) { ++ if (olen == CILEN_CHAR) { ++ u_char cichar; + p += 2; + printer(arg, "callback "); +- GETCHAR(cishort, p); +- switch (cishort) { ++ GETCHAR(cichar, p); ++ switch (cichar) { + case CBCP_OPT: + printer(arg, "CBCP"); + break; + default: +- printer(arg, "0x%x", cishort); ++ printer(arg, "0x%x", cichar); + } + } + break; ++#endif + case CI_MAGICNUMBER: + if (olen == CILEN_LONG) { + p += 2; |