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 <rzalamena@opensourcerouting.org>
This commit is contained in:
Rafael Zalamena 2019-01-30 18:11:55 -02:00
parent 8bd859f6d3
commit 0592db9630

View 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);