> Introduce a strict-inequality version of the modulo-comparison for this > purpose.
Thanks. I'm a little worried about the code around line 1017: struct babel_source *s = babel_get_source(p, e, e->router_id); s->expires = current_time() + BABEL_GARBAGE_INTERVAL; if (gt_mod64k(msg.update.seqno, s->seqno) || ((msg.update.seqno == s->seqno) && (msg.update.metric < s->metric))) { s->seqno = msg.update.seqno; s->metric = msg.update.metric; } If the source is just being created, then the function babel_get_source will initialise s->seqno to 0. If msg.update.seqno happens to be in the interval [0x8000,0xFFFF], then the conditional at line 1020 will fail to trigger, and s->seqno will not be updated until msg.updae.seqno catches up with 0. I think that babel_get_source should take an extra argument, the initial seqno in case the source does not exist, and it should be called with msg.update.seqno. This corresponds to RFC 8966 Section 3.5.3. -- Juliusz