diff options
| -rw-r--r-- | zebra/ChangeLog | 7 | ||||
| -rw-r--r-- | zebra/zebra_rib.c | 12 | 
2 files changed, 14 insertions, 5 deletions
| 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 <paul.jakma@sun.com> + +	* 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 <gunnar.stigen@axxessit.no>  	* 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; | 
