From: Ondrej Zajicek (work) Date: Fri, 13 Oct 2017 17:34:34 +0000 (+0200) Subject: Babel: Avoid batch seqno updates X-Git-Tag: v2.0.0~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38f4721092f5a835248f9f521d34990ec9883dbd;p=thirdparty%2Fbird.git Babel: Avoid batch seqno updates --- diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 109744743..54b31c22a 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -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 diff --git a/proto/babel/babel.h b/proto/babel/babel.h index 1b857f099..d0c159f9e 100644 --- a/proto/babel/babel.h +++ b/proto/babel/babel.h @@ -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;