From: Donald Sharp Date: Fri, 19 May 2017 19:40:34 +0000 (-0400) Subject: pimd: Add 'struct pim_instance' to find_or_track_nexthop X-Git-Tag: frr-4.0-dev~468^2~119 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=25bdac421ea883ce14a97aacb7f5058cbfbfe76d;p=mirror%2Ffrr.git pimd: Add 'struct pim_instance' to find_or_track_nexthop Signed-off-by: Donald Sharp --- 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;