From de7ded6ef614ae3138599b8a322f3eb6c204d57b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabian=20Bl=C3=A4se?= Date: Tue, 10 Dec 2024 02:14:06 +0100 Subject: [PATCH] Babel: fix seqno wrapping on seqno request The Babel seqno wraps around when reaching its maximum value (UINT16_MAX). When comparing seqnos, this has to be taken into account. Therefore, plain number comparisons do not work. --- proto/babel/babel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/babel/babel.c b/proto/babel/babel.c index fe5c0599a..b5cbb63f8 100644 --- a/proto/babel/babel.c +++ b/proto/babel/babel.c @@ -1015,7 +1015,7 @@ babel_send_update_(struct babel_iface *ifa, btime changed, struct fib *rtable) /* Our own seqno might have changed, in which case we update the routes we originate. */ - if ((e->router_id == p->router_id) && (e->seqno < p->update_seqno)) + if ((e->router_id == p->router_id) && gt_mod64k(p->update_seqno, e->seqno)) { e->seqno = p->update_seqno; e->updated = current_time(); -- 2.47.2