diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2017-10-13 19:34:34 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2017-12-07 13:53:42 +0100 |
commit | 38f4721092f5a835248f9f521d34990ec9883dbd (patch) | |
tree | 8abc57ca498f9bbc5eb0467d896fc8bc2b0e8a7a /proto/babel | |
parent | 5ee69d11f2e859b77ff04bb4068f43082fd1794f (diff) |
Babel: Avoid batch seqno updates
Diffstat (limited to 'proto/babel')
-rw-r--r-- | proto/babel/babel.c | 11 | ||||
-rw-r--r-- | proto/babel/babel.h | 1 |
2 files changed, 10 insertions, 2 deletions
diff --git a/proto/babel/babel.c b/proto/babel/babel.c index 10974474..54b31c22 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 1b857f09..d0c159f9 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; |