RTM_LOSING: Kernel Suspects Partitioning
Brad du Plessis
bradd at cat.co.za
Wed Jan 21 05:56:51 PST 2004
Hi,
I've tried a NetBSD mailing list to no avail and was hoping that someone here
could help me.
I have the following setup:
A ----- B ====== C
Box A and Box B are on a LAN both on the same subnet. Now from box B I make a
pppd modem dialup to box C. Manual routes are setup on A and C to allow a
connection between A and C. It appears that if while a connection is active
and access to C is momentarily lost, but the ppp interface remains up,
packets that were being sent to B from A are redirected to B's default
gateway.
If that dialup is closed and then reopened a connection to C from A will fail
because all packets to C through B are being routed to B's default gateway.
In fact, the only way I'm able to get the connection to work again is either
to delete the default gateway on B, do a ping from C to A, or to reboot box
B.
Now I've looked through the kernel and it appears that in netinet/in_pcb.c the
function "in_losing(inp)" is called when this happens. I've put printouts in
the kernel and found that the route to redirect the packets (which I presume
was setup by the kernel) from A to the default gateway has been setup as a
static route. (rt->rt_flags & RTF_DYNAMIC == 0)
I would've thought that this route should be dynamic, my reasoning being that
the route would then be deleted in in_losing(inp) and packets could then be
redirected through a valid route if one were available.
Has anyone come across this before, is this a bug in the kernel? (I assume it
does the same thing in FreeBSD)
Any help would be most appreciated!
Thanks,
Brad
More information about the freebsd-net
mailing list