]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Adds route resolvability test.
authorOndrej Zajicek <santiago@crfreenet.org>
Wed, 28 Jul 2010 11:13:34 +0000 (13:13 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Wed, 28 Jul 2010 11:13:34 +0000 (13:13 +0200)
proto/bgp/attrs.c

index 039828f56a663af4cbcbcb17ebab5576c2be3647..3e7c94a608424a57e942459536264053289bcbe5 100644 (file)
@@ -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));