summaryrefslogtreecommitdiff
path: root/bgpd/bgpd.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/bgpd.c')
-rw-r--r--bgpd/bgpd.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 8a3ae538dc..d90875b78c 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -3404,13 +3404,15 @@ static struct bgp *bgp_create(as_t *as, const char *name,
afi_t afi;
safi_t safi;
- if (hidden) {
+ if (hidden)
bgp = bgp_old;
- goto peer_init;
- }
+ else
+ bgp = XCALLOC(MTYPE_BGP, sizeof(struct bgp));
- bgp = XCALLOC(MTYPE_BGP, sizeof(struct bgp));
bgp->as = *as;
+
+ if (bgp->as_pretty)
+ XFREE(MTYPE_BGP_NAME, bgp->as_pretty);
if (as_pretty)
bgp->as_pretty = XSTRDUP(MTYPE_BGP_NAME, as_pretty);
else
@@ -3422,6 +3424,9 @@ static struct bgp *bgp_create(as_t *as, const char *name,
} else
asn_str2asn_notation(bgp->as_pretty, NULL, &bgp->asnotation);
+ if (hidden)
+ goto peer_init;
+
if (BGP_DEBUG(zebra, ZEBRA)) {
if (inst_type == BGP_INSTANCE_TYPE_DEFAULT)
zlog_debug("Creating Default VRF, AS %s",