From: Greg Troxel Date: Thu, 2 Aug 2007 14:07:07 +0000 (+0000) Subject: Bugzilla #384. X-Git-Tag: frr-2.0-rc1~2491 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f76594a2e32f7e7be3de09b1af92c1d8426a059b;p=mirror%2Ffrr.git Bugzilla #384. 2007-08-02 Denis Ovsienko * rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes are intended. Don't set FIB flag on failed additions (such as occur with multiple paths. http://bugzilla.quagga.net/attachment.cgi?id=235&action=view --- diff --git a/zebra/ChangeLog b/zebra/ChangeLog index ab6688c679..b7f2e725d9 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,3 +1,9 @@ +2007-08-02 Denis Ovsienko + + * rt_socket.c (kernel_rtm_ipv4): Only call rtm_write when changes + are intended. Don't set FIB flag on failed additions (such as + occur with multiple paths. + 2007-06-25 Denis Ovsienko * zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB diff --git a/zebra/rt_socket.c b/zebra/rt_socket.c index 0182fbd682..0cdb0aca2b 100644 --- a/zebra/rt_socket.c +++ b/zebra/rt_socket.c @@ -99,9 +99,7 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) if ((cmd == RTM_ADD && CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ACTIVE)) || (cmd == RTM_DELETE -#if 0 && CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB) -#endif )) { if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_RECURSIVE)) @@ -138,9 +136,6 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) } } - if (cmd == RTM_ADD) - SET_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB); - if (gate && p->prefixlen == 32) mask = NULL; else @@ -152,7 +147,6 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) #endif /* HAVE_STRUCT_SOCKADDR_IN_SIN_LEN */ mask = &sin_mask; } - } error = rtm_write (cmd, (union sockunion *)&sin_dest, @@ -169,8 +163,13 @@ kernel_rtm_ipv4 (int cmd, struct prefix *p, struct rib *rib, int family) nexthop_num, error); } #endif - - nexthop_num++; + if (error == 0) + { + nexthop_num++; + if (cmd == RTM_ADD) + SET_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB); + } + } } /* If there is no useful nexthop then return. */