8.1R: ppp default route uses wrong Netif (with pppoe)

Luigi Rizzo rizzo at iet.unipi.it
Wed Aug 11 11:53:12 UTC 2010


Hi,
I found the following problem with ppp after upgrading to 8.1

I am using ppp -ddial -nat ... over pppoe.  The entry in ppp.conf has
these lines (plus others not relevant here):

    my-provider:
        set line PPPoE:nfe0
        ...
        add default HISADDR

Up to 7.2 this sufficed to establish a route using 'tun0' as the device

    Destination        Gateway            Flags    Refs      Use  Netif Expire
    default            81.174.0.1         UGS         0     1885   tun0

With the upgrade to 8.1R the default route points to 'nfe0', i.e. the
device used to talk pppoe, instead of tun0.
This causes a number of failures which prevent operation.

I am not sure though whether the bug is in PPP or in the kernel,
and why ppp now uses the wrong device to install the route entry.

A functional workaround is the following (note you need all three lines!):

        add default HISADDR
        shell route delete default
        shell route add default -interface INTERFACE

where the first line installs the bogus entry but supplies a default
address for outgoing packets, and the other two entries fix
the interface.

I tried to remove the 'add default HISADDR' but it does not seem
to work -- tcpdump shows outgoing packets carrying 0.0.0.0 as src-ip,
which prevents replies from coming back.

I'll submit a PR later, but would be curious to know if someone
has ideas on what could be a proper fix.

cheers
luigi


More information about the freebsd-stable mailing list