2006-01-18 Gunnar Stigen <gunnar.stigen@axxessit.no>

* zebra_rib.c: Take interface metric into account.
This commit is contained in:
paul 2006-01-18 14:52:52 +00:00
parent eac314c7c4
commit af887b5111
2 changed files with 21 additions and 4 deletions

View File

@ -1,3 +1,7 @@
2006-01-18 Gunnar Stigen <gunnar.stigen@axxessit.no>
* zebra_rib.c: Take interface metric into account.
2006-01-17 Paul Jakma <paul.jakma@sun.com>
* kernel_socket.c: (ifam_read) Read metric from RTM_NEWADDR.

View File

@ -919,10 +919,23 @@ rib_process (struct work_queue *wq, void *data)
if (rib->distance == DISTANCE_INFINITY)
continue;
/* Newly selected rib. */
if (! select || rib->distance < select->distance
|| rib->type == ZEBRA_ROUTE_CONNECT)
select = rib;
/* Newly selected rib, the common case. */
if (!select)
{
select = rib;
continue;
}
/* filter route selection in following order:
* - lower distance beats higher
* - connected beats other types
* - lower metric beats higher for equal distance
* - last, hence oldest, route wins tie break.
*/
if ((rib->type == ZEBRA_ROUTE_CONNECT)
|| (rib->distance <= select->distance))
if (rib->metric <= select->metric)
select = rib;
}
/* Deleted route check. */