]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Reapply "bgpd: fix duplicate BGP instance created with unified config"
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 6 Feb 2025 09:09:30 +0000 (11:09 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 6 Feb 2025 09:09:30 +0000 (11:09 +0200)
This reverts commit daa68852a2a78acf103e8ae1127953b2870c6772.

bgpd/bgpd.c

index a984c5af877a0ba4afbc2607a406ec55860c83cd..7c1be226b1c79cf7786bda3f750e1d792be45d62 100644 (file)
@@ -3623,13 +3623,13 @@ struct bgp *bgp_lookup(as_t as, const char *name)
 }
 
 /* Lookup BGP structure by view name. */
-struct bgp *bgp_lookup_by_name(const char *name)
+struct bgp *bgp_lookup_by_name_filter(const char *name, bool filter_auto)
 {
        struct bgp *bgp;
        struct listnode *node, *nnode;
 
        for (ALL_LIST_ELEMENTS(bm->bgp, node, nnode, bgp)) {
-               if (CHECK_FLAG(bgp->vrf_flags, BGP_VRF_AUTO))
+               if (filter_auto && CHECK_FLAG(bgp->vrf_flags, BGP_VRF_AUTO))
                        continue;
                if ((bgp->name == NULL && name == NULL)
                    || (bgp->name && name && strcmp(bgp->name, name) == 0))
@@ -3638,6 +3638,11 @@ struct bgp *bgp_lookup_by_name(const char *name)
        return NULL;
 }
 
+struct bgp *bgp_lookup_by_name(const char *name)
+{
+       return bgp_lookup_by_name_filter(name, true);
+}
+
 /* Lookup BGP instance based on VRF id. */
 /* Note: Only to be used for incoming messages from Zebra. */
 struct bgp *bgp_lookup_by_vrf_id(vrf_id_t vrf_id)
@@ -3730,7 +3735,7 @@ int bgp_lookup_by_as_name_type(struct bgp **bgp_val, as_t *as, const char *name,
 
        /* Multiple instance check. */
        if (name)
-               bgp = bgp_lookup_by_name(name);
+               bgp = bgp_lookup_by_name_filter(name, false);
        else
                bgp = bgp_get_default();