bfd: reset peer discriminator on timeout
More RFC compliance.
Ticket: VPP-1816 BFD: peer discriminator not reset on timeout
Type: fix
Change-Id: I68063c18097d282b3527e3fb485c1d0d1fd1b0c8
Signed-off-by: Klement Sekera <ksekera@cisco.com>
diff --git a/src/vnet/bfd/bfd_main.c b/src/vnet/bfd/bfd_main.c
index 0cc7d72..ef6ada8 100644
--- a/src/vnet/bfd/bfd_main.c
+++ b/src/vnet/bfd/bfd_main.c
@@ -1054,6 +1054,19 @@
now + bm->wheel_inaccuracy)
{
BFD_DBG ("Rx timeout, session goes down");
+ /*
+ * RFC 5880 6.8.1. State Variables
+
+ * bfd.RemoteDiscr
+
+ * The remote discriminator for this BFD session. This is the
+ * discriminator chosen by the remote system, and is totally opaque
+ * to the local system. This MUST be initialized to zero. If a
+ * period of a Detection Time passes without the receipt of a valid,
+ * authenticated BFD packet from the remote system, this variable
+ * MUST be set to zero.
+ */
+ bs->remote_discr = 0;
bfd_set_diag (bs, BFD_DIAG_CODE_det_time_exp);
bfd_set_state (bm, bs, BFD_STATE_down, handling_wakeup);
/*