From b68da446e977f8069fb72bce73402e2234ffc1d9 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Thu, 28 Feb 2013 22:17:00 +0100 Subject: ripd: correctly redistribute ifindex routes (BZ#664) 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 Signed-off-by: David Lamparter --- ripd/ripd.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ripd/ripd.c b/ripd/ripd.c index db29d54a..55a1a75f 100644 --- a/ripd/ripd.c +++ b/ripd/ripd.c @@ -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 */ -- cgit v1.2.1