]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Babel: Avoid batch seqno updates
authorOndrej Zajicek (work) <santiago@crfreenet.org>
Fri, 13 Oct 2017 17:34:34 +0000 (19:34 +0200)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Thu, 7 Dec 2017 12:53:42 +0000 (13:53 +0100)
proto/babel/babel.c
proto/babel/babel.h

index 109744743e1b760238e4a34fbd3dfc3f9451273d..54b31c22a82020a42b82702f079ce6b951017869 100644 (file)
@@ -760,6 +760,13 @@ babel_send_update_(struct babel_iface *ifa, btime changed, struct fib *rtable)
 {
   struct babel_proto *p = ifa->proto;
 
+  /* Update increase was requested */
+  if (p->update_seqno_inc)
+  {
+    p->update_seqno++;
+    p->update_seqno_inc = 0;
+  }
+
   FIB_WALK(rtable, struct babel_entry, e)
   {
     struct babel_route *r = e->selected_out;
@@ -1299,8 +1306,8 @@ babel_handle_seqno_request(union babel_msg *m, struct babel_iface *ifa)
   /* Seqno is larger; check if we own the router id */
   if (msg->router_id == p->router_id)
   {
-    /* Ours; update seqno and trigger global update */
-    p->update_seqno++;
+    /* Ours; seqno increase and trigger global update */
+    p->update_seqno_inc = 1;
     babel_trigger_update(p);
   }
   else
index 1b857f099ef84d823804c49e5abb89a8448d7258..d0c159f9eccb83da6ea86caefdd7720de538db91 100644 (file)
@@ -139,6 +139,7 @@ struct babel_proto {
   list interfaces;                     /* Interfaces we really know about (struct babel_iface) */
   u64 router_id;
   u16 update_seqno;                    /* To be increased on request */
+  u8 update_seqno_inc;                 /* Request for update_seqno increase */
   u8 triggered;                                /* For triggering global updates */
 
   slab *route_slab;