]> git.proxmox.com Git - mirror_frr.git/commitdiff
bfdd: fix bug on poll sequence
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Wed, 30 Jan 2019 20:11:55 +0000 (18:11 -0200)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Thu, 14 Feb 2019 16:17:29 +0000 (14:17 -0200)
Poll and Final bits can't be set at the same time in a packet.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
bfdd/bfd_packet.c

index 1a72800757dfcfeadf500bca7a59205b3c632292..1c55db39fc62184a1cc865622921b886ec117e5e 100644 (file)
@@ -213,8 +213,16 @@ void ptm_bfd_snd(struct bfd_session *bfd, int fbit)
        cp.flags = 0;
        BFD_SETSTATE(cp.flags, bfd->ses_state);
        BFD_SETDEMANDBIT(cp.flags, BFD_DEF_DEMAND);
-       BFD_SETPBIT(cp.flags, bfd->polling);
+
+       /*
+        * Polling and Final can't be set at the same time.
+        *
+        * RFC 5880, Section 6.5.
+        */
        BFD_SETFBIT(cp.flags, fbit);
+       if (fbit == 0)
+               BFD_SETPBIT(cp.flags, bfd->polling);
+
        cp.detect_mult = bfd->detect_mult;
        cp.len = BFD_PKT_LEN;
        cp.discrs.my_discr = htonl(bfd->discrs.my_discr);