From ac3ac49a71d4b290cfb28aecafc8ac4a69df7a64 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Wed, 28 Jul 2010 13:13:34 +0200 Subject: Adds route resolvability test. --- proto/bgp/attrs.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'proto/bgp') diff --git a/proto/bgp/attrs.c b/proto/bgp/attrs.c index 039828f5..3e7c94a6 100644 --- a/proto/bgp/attrs.c +++ b/proto/bgp/attrs.c @@ -1023,6 +1023,15 @@ bgp_rte_better(rte *new, rte *old) eattr *x, *y; u32 n, o; + /* RFC 4271 9.1.2.1. Route resolvability test */ + /* non-NULL iface means it is either RTD_ROUTER or RTD_DEVICE route */ + n = new->attrs->iface != NULL; + o = old->attrs->iface != NULL; + if (n > o) + return 1; + if (n < o) + return 0; + /* Start with local preferences */ x = ea_find(new->attrs->eattrs, EA_CODE(EAP_BGP, BA_LOCAL_PREF)); y = ea_find(old->attrs->eattrs, EA_CODE(EAP_BGP, BA_LOCAL_PREF)); -- cgit v1.2.3