]> git.proxmox.com Git - mirror_frr.git/commitdiff
bfdd: check bfd on upon interface presence from separate vrf
authorPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 26 Mar 2019 14:02:00 +0000 (15:02 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 7 May 2019 13:54:30 +0000 (15:54 +0200)
if a separate vrf detects a new interface, then some bfd sessions may be
run.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
bfdd/ptm_adapter.c

index abfb4e4a267f704511be02b04ebb843892176bcb..6d24c64206b979f99029ac17637f47222b490003 100644 (file)
@@ -563,15 +563,21 @@ static void bfdd_sessions_enable_interface(struct interface *ifp)
 {
        struct bfd_session_observer *bso;
        struct bfd_session *bs;
+       struct vrf *vrf;
 
        TAILQ_FOREACH(bso, &bglobal.bg_obslist, bso_entry) {
+               bs = bso->bso_bs;
                if (bso->bso_isinterface == false)
                        continue;
-
                /* Interface name mismatch. */
-               bs = bso->bso_bs;
                if (strcmp(ifp->name, bs->key.ifname))
                        continue;
+               vrf = vrf_lookup_by_id(ifp->vrf_id);
+               if (!vrf)
+                       continue;
+               if (bs->key.vrfname[0] &&
+                   strcmp(vrf->name, bs->key.vrfname))
+                       continue;
                /* Skip enabled sessions. */
                if (bs->sock != -1)
                        continue;