The userland component of PPPD has no additional requirements above
those for MS-CHAP and MS-CHAPv2. The kernel, however, requires SHA-1
-and ARCFOUR. Public domain implementations of these are provided. Until
-such time as MPPE support ships with kernels, you can use the Linux-2.2
-implementation that comes with PPPD. Run the linux/mppe/mppeinstall.sh
-script, then rebuild your kernel. The ppp_mppe.o module is added, and the
-ppp.o module (2.2) or ppp_generic.o (2.4) is modified (unfortunately).
-You'll need the new ppp.o/ppp_generic.o since it does the right thing
-for the 4 extra bytes problem discussed above.
+and ARCFOUR. Public domain implementations of these are provided.
+
+Until such time as MPPE support ships with kernels, you can use
+the Linux 2.2 or 2.4 implementation that comes with PPPD. Run the
+ppp/linux/mppe/mppeinstall.sh script, giving it the location to your
+kernel source. Then add the CONFIG_PPP_MPPE option to your config and
+rebuild the kernel. The ppp_mppe.o module is added, and the ppp.o module
+(2.2) or ppp_generic.o (2.4) is modified (unfortunately). You'll need
+the new ppp.o/ppp_generic.o since it does the right thing for the 4
+extra bytes problem discussed above.
CONFIGURATION
* OR MODIFICATIONS.
*/
-#define RCSID "$Id: ccp.c,v 1.35 2002/05/21 17:26:49 dfs Exp $"
+#define RCSID "$Id: ccp.c,v 1.36 2002/05/28 17:00:57 dfs Exp $"
#include <stdlib.h>
#include <string.h>
notice("Compression disabled by peer.");
#ifdef MPPE
if (ccp_gotoptions[unit].mppe) {
- notice("MPPE disabled, closing LCP");
+ error("MPPE disabled, closing LCP");
lcp_close(unit, "MPPE disabled by peer");
}
#endif
#ifdef MPPE
if (ccp_gotoptions[unit].mppe)
+ error("MPPE required but peer negotiation failed");
lcp_close(unit, "MPPE required but peer negotiation failed");
#endif
/* Peer must have set options we didn't request (suggest) */
try.mppe = 0;
- if (!try.mppe)
+ if (!try.mppe) {
+ error("MPPE required but peer negotiation failed");
lcp_close(f->unit, "MPPE required but peer negotiation failed");
+ }
}
#endif /* MPPE */
if (go->deflate && len >= CILEN_DEFLATE
#ifdef MPPE
if (go->mppe && len >= CILEN_MPPE
&& p[0] == CI_MPPE && p[1] == CILEN_MPPE) {
+ error("MPPE required but peer refused");
lcp_close(f->unit, "MPPE required but peer refused");
p += CILEN_MPPE;
len -= CILEN_MPPE;
*lenp = retp - p0;
}
#ifdef MPPE
- if (ret == CONFREJ && ao->mppe && !seen_ci_mppe)
+ if (ret == CONFREJ && ao->mppe && !seen_ci_mppe) {
+ error("MPPE required but peer negotiation failed");
lcp_close(f->unit, "MPPE required but peer negotiation failed");
+ }
#endif
return ret;
}
ccp_localstate[f->unit] = 0;
ccp_flags_set(f->unit, 1, 0);
#ifdef MPPE
- if (ccp_gotoptions[f->unit].mppe)
+ if (ccp_gotoptions[f->unit].mppe) {
+ error("MPPE disabled");
lcp_close(f->unit, "MPPE disabled");
+ }
#endif
}