BFD: drop rpc call if packet doesn't match session 28/5628/3
authorKlement Sekera <[email protected]>
Fri, 3 Mar 2017 07:51:08 +0000 (08:51 +0100)
committerDamjan Marion <[email protected]>
Mon, 6 Mar 2017 16:17:21 +0000 (16:17 +0000)
In a very unlikely scenario, during which a session is removed
and replaced with a different session sharing the same session
index, while a packet is in-flight during RPC call, drop that packet.

Change-Id: If1c4a77fc2ab460bae2435db066a133185b98747
Signed-off-by: Klement Sekera <[email protected]>
src/vnet/bfd/bfd_main.c

index 01de637..d38623c 100644 (file)
@@ -1555,7 +1555,7 @@ void
 bfd_consume_pkt (bfd_main_t * bm, const bfd_pkt_t * pkt, u32 bs_idx)
 {
   bfd_session_t *bs = bfd_find_session_by_idx (bm, bs_idx);
-  if (!bs)
+  if (!bs || (pkt->your_disc && pkt->your_disc != bs->local_discr))
     {
       return;
     }