3 --- pppd/lcp.c.orig Fri Aug 13 08:46:14 1999
4 +++ pppd/lcp.c Wed Dec 8 14:54:55 1999
7 static const char rcsid[] = RCSID;
9 +extern bool refuse_chap;
12 * LCP-related command-line options.
16 wo->neg_chap = 0; /* Set to 1 on server */
17 wo->neg_upap = 0; /* Set to 1 on server */
20 + if(wo->use_chapms_v2)
21 + wo->chap_mdtype = CHAP_MICROSOFT_V2;
22 + else if(wo->use_chapms)
23 + wo->chap_mdtype = CHAP_MICROSOFT;
27 wo->chap_mdtype = CHAP_DIGEST_MD5;
30 wo->neg_magicnumber = 1;
31 wo->neg_pcompression = 1;
32 wo->neg_accompression = 1;
33 wo->neg_lqr = 0; /* no LQR implementation yet */
47 + ao->use_chapms_v2 = ao->use_chapms = 1;
48 + if(ao->use_chapms_v2)
49 + ao->chap_mdtype = CHAP_MICROSOFT_V2;
50 + else if(ao->use_chapms)
51 + ao->chap_mdtype = CHAP_MICROSOFT;
55 ao->chap_mdtype = CHAP_DIGEST_MD5;
60 ao->neg_magicnumber = 1;
61 ao->neg_pcompression = 1;
63 * NB: we only ask for one of CHAP and UPAP, even if we will
67 + if(go->use_chapms_v2)
68 + go->chap_mdtype = CHAP_MICROSOFT_V2;
69 + else if(go->use_chapms)
70 + go->chap_mdtype = CHAP_MICROSOFT;
74 + go->chap_mdtype = CHAP_DIGEST_MD5;
78 return (LENCISHORT(go->neg_mru && go->mru != DEFMRU) +
79 LENCILONG(go->neg_asyncmap && go->asyncmap != 0xFFFFFFFF) +
80 LENCICHAP(go->neg_chap) +
82 * algorithm. If they can't do MD5, we'll have to stop
85 - if (cichar != go->chap_mdtype)
86 + if (go->chap_mdtype == CHAP_MICROSOFT_V2)
88 + try.use_chapms_v2 = 0;
90 + try.chap_mdtype = CHAP_MICROSOFT;
91 + else if(try.use_digest)
92 + try.chap_mdtype = CHAP_DIGEST_MD5;
96 + else if(go->chap_mdtype == CHAP_MICROSOFT)
100 + try.chap_mdtype = CHAP_DIGEST_MD5;
104 + else if(go->chap_mdtype == CHAP_DIGEST_MD5)
106 + try.use_digest = 0;
111 + if ((cichar != CHAP_MICROSOFT_V2) &&
112 + (cichar != CHAP_MICROSOFT) &&
113 + (cichar != CHAP_DIGEST_MD5))
117 @@ -1133,8 +1202,22 @@
118 /* Check rejected value. */ \
119 if (cishort != val || cichar != digest) \
123 + case CHAP_MICROSOFT_V2: \
124 + try.use_chapms_v2 = 0; \
126 + case CHAP_MICROSOFT: \
127 + try.use_chapms = 0; \
129 + case CHAP_DIGEST_MD5: \
130 + try.use_digest = 0; \
132 + if(!try.use_chapms_v2 && !try.use_chapms && !try.use_digest) \
138 #define REJCILONG(opt, neg, val) \
140 @@ -1370,9 +1453,10 @@
141 if (cichar != CHAP_DIGEST_MD5
143 && cichar != CHAP_MICROSOFT
144 + && cichar != CHAP_MICROSOFT_V2
148 + orc = CONFREJ; /* !!! CONFNAK !!! */
149 PUTCHAR(CI_AUTHTYPE, nakp);
150 PUTCHAR(CILEN_CHAP, nakp);
151 PUTSHORT(PPP_CHAP, nakp);
152 @@ -1449,6 +1533,23 @@
153 ho->magicnumber = cilong;
158 + LCPDEBUG((LOG_INFO, "lcp_reqci: rcvd CBCP"));
159 + if (!ao->neg_cbcp ||
160 + cilen != CILEN_CHAR) {
164 + GETCHAR(cichar, p);
165 + if(cichar != CBCP_OPT)
174 case CI_PCOMPRESSION:
175 if (!ao->neg_pcompression ||
176 @@ -1721,20 +1822,23 @@
182 - if (olen >= CILEN_CHAR) {
183 + if (olen == CILEN_CHAR) {
186 printer(arg, "callback ");
187 - GETCHAR(cishort, p);
189 + GETCHAR(cichar, p);
192 printer(arg, "CBCP");
195 - printer(arg, "0x%x", cishort);
196 + printer(arg, "0x%x", cichar);
202 if (olen == CILEN_LONG) {