]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Only announce change to main routing table if it is better than current.
authorPavel Machek <pavel@ucw.cz>
Wed, 10 May 2000 12:23:06 +0000 (12:23 +0000)
committerPavel Machek <pavel@ucw.cz>
Wed, 10 May 2000 12:23:06 +0000 (12:23 +0000)
proto/rip/rip.c

index 39b38a66fda23bbce54e4a27075f0071575053e6..52dce5d7b880ccc8ad7e739a505a696b9b1f1c4f 100644 (file)
@@ -235,6 +235,16 @@ find_interface(struct proto *p, struct iface *what)
  * Input processing
  */
 
+static void
+rip_rte_update_if_better(rtable *tab, net *net, struct proto *p, rte *new)
+{
+  rte *old;
+
+  old = rte_find(net, p);
+  if (!old || rip_rte_better(new, old))
+    rte_update(tab, net, p, new);
+}
+
 /* Let main routing table know about our new entry */
 static void
 advertise_entry( struct proto *p, struct rip_block *b, ip_addr whotoldme )
@@ -292,7 +302,7 @@ advertise_entry( struct proto *p, struct rip_block *b, ip_addr whotoldme )
   r->u.rip.tag = ntohl(b->tag);
   r->net = n;
   r->pflags = 0; /* Here go my flags */
-  rte_update( p->table, n, p, r );
+  rip_rte_update_if_better( p->table, n, p, r );
   DBG( "done\n" );
 }