[quagga-dev 10287] [PATCH] ripd: correctly redistribute ifindex routes (BZ#664)
equinox at opensourcerouting.org
Thu Feb 28 22:03:08 GMT 2013
ripd had a check to restrict metric 0 to only directly connected routes.
This check was implemented by checking against Connected as route type.
This is, however, incorrect -- all routes that directly use an interface
without a nexthop should be treated as directly connected and passed off
with metric 0.
ripngd does not posess such a check and was not touched.
Reported-by: Sean Fulton <sean at gcnpublishing.com>
Signed-off-by: David Lamparter <equinox at opensourcerouting.org>
ripd/ripd.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/ripd/ripd.c b/ripd/ripd.c
index db29d54..55a1a75 100644
@@ -482,8 +482,9 @@ rip_rte_process (struct rte *rte, struct sockaddr_in *from,
new_dist = rip_distance_apply (&rinfotmp);
new_dist = new_dist ? new_dist : ZEBRA_RIP_DISTANCE_DEFAULT;
old_dist = rinfo->distance;
- /* Only connected routes may have a valid NULL distance */
- if (rinfo->type != ZEBRA_ROUTE_CONNECT)
+ /* Only routes directly connected to an interface (nexthop == 0)
+ * may have a valid NULL distance */
+ if (rinfo->nexthop.s_addr != 0)
old_dist = old_dist ? old_dist : ZEBRA_RIP_DISTANCE_DEFAULT;
/* If imported route does not have STRICT precedence,
mark it as a ghost */
More information about the Quagga-dev