Commit 4c1b4e1a authored by Martin Mareš's avatar Martin Mareš

If the user has specified identical preferences for instances of different

protocols, break the tie by comparing addresses, so we keep the ordering
unambiguous.
parent aee539f2
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment