> The self-pointing route 10.0.5.1 should have multiple references set on
> it, and that route won't be deleted from the routing table until the 
> last reference is removed.
> 
> You can verify that by checking the "netstat" output, the "Ref" column
> after tun1 has been created.

Unfortunately PPP doesn't increase the reference count:

After connecting 1 VPN:
Destination        Gateway            Flags    Refs      Use  Netif Expire
10.0.5.1           link#12            UHS         0        0    lo0

After connecting the second VPN:
Destination        Gateway            Flags    Refs      Use  Netif Expire
10.0.5.1           link#12            UHS         1        0    lo0

When you disconnect the second VPN all the routes pointing to 10.0.5.1 are 
removed.

If I add 10.0.5.1 as an proper alias to an interface (eg loopback) it seems to 
work as you would expect and disconnecting one VPN doesn't disconnect all the 
rest.

>> I've been working on migrating a PPTP server from FreeBSD 7.1 to FreeBSD 
>> 8.1.  The server is configured using PopTop (from ports) and PPP (/usr/sbin) 
>> rather than MPD.  (Before anybody tells me to use MPD we can't because it 
>> doesn't inject packets into the kernel in the same way and it's not possible 
>> to filter on them correctly)
>> 
>> Basic PPTP connection works properly. 
>> 
>> The fun happens when I have two simultaneous users.  The first one to 
>> DISCONNECT deletes the routes for both of them and all PPTP traffic ceases.
> 
> Just been working my way through the PPP code - which doesn't actually appear 
> to have changed.
> 
> However, the netinet/in.c does have some comments in the SVN history about 
> deleting the loopback address, this appears to have been merged in as part of 
> the 8 release cycle (r197231 perhaps) (though I'm not an expert at SVN etc)
> 
> What should happen when there are multiple interfaces with the same address.  
> When I have two tunnels configured they show up as (eg)
> 
> tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1398
>        options=80000<LINKSTATE>
>        inet 10.0.5.1 --> 10.0.0.31 netmask 0xffffffff
>        Opened by PID 12616
> 
> tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1398
>        options=80000<LINKSTATE>
>        inet 10.0.5.1 --> 10.0.0.32 netmask 0xffffffff
>        Opened by PID 12630
> 
> If the loop back address is 10.0.5.1 and closing one of them deletes the 
> loopback what should happen?  Should it delete all routes that refer to 
> 10.0.5.1?

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to