diff options
| -rw-r--r-- | bgpd/bgp_attr.c | 2 | ||||
| -rw-r--r-- | bgpd/bgp_fsm.c | 4 | ||||
| -rw-r--r-- | bgpd/bgp_nexthop.h | 1 | ||||
| -rw-r--r-- | bgpd/bgp_nht.c | 7 | ||||
| -rw-r--r-- | bgpd/bgp_nht.h | 5 | ||||
| -rw-r--r-- | bgpd/bgp_route.c | 12 |
6 files changed, 17 insertions, 14 deletions
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index e0c5cc8937..9ae46dbb3b 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -2249,7 +2249,7 @@ bgp_packet_attribute (struct bgp *bgp, struct peer *peer, size_t mpattrlen_pos = 0; if (! bgp) - bgp = bgp_get_default (); + bgp = peer->bgp; /* Remember current pointer. */ cp = stream_get_endp (s); diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 5683c15444..19bd59f5bf 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -1267,8 +1267,8 @@ bgp_start (struct peer *peer) if ((peer->ttl == 1) || (peer->gtsm_hops == 1)) connected = 1; - bgp_find_or_add_nexthop(family2afi(peer->su.sa.sa_family), NULL, peer, - connected); + bgp_find_or_add_nexthop(peer->bgp, family2afi(peer->su.sa.sa_family), + NULL, peer, connected); status = bgp_connect (peer); switch (status) diff --git a/bgpd/bgp_nexthop.h b/bgpd/bgp_nexthop.h index 4d582465f7..cee967303f 100644 --- a/bgpd/bgp_nexthop.h +++ b/bgpd/bgp_nexthop.h @@ -52,6 +52,7 @@ struct bgp_nexthop_cache void *nht_info; /* In BGP, peer session */ LIST_HEAD(path_list, bgp_info) paths; unsigned int path_count; + struct bgp *bgp; }; extern int bgp_nexthop_lookup (afi_t, struct peer *peer, struct bgp_info *, diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c index df479bf25a..c460f0ee68 100644 --- a/bgpd/bgp_nht.c +++ b/bgpd/bgp_nht.c @@ -89,8 +89,8 @@ bgp_unlink_nexthop (struct bgp_info *path) } int -bgp_find_or_add_nexthop (afi_t afi, struct bgp_info *ri, struct peer *peer, - int connected) +bgp_find_or_add_nexthop (struct bgp *bgp, afi_t afi, struct bgp_info *ri, + struct peer *peer, int connected) { struct bgp_node *rn; struct bgp_nexthop_cache *bnc; @@ -124,6 +124,7 @@ bgp_find_or_add_nexthop (afi_t afi, struct bgp_info *ri, struct peer *peer, bnc = bnc_new(); rn->info = bnc; bnc->node = rn; + bnc->bgp = bgp; bgp_lock_node(rn); if (connected) SET_FLAG(bnc->flags, BGP_NEXTHOP_CONNECTED); @@ -432,7 +433,7 @@ evaluate_paths (struct bgp_nexthop_cache *bnc) { struct bgp_node *rn; struct bgp_info *path; - struct bgp *bgp = bgp_get_default(); + struct bgp *bgp = bnc->bgp; int afi; struct peer *peer = (struct peer *)bnc->nht_info; diff --git a/bgpd/bgp_nht.h b/bgpd/bgp_nht.h index 0897d43a06..2c779802b5 100644 --- a/bgpd/bgp_nht.h +++ b/bgpd/bgp_nht.h @@ -40,13 +40,14 @@ extern int bgp_find_nexthop(struct bgp_info *p, int connected); * object. If not found, create a new object and register with ZEBRA for * nexthop notification. * ARGUMENTS: + * bgp - BGP instance * a - afi: AFI_IP or AF_IP6 * p - path for which the nexthop object is being looked up * peer - The BGP peer associated with this NHT * connected - True if NH MUST be a connected route */ -extern int bgp_find_or_add_nexthop(afi_t a, struct bgp_info *p, - struct peer *peer, int connected); +extern int bgp_find_or_add_nexthop(struct bgp *bgp, afi_t a, + struct bgp_info *p, struct peer *peer, int connected); /** * bgp_unlink_nexthop() - Unlink the nexthop object from the path structure. diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index f37f3179ae..7e0c604645 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -3052,7 +3052,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, u_int32_t addpath_id, else connected = 0; - if (bgp_find_or_add_nexthop (afi, ri, NULL, connected)) + if (bgp_find_or_add_nexthop (bgp, afi, ri, NULL, connected)) bgp_info_set_flag (rn, ri, BGP_INFO_VALID); else { @@ -3109,7 +3109,7 @@ bgp_update_main (struct peer *peer, struct prefix *p, u_int32_t addpath_id, else connected = 0; - if (bgp_find_or_add_nexthop (afi, new, NULL, connected)) + if (bgp_find_or_add_nexthop (bgp, afi, new, NULL, connected)) bgp_info_set_flag (rn, new, BGP_INFO_VALID); else { @@ -4158,7 +4158,7 @@ bgp_static_update_rsclient (struct peer *rsclient, struct prefix *p, /* Nexthop reachability check. */ if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) { - if (bgp_find_or_add_nexthop (afi, ri, NULL, 0)) + if (bgp_find_or_add_nexthop (bgp, afi, ri, NULL, 0)) bgp_info_set_flag (rn, ri, BGP_INFO_VALID); else { @@ -4187,7 +4187,7 @@ bgp_static_update_rsclient (struct peer *rsclient, struct prefix *p, /* Nexthop reachability check. */ if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) { - if (bgp_find_or_add_nexthop (afi, new, NULL, 0)) + if (bgp_find_or_add_nexthop (bgp, afi, new, NULL, 0)) bgp_info_set_flag (rn, new, BGP_INFO_VALID); else { @@ -4307,7 +4307,7 @@ bgp_static_update_main (struct bgp *bgp, struct prefix *p, /* Nexthop reachability check. */ if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) { - if (bgp_find_or_add_nexthop (afi, ri, NULL, 0)) + if (bgp_find_or_add_nexthop (bgp, afi, ri, NULL, 0)) bgp_info_set_flag (rn, ri, BGP_INFO_VALID); else { @@ -4337,7 +4337,7 @@ bgp_static_update_main (struct bgp *bgp, struct prefix *p, /* Nexthop reachability check. */ if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK)) { - if (bgp_find_or_add_nexthop (afi, new, NULL, 0)) + if (bgp_find_or_add_nexthop (bgp, afi, new, NULL, 0)) bgp_info_set_flag (rn, new, BGP_INFO_VALID); else { |
