diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-03-31 18:39:29 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-03-31 20:01:12 +0200 |
commit | f813b13b7171f6d6709b56d0dac12e37eda7a783 (patch) | |
tree | 409d746e9b00bdd576600dee18465a2407ef3eba /bgpd | |
parent | lib: Combine name comparison function (diff) | |
download | frr-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.c | 2 | ||||
-rw-r--r-- | bgpd/bgp_vty.c | 4 | ||||
-rw-r--r-- | bgpd/bgpd.c | 13 | ||||
-rw-r--r-- | bgpd/bgpd.h | 2 |
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 *); |