mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 17:51:53 +00:00
Comparing cluster list length should be later in bgp_rte_better().
This commit is contained in:
parent
212ff33582
commit
3075824dbd
@ -1070,16 +1070,6 @@ bgp_rte_better(rte *new, rte *old)
|
|||||||
/* Skipping RFC 4271 9.1.2.2. e) */
|
/* Skipping RFC 4271 9.1.2.2. e) */
|
||||||
/* We don't have interior distances */
|
/* We don't have interior distances */
|
||||||
|
|
||||||
/* RFC 4456 9. b) Compare cluster list lengths */
|
|
||||||
x = ea_find(new->attrs->eattrs, EA_CODE(EAP_BGP, BA_CLUSTER_LIST));
|
|
||||||
y = ea_find(old->attrs->eattrs, EA_CODE(EAP_BGP, BA_CLUSTER_LIST));
|
|
||||||
n = x ? int_set_get_size(x->u.ptr) : 0;
|
|
||||||
o = y ? int_set_get_size(y->u.ptr) : 0;
|
|
||||||
if (n < o)
|
|
||||||
return 1;
|
|
||||||
if (n > o)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* RFC 4271 9.1.2.2. f) Compare BGP identifiers */
|
/* RFC 4271 9.1.2.2. f) Compare BGP identifiers */
|
||||||
/* RFC 4456 9. a) Use ORIGINATOR_ID instead of local neighor ID */
|
/* RFC 4456 9. a) Use ORIGINATOR_ID instead of local neighor ID */
|
||||||
x = ea_find(new->attrs->eattrs, EA_CODE(EAP_BGP, BA_ORIGINATOR_ID));
|
x = ea_find(new->attrs->eattrs, EA_CODE(EAP_BGP, BA_ORIGINATOR_ID));
|
||||||
@ -1099,6 +1089,16 @@ bgp_rte_better(rte *new, rte *old)
|
|||||||
if (n > o)
|
if (n > o)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* RFC 4456 9. b) Compare cluster list lengths */
|
||||||
|
x = ea_find(new->attrs->eattrs, EA_CODE(EAP_BGP, BA_CLUSTER_LIST));
|
||||||
|
y = ea_find(old->attrs->eattrs, EA_CODE(EAP_BGP, BA_CLUSTER_LIST));
|
||||||
|
n = x ? int_set_get_size(x->u.ptr) : 0;
|
||||||
|
o = y ? int_set_get_size(y->u.ptr) : 0;
|
||||||
|
if (n < o)
|
||||||
|
return 1;
|
||||||
|
if (n > o)
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* RFC 4271 9.1.2.2. g) Compare peer IP adresses */
|
/* RFC 4271 9.1.2.2. g) Compare peer IP adresses */
|
||||||
return (ipa_compare(new_bgp->cf->remote_ip, old_bgp->cf->remote_ip) < 0);
|
return (ipa_compare(new_bgp->cf->remote_ip, old_bgp->cf->remote_ip) < 0);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user