If the user has specified identical preferences for instances of different
protocols, break the tie by comparing addresses, so we keep the ordering unambiguous.
This commit is contained in:
parent
aee539f241
commit
4c1b4e1a58
1 changed files with 8 additions and 1 deletions
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue