From: Donatas Abraitis Date: Thu, 6 Feb 2025 09:09:30 +0000 (+0200) Subject: Reapply "bgpd: fix duplicate BGP instance created with unified config" X-Git-Tag: docker/10.1.3~24^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=ecbbf938d04abcc181d1943bf60acbc7f667a3f7;p=matthieu%2Ffrr.git Reapply "bgpd: fix duplicate BGP instance created with unified config" This reverts commit daa68852a2a78acf103e8ae1127953b2870c6772. --- diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index a984c5af87..7c1be226b1 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -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();