On Mon, Aug 31, 2009 at 02:14:02PM -0400, Sebastien Roy wrote:
> On Sat, 2009-08-29 at 16:53 -0400, [email protected] wrote:
> > the question (for anyone who is aware of the history here) is why the
> > RTM_LOSING for the host is reason to wipe out the default
> > route itself?
>
> Sounds like a bug.
Yes.
> > In this case, the default router (and everything in the path is fine),
> > it's just the tcp endpoint that died. But in.routed will nuke the
> > default route based on this information, and will not refresh until the
> > next rtradv restores it.
> >
> > So should in.routed`rtm_lose meddle with default routes based on RTM_LOSING?
>
> I don't think so. Wiping out a route simply because one host that
> happens to be covered by that route isn't reachable is unwise.
RTM_LOSING is generated by ip_ire_delete(). The comment says
* This function is associated with the IP_IOC_IRE_DELETE[_NO_REPLY]
* IOCTL[s]. The NO_REPLY form is used by TCP to delete a route IRE
* for a host that is not responding. This will force an attempt to
* establish a new route, if available, and flush out the ARP entry so
* it will re-resolve. Management processes may want to use the
* version that generates a reply.
and:
/*
* Also look for an IRE_HOST type redirect ire and
* remove it if present.
*/
ire = ire_route_lookup(addr, 0, 0, IRE_HOST, NULL, NULL,
ALL_ZONES, NULL, MATCH_IRE_TYPE, ipst);
/* Nail it. */
if (ire != NULL) {
if (ire->ire_flags & RTF_DYNAMIC) {
if (!routing_sock_info) {
ip_rts_change(RTM_LOSING, ire->ire_addr,
...
So it looks like RTM_LOSING is intended to help get rid of ICMP redirect
routes faster, which makes sense. It would also make sense to use
RTM_LOSING to select a different route when there are multiple routes to
the target. But if there's only a single default route then deleting it
seems like a rather bad thing to do.
Nico
--
_______________________________________________
networking-discuss mailing list
[email protected]