From: Rafael Zalamena Date: Wed, 30 Jan 2019 20:11:55 +0000 (-0200) Subject: bfdd: fix bug on poll sequence X-Git-Tag: 7.1_pulled~230^2~15 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0592db9630fdf7b9f624224b6d65e122364e7779;p=matthieu%2Ffrr.git bfdd: fix bug on poll sequence Poll and Final bits can't be set at the same time in a packet. Signed-off-by: Rafael Zalamena --- diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c index 1a72800757..1c55db39fc 100644 --- a/bfdd/bfd_packet.c +++ b/bfdd/bfd_packet.c @@ -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);