summaryrefslogtreecommitdiff
path: root/bgpd/bgp_updgrp.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-09-08 12:02:05 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-09-10 08:31:25 -0400
commit0c3a70c64430448c43fe12bf0ac044488352697c (patch)
treea7fd805ffc7837e50380258b639f0a921b5d79e2 /bgpd/bgp_updgrp.c
parentc50a82c39b20354171a0cf43ab2f99f64389e225 (diff)
bgpd: Move the peer->su to connection->su
The sockunion is per connection. So let's move it over. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd/bgp_updgrp.c')
-rw-r--r--bgpd/bgp_updgrp.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c
index 77192b42b2..e47ea8aa8a 100644
--- a/bgpd/bgp_updgrp.c
+++ b/bgpd/bgp_updgrp.c
@@ -279,6 +279,8 @@ static void *updgrp_hash_alloc(void *p)
updgrp = XCALLOC(MTYPE_BGP_UPDGRP, sizeof(struct update_group));
memcpy(updgrp, in, sizeof(struct update_group));
updgrp->conf = XCALLOC(MTYPE_BGP_PEER, sizeof(struct peer));
+ updgrp->conf->connection = XCALLOC(MTYPE_BGP_PEER_CONNECTION,
+ sizeof(struct peer_connection));
conf_copy(updgrp->conf, in->conf, in->afi, in->safi);
return updgrp;
}
@@ -634,7 +636,7 @@ static bool updgrp_hash_cmp(const void *p1, const void *p2)
if ((CHECK_FLAG(pe1->flags, PEER_FLAG_LONESOUL) ||
CHECK_FLAG(pe1->af_cap[afi][safi], PEER_CAP_ORF_PREFIX_SM_RCV)) &&
- !sockunion_same(&pe1->su, &pe2->su))
+ !sockunion_same(&pe1->connection->su, &pe2->connection->su))
return false;
return true;
@@ -987,13 +989,18 @@ static struct update_group *update_group_find(struct peer_af *paf)
struct update_group *updgrp;
struct update_group tmp;
struct peer tmp_conf;
+ struct peer_connection tmp_connection;
if (!peer_established((PAF_PEER(paf))->connection))
return NULL;
memset(&tmp, 0, sizeof(tmp));
memset(&tmp_conf, 0, sizeof(tmp_conf));
+ memset(&tmp_connection, 0, sizeof(struct peer_connection));
+
tmp.conf = &tmp_conf;
+ tmp_conf.connection = &tmp_connection;
+
peer2_updgrp_copy(&tmp, paf);
updgrp = hash_lookup(paf->peer->bgp->update_groups[paf->afid], &tmp);
@@ -1006,10 +1013,14 @@ static struct update_group *update_group_create(struct peer_af *paf)
struct update_group *updgrp;
struct update_group tmp;
struct peer tmp_conf;
+ struct peer_connection tmp_connection;
memset(&tmp, 0, sizeof(tmp));
memset(&tmp_conf, 0, sizeof(tmp_conf));
+ memset(&tmp_connection, 0, sizeof(tmp_connection));
+
tmp.conf = &tmp_conf;
+ tmp_conf.connection = &tmp_connection;
peer2_updgrp_copy(&tmp, paf);
updgrp = hash_get(paf->peer->bgp->update_groups[paf->afid], &tmp,
@@ -1039,6 +1050,7 @@ static void update_group_delete(struct update_group *updgrp)
XFREE(MTYPE_BGP_PEER_IFNAME, updgrp->conf->ifname);
+ XFREE(MTYPE_BGP_PEER_CONNECTION, updgrp->conf->connection);
XFREE(MTYPE_BGP_PEER, updgrp->conf);
XFREE(MTYPE_BGP_UPDGRP, updgrp);
}