Subject: Re: ppp_mppe pkg vs /sys/net/if_ppp.c
To: Paul Dokas <dokas@cthulhu.cs.umn.edu>
From: David Brownlee <abs@netbsd.org>
List: current-users
Date: 02/20/2001 13:09:24
	It certainly sounds like NetBSD's ppp-comp.h should be changed to
	handle Win2K pptp (whether or not it is violating any spec).

	Could you submit a PR on this to make sure its not lost?

		David/absolute		-- www.netbsd.org: No hype required --


On Mon, 19 Feb 2001, Paul Dokas wrote:

> I've been struggling to get the poptop + ppp-mppe packages
> working correctly under -current so that a few Win2K laptops
> can use pptp to access behind a firewall.  The problem that
> I've been having is whenever I attempt to connect to the NetBSD
> machine via pptp, I get endless streams of this:
>
>   ppp/mppe: compress rejected: opt_len=32,o[0]=12,o[1]=6
>   ppp/mppe: try increasing CCP_MAX_OPTION_LENGTH in ppp-comp.h
>
>
> I think that I've tracked down the reason.
>
>
> In the ppp-mppe package the LKM that gets built does not include
> if_ppp.c that is found in the package.  Instead, it relies on
> the if_ppp.c that is found in /sys/net/if_ppp.c which includes
> the following lines:
>
> line 384:
>     u_char ccp_option[CCP_MAX_OPTION_LENGTH];
>
> line 450-451:
>         if (nb > sizeof(ccp_option))
>             nb = sizeof(ccp_option);
>
> and /sys/net/ppp-comp.h has this #define:
>
> line 111-114:
> /*
>  * Max # bytes for a CCP option
>  */
> #define CCP_MAX_OPTION_LENGTH   32
>
>
>
> However, in ppp-comp.h is found in the ppp-mppe package, this
> #define is:
>
> #define CCP_MAX_OPTION_LENGTH   64
>
>
>
> So, Win2k sends a CCP option of length > 32, NetBSD's if_ppp.c
> truncates it to 32 bytes and the rest ceases to function.
>
>
> I see two solutions:
>
>   1) change the #define of CCP_MAX_OPTION_LENGTH to 64 in
>      /sys/net/ppp-comp.h
>
>   2) put the version of if_ppp.c found in the ppp-mppe pkg
>      into the LKM that it builds.
>
> Speaking from a completely naive position WRT ppp and BSD networking,
> I'd prefer solution #1, however, the diffs between /sys/net/if_ppp.c
> and if_ppp.c in ppp-mppe are not simple to resolve.  There's probably
> some code in the ppp-mppe version is might be required for MPPE to
> work properly.
>
> Paul
> --
> Paul Dokas                                            dokas@cs.umn.edu
> ======================================================================
> Don Juan Matus:  "an enigma wrapped in mystery wrapped in a tortilla."
>