[pptp-server] pppd netmask problem - can we track it down?
    Allan Clark 
    allanc at sco.com
       
    Wed Jul 14 15:06:01 CDT 1999
    
    
  
In the words of "Mr Burns" from "The Simpsons":
"Smithers!  Release the Hounds!"
We could track it down, and if we wanted to, release a ppp-poptop version.
Brian Dupras wrote:
> I'm not a system level programmer for linux, but I think we've either run into
> a bug in pppd, or we've run into a case of mass confusion about a "feature".
> Isn't this where the open source in us should be cracking the code open for
> pppd and seeing what's going on?
>
> >From the pppd man page:
>
>       netmask n
>               Set the interface netmask to n, a 32 bit netmask in
>               "decimal  dot"  notation  (e.g. 255.255.255.0).  If
>               this option is given, the value specified  is  ORed
>               with  the  default netmask[ ... ]
>
> I think it is this OR operation that is either flawed, or we just don't
> understand what it's doing properly.  It would seem that pppd is trying to be
> smart about the netmask setting, but something's not right.
The code you've provided seems to determine the user-specified netmask, but
doesn't do any OR.  Near the end, after it has determined a netmask in "mask" (and
converted to network byte-order):
>     if (*p != 0 || (netmask & ~mask) != 0) {
>  option_error("invalid netmask value '%s'", *argv);
>  return 0;
>     }
Right there it seems to check (*p == 0) for a bad entry value, then it checks an
OR:
(netmask & ~mask) == 0   is ~(~netmask | mask) == 0
The following part:
>     netmask = mask;
>     return (1);
> }
.. sets the netmask, and returns -- it sets the user-specified netmask.  Unless
I'm missing something, this code is not using the "class of the IP address" in
determining the effective netmask -- it's check the user-supplied one, but it
seems to be only checking to see if it's LESS RESTRICTIVE than the existing one
===>> ((netmask & ~mask) == 0) is a check for less-restrictive netmask I think.
Does this function return an error indicating an improper netmask?  Or is it
silently ignored ?
Allan
    
    
More information about the pptp-server
mailing list