From 4c1b4e1a582ea8d13943c46ad87588d5743439cb Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Wed, 1 Mar 2000 11:48:11 +0000 Subject: [PATCH] If the user has specified identical preferences for instances of different protocols, break the tie by comparing addresses, so we keep the ordering unambiguous. --- nest/rt-table.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nest/rt-table.c b/nest/rt-table.c index dcde0af8..4c406cf7 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -95,7 +95,14 @@ rte_better(rte *new, rte *old) if (new->pref < old->pref) return 0; if (new->attrs->proto->proto != old->attrs->proto->proto) - bug("Different protocols, but identical preferences => oops"); /* FIXME */ + { + /* + * If the user has configured protocol preferences, so that two different protocols + * have the same preference, try to break the tie by comparing addresses. Not too + * useful, but keeps the ordering of routes unambiguous. + */ + return new->attrs->proto->proto > old->attrs->proto->proto; + } if (better = new->attrs->proto->rte_better) return better(new, old); return 0;