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]

Reply via email to