From 0592db9630fdf7b9f624224b6d65e122364e7779 Mon Sep 17 00:00:00 2001 From: Rafael Zalamena Date: Wed, 30 Jan 2019 18:11:55 -0200 Subject: [PATCH] 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 --- bfdd/bfd_packet.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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); -- 2.39.5