tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pptp, take 3



In article <201103292001.QAA20429%Sparkle.Rodents-Montreal.ORG@localhost>,
der Mouse  <mouse%Rodents-Montreal.ORG@localhost> wrote:
>Some of you may recall that, recently, I've been trying to set up a
>NetBSD 5.1 box as a PPTP endpoint.  This is the latest on this, with an
>informal bug report (a proper PR will follow).
>
>After struggling with options settings, I got some really weird
>behaviour: the NetBSD end would be ConfAcking MPPE negotiation
>incorrectly:
>
>Mar 29 15:53:51 potato pppd[19491]: rcvd [CCP ConfReq id=0x2 <mppe +H -M
>-S +L -D -C>]
>Mar 29 15:53:51 potato pppd[19491]: sent [CCP ConfAck id=0x2 <mppe +H -M
>-S +L -D -C>]
>
>I dove into the code and FINALLY figured this out.  One simple fix
>later and the link came up far enough to answer pings.
>
>The problem is, ccp.h declares "bool mppe", then uses the 0x7f bits of
>that field as flags.  This works fine when bool is a typedef or #define
>for a char or u_char or some such.  But, in 5.1, it's a #define to
>_Bool, which is apparently a built-in boolean type, and all the
>foo->mppe |= 8 and the like got compiled into foo->mppe = 1 - this
>verified by compiling with -save-temps and looking at the .s file.
>
>I changed it to "u_char mppe" and everything started to work.
>
>There may still be problems; this is only a preliminary success - but
>if you've been having trouble with MPPE versus NetBSD, it might be
>worth looking at this.

Head has u_short mppe; what version are you using?

christos



Home | Main Index | Thread Index | Old Index