diff options
author | David Lamparter <equinox@opensourcerouting.org> | 2013-02-28 22:17:00 +0100 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2013-04-09 22:33:19 +0200 |
commit | b68da446e977f8069fb72bce73402e2234ffc1d9 (patch) | |
tree | 6c310ad8fdccf588fcc2ad8b6f03a4602d1b2a13 /ripd | |
parent | 8df55970b64984e5071afd510caad5e778569bc1 (diff) |
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 <sean@gcnpublishing.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ripd')
-rw-r--r-- | ripd/ripd.c | 5 |
1 files 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 */ |