summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-05-19 15:40:34 -0400
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-07-24 13:51:35 -0400
commit25bdac421ea883ce14a97aacb7f5058cbfbfe76d (patch)
tree883c91bc362d16a1f1f1469fdc6212888710eb26
parentd0a4f55d5d6c2f771c29d7a9f2dc2fd49671345d (diff)
pimd: Add 'struct pim_instance' to find_or_track_nexthop
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
-rw-r--r--pimd/pim_cmd.c2
-rw-r--r--pimd/pim_nht.c10
-rw-r--r--pimd/pim_nht.h4
-rw-r--r--pimd/pim_rp.c15
-rw-r--r--pimd/pim_rpf.c2
-rw-r--r--pimd/pim_zebra.c6
6 files changed, 22 insertions, 17 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index ce51edf0bd..66cda198a7 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -3599,7 +3599,7 @@ DEFUN (show_ip_pim_nexthop_lookup,
grp.u.prefix4 = grp_addr;
memset(&nexthop, 0, sizeof(nexthop));
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL, &pnc))
pim_ecmp_nexthop_search(&pnc, &nexthop, &nht_p, &grp, 0);
else
pim_ecmp_nexthop_lookup(&nexthop, vif_source, &nht_p, &grp, 0);
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c
index 2d3180f714..3c145dce1e 100644
--- a/pimd/pim_nht.c
+++ b/pimd/pim_nht.c
@@ -152,8 +152,8 @@ struct pim_nexthop_cache *pim_nexthop_cache_add(struct pim_instance *pim,
* 1 -> Success
* 0 -> Failure
*/
-int pim_find_or_track_nexthop(struct prefix *addr, struct pim_upstream *up,
- struct rp_info *rp,
+int pim_find_or_track_nexthop(struct pim_instance *pim, struct prefix *addr,
+ struct pim_upstream *up, struct rp_info *rp,
struct pim_nexthop_cache *out_pnc)
{
struct pim_nexthop_cache *pnc = NULL;
@@ -167,9 +167,9 @@ int pim_find_or_track_nexthop(struct prefix *addr, struct pim_upstream *up,
rpf.rpf_addr.prefixlen = addr->prefixlen;
rpf.rpf_addr.u.prefix4 = addr->u.prefix4;
- pnc = pim_nexthop_cache_find(pimg, &rpf);
+ pnc = pim_nexthop_cache_find(pim, &rpf);
if (!pnc) {
- pnc = pim_nexthop_cache_add(pimg, &rpf);
+ pnc = pim_nexthop_cache_add(pim, &rpf);
if (pnc)
pim_sendmsg_zebra_rnh(zclient, pnc,
ZEBRA_NEXTHOP_REGISTER);
@@ -306,7 +306,7 @@ void pim_resolve_upstream_nh(struct prefix *nht_p)
struct pim_neighbor *nbr = NULL;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (!pim_find_or_track_nexthop(nht_p, NULL, NULL, &pnc))
+ if (!pim_find_or_track_nexthop(pimg, nht_p, NULL, NULL, &pnc))
return;
for (nh_node = pnc.nexthop; nh_node; nh_node = nh_node->next) {
diff --git a/pimd/pim_nht.h b/pimd/pim_nht.h
index d621f29cc2..4e1d0d180a 100644
--- a/pimd/pim_nht.h
+++ b/pimd/pim_nht.h
@@ -48,8 +48,8 @@ struct pim_nexthop_cache {
int pim_parse_nexthop_update(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id);
-int pim_find_or_track_nexthop(struct prefix *addr, struct pim_upstream *up,
- struct rp_info *rp,
+int pim_find_or_track_nexthop(struct pim_instance *pim, struct prefix *addr,
+ struct pim_upstream *up, struct rp_info *rp,
struct pim_nexthop_cache *out_pnc);
void pim_delete_tracked_nexthop(struct pim_instance *pim, struct prefix *addr,
struct pim_upstream *up, struct rp_info *rp);
diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c
index 2ce813f6d2..5c7915dfcc 100644
--- a/pimd/pim_rp.c
+++ b/pimd/pim_rp.c
@@ -402,8 +402,8 @@ int pim_rp_new(const char *rp, const char *group_range, const char *plist)
__PRETTY_FUNCTION__, buf, buf1);
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_all,
- &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL,
+ rp_all, &pnc)) {
if (!pim_ecmp_nexthop_search(
&pnc, &rp_all->rp.source_nexthop,
&nht_p, &rp_all->group, 1))
@@ -471,7 +471,7 @@ int pim_rp_new(const char *rp, const char *group_range, const char *plist)
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info, &pnc)) {
if (!pim_ecmp_nexthop_search(&pnc, &rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1))
return PIM_RP_NO_PATH;
@@ -564,7 +564,8 @@ void pim_rp_setup(void)
nht_p.prefixlen = IPV4_MAX_BITLEN;
nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
pim_ecmp_nexthop_search(&pnc,
&rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1);
@@ -728,7 +729,8 @@ struct pim_rpf *pim_rp_g(struct in_addr group)
__PRETTY_FUNCTION__, buf, buf1);
}
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
pim_ecmp_nexthop_search(&pnc,
&rp_info->rp.source_nexthop,
&nht_p, &rp_info->group, 1);
@@ -970,7 +972,8 @@ void pim_resolve_rp_nh(void)
nht_p.prefixlen = IPV4_MAX_BITLEN;
nht_p.u.prefix4 = rp_info->rp.rpf_addr.u.prefix4;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (!pim_find_or_track_nexthop(&nht_p, NULL, rp_info, &pnc))
+ if (!pim_find_or_track_nexthop(pimg, &nht_p, NULL, rp_info,
+ &pnc))
continue;
for (nh_node = pnc.nexthop; nh_node; nh_node = nh_node->next) {
diff --git a/pimd/pim_rpf.c b/pimd/pim_rpf.c
index 8e3aa4e73c..0946028e27 100644
--- a/pimd/pim_rpf.c
+++ b/pimd/pim_rpf.c
@@ -218,7 +218,7 @@ enum pim_rpf_result pim_rpf_update(struct pim_upstream *up, struct pim_rpf *old,
grp.prefixlen = IPV4_MAX_BITLEN;
grp.u.prefix4 = up->sg.grp;
memset(&pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, up, NULL, &pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, up, NULL, &pnc)) {
if (pnc.nexthop_num) {
if (!pim_ecmp_nexthop_search(
&pnc, &up->rpf.source_nexthop, &src, &grp,
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index f0616e6cf6..a2ba0e8a23 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -870,7 +870,8 @@ void igmp_source_forward_start(struct igmp_source *source)
grp.prefixlen = IPV4_MAX_BITLEN;
grp.u.prefix4 = sg.grp;
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &out_pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL,
+ &out_pnc)) {
if (out_pnc.nexthop_num) {
up = pim_upstream_find(&sg);
memset(&nexthop, 0, sizeof(nexthop));
@@ -1103,7 +1104,8 @@ void pim_forward_start(struct pim_ifchannel *ch)
grp.u.prefix4 = up->sg.grp;
memset(&out_pnc, 0, sizeof(struct pim_nexthop_cache));
- if (pim_find_or_track_nexthop(&nht_p, NULL, NULL, &out_pnc)) {
+ if (pim_find_or_track_nexthop(pimg, &nht_p, NULL, NULL,
+ &out_pnc)) {
if (out_pnc.nexthop_num) {
src.family = AF_INET;
src.prefixlen = IPV4_MAX_BITLEN;