summaryrefslogtreecommitdiffstats
path: root/bgpd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-03-31 18:39:29 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2016-03-31 20:01:12 +0200
commitf813b13b7171f6d6709b56d0dac12e37eda7a783 (patch)
tree409d746e9b00bdd576600dee18465a2407ef3eba /bgpd
parentlib: Combine name comparison function (diff)
downloadfrr-f813b13b7171f6d6709b56d0dac12e37eda7a783.tar.xz
frr-f813b13b7171f6d6709b56d0dac12e37eda7a783.zip
bgpd: Add group pointer to peer_create function.
When creating a 'struct peer' add in the ability to set the peer group associated with that peer. Ticket: CM-10184 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_network.c2
-rw-r--r--bgpd/bgp_vty.c4
-rw-r--r--bgpd/bgpd.c13
-rw-r--r--bgpd/bgpd.h2
4 files changed, 10 insertions, 11 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index b02eabadc..61986f561 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -408,7 +408,7 @@ bgp_accept (struct thread *thread)
peer1->host);
peer = peer_create (&su, peer1->conf_if, peer1->bgp, peer1->local_as,
- peer1->as, peer1->as_type, 0, 0);
+ peer1->as, peer1->as_type, 0, 0, NULL);
peer->su = su;
peer_xfer_config(peer, peer1);
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 37909dd26..c1648c1c9 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -2706,9 +2706,9 @@ peer_conf_interface_get (struct vty *vty, const char *conf_if, afi_t afi,
{
if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4)
&& afi == AFI_IP && safi == SAFI_UNICAST)
- peer = peer_create (NULL, conf_if, bgp, bgp->as, 0, AS_UNSPECIFIED, 0, 0);
+ peer = peer_create (NULL, conf_if, bgp, bgp->as, 0, AS_UNSPECIFIED, 0, 0, NULL);
else
- peer = peer_create (NULL, conf_if, bgp, bgp->as, 0, AS_UNSPECIFIED, afi, safi);
+ peer = peer_create (NULL, conf_if, bgp, bgp->as, 0, AS_UNSPECIFIED, afi, safi, NULL);
if (peer && v6only)
SET_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY);
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 478ec8565..a16cf34a6 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1379,7 +1379,7 @@ bgp_recalculate_all_bestpaths (struct bgp *bgp)
/* Create new BGP peer. */
struct peer *
peer_create (union sockunion *su, const char *conf_if, struct bgp *bgp,
- as_t local_as, as_t remote_as, int as_type, afi_t afi, safi_t safi)
+ as_t local_as, as_t remote_as, int as_type, afi_t afi, safi_t safi, struct peer_group *group)
{
int active;
struct peer *peer;
@@ -1413,6 +1413,7 @@ peer_create (union sockunion *su, const char *conf_if, struct bgp *bgp,
peer->v_routeadv = BGP_DEFAULT_EBGP_ROUTEADV;
peer = peer_lock (peer); /* bgp peer list reference */
+ peer->group = group;
listnode_add_sort (bgp->peer, peer);
hash_get(bgp->peerhash, peer, hash_alloc_intern);
@@ -1605,9 +1606,9 @@ peer_remote_as (struct bgp *bgp, union sockunion *su, const char *conf_if,
if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4)
&& afi == AFI_IP && safi == SAFI_UNICAST)
- peer = peer_create (su, conf_if, bgp, local_as, *as, as_type, 0, 0);
+ peer = peer_create (su, conf_if, bgp, local_as, *as, as_type, 0, 0, NULL);
else
- peer = peer_create (su, conf_if, bgp, local_as, *as, as_type, afi, safi);
+ peer = peer_create (su, conf_if, bgp, local_as, *as, as_type, afi, safi, NULL);
}
return 0;
@@ -2601,8 +2602,7 @@ peer_group_bind (struct bgp *bgp, union sockunion *su, struct peer *peer,
return BGP_ERR_PEER_GROUP_NO_REMOTE_AS;
}
- peer = peer_create (su, NULL, bgp, bgp->as, group->conf->as, group->conf->as_type, 0, 0);
- peer->group = group;
+ peer = peer_create (su, NULL, bgp, bgp->as, group->conf->as, group->conf->as_type, 0, 0, group);
peer = peer_lock (peer); /* group->peer list reference */
listnode_add (group->peer, peer);
@@ -3227,12 +3227,11 @@ peer_create_bind_dynamic_neighbor (struct bgp *bgp, union sockunion *su,
safi_t safi;
/* Create peer first; we've already checked group config is valid. */
- peer = peer_create (su, NULL, bgp, bgp->as, group->conf->as, group->conf->as_type, 0, 0);
+ peer = peer_create (su, NULL, bgp, bgp->as, group->conf->as, group->conf->as_type, 0, 0, group);
if (!peer)
return NULL;
/* Link to group */
- peer->group = group;
peer = peer_lock (peer);
listnode_add (group->peer, peer);
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index e72fab006..7846d03ca 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -1166,7 +1166,7 @@ extern int peer_active (struct peer *);
extern int peer_active_nego (struct peer *);
extern void bgp_recalculate_all_bestpaths (struct bgp *bgp);
extern struct peer *peer_create(union sockunion *, const char *, struct bgp *,
- as_t, as_t, int, afi_t, safi_t);
+ as_t, as_t, int, afi_t, safi_t, struct peer_group *);
extern struct peer *peer_create_accept (struct bgp *);
extern void peer_xfer_config (struct peer *dst, struct peer *src);
extern char *peer_uptime (time_t, char *, size_t, u_char, json_object *);