{
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);
/* 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;
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);
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;
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);
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);
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 *);