Date: Wed, 9 Mar 2011 20:11:00 +0000 From: Melissa Jenkins <melissa-freebsd@littlebluecar.co.uk> To: freebsd-net@freebsd.org Cc: Qing Li <qing.li@bluecoat.com> Subject: Re: PPP and Route Delete Message-ID: <FBC82712-5E6D-43B7-B716-87615BFCF6B3@littlebluecar.co.uk> In-Reply-To: <B583FBF374231F4A89607B4D08578A430823C9CF@bcs-mail03.internal.cacheflow.com> References: <63A5C79A-B4C3-42C3-9B76-1F2EB04DB871@littlebluecar.co.uk><01EE1F52-3393-4A43-882F-C35677CB0754@gmail.com> <F850408F-1FCF-4817-BB62-6C6CD968FB92@littlebluecar.co.uk> <B583FBF374231F4A89607B4D08578A430823C9CF@bcs-mail03.internal.cacheflow.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> 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?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FBC82712-5E6D-43B7-B716-87615BFCF6B3>
