From a1038a15658d2fd4ab3314a9036bbd63f8f471c1 Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 30 Jan 2006 14:08:51 +0000 Subject: [zebra] Fix pauls zebra_rib/rib_process commit mistakes, again. 2006-01-30 Paul Jakma * zebra_rib.c: (rib_process) Fourth time lucky on this jinxed commit, last commit had a hole that could allow connected route selection to escape beyond the connected route logic. This time I cross-checked with Gunnar first. ;) --- zebra/ChangeLog | 7 +++++++ zebra/zebra_rib.c | 12 +++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) (limited to 'zebra') diff --git a/zebra/ChangeLog b/zebra/ChangeLog index 9f892c83..e7079757 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,3 +1,10 @@ +2006-01-30 Paul Jakma + + * zebra_rib.c: (rib_process) Fourth time lucky on this jinxed + commit, last commit had a hole that could allow connected + route selection to escape beyond the connected route logic. + This time I cross-checked with Gunnar first. ;) + 2006-01-25 Gunnar Stigen * zebra_rib.c: (rib_process) Application of Gunnar's earlier diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c index f377400f..330bce77 100644 --- a/zebra/zebra_rib.c +++ b/zebra/zebra_rib.c @@ -932,14 +932,16 @@ rib_process (struct work_queue *wq, void *data) * - lower metric beats higher for equal distance * - last, hence oldest, route wins tie break. */ + + /* Connected routes. Pick the last connected + * route of the set of lowest metric connected routes. + */ if (rib->type == ZEBRA_ROUTE_CONNECT) { - if (select->type != ZEBRA_ROUTE_CONNECT + if (select->type != ZEBRA_ROUTE_CONNECT || rib->metric <= select->metric) - { - select = rib; - continue; - } + select = rib; + continue; } else if (select->type == ZEBRA_ROUTE_CONNECT) continue; -- cgit v1.2.1