diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c index eff81d4b63..c717a333a6 100644 --- a/bfdd/bfd_packet.c +++ b/bfdd/bfd_packet.c @@ -639,6 +639,14 @@ void bfd_recv_cb(struct thread *t) return; } + /* Ensure that existing good sessions are not overridden. */ + if (!cp->discrs.remote_discr && bfd->ses_state != PTM_BFD_DOWN && + bfd->ses_state != PTM_BFD_ADM_DOWN) { + cp_debug(is_mhop, &peer, &local, ifindex, vrfid, + "'remote discriminator' is zero, not overridden"); + return; + } + /* * Multi hop: validate packet TTL. */