mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +00:00
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>
This commit is contained in:
parent
974fc9d251
commit
f813b13b71
@ -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);
|
||||
|
@ -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);
|
||||
|
13
bgpd/bgpd.c
13
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);
|
||||
|
||||
|
@ -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 *);
|
||||
|
Loading…
Reference in New Issue
Block a user