]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Add 'struct pim_instance' to find_or_track_nexthop
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 19 May 2017 19:40:34 +0000 (15:40 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:35 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c
pimd/pim_nht.c
pimd/pim_nht.h
pimd/pim_rp.c
pimd/pim_rpf.c
pimd/pim_zebra.c

index ce51edf0bdbc51d631b5a9f51626bac8e3dce496..66cda198a7bf9e4f23db23b84b38f983b579f494 100644 (file)
@@ -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);
index 2d3180f7145869d6d0d114ac62c173dbc51d86d6..3c145dce1e27bace723627ff7af48f08be106421 100644 (file)
@@ -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) {
index d621f29cc234b4df26fcecc0b580dee87a9dee3c..4e1d0d180ac11c44e79bfdbe07a32029e9d1e0ff 100644 (file)
@@ -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);
index 2ce813f6d2e1d88163615c7ff829e064a1bbe9b3..5c7915dfcc3f619d6ebab938775a3d4c1a6dd2b5 100644 (file)
@@ -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) {
index 8e3aa4e73c32ba81cba6644c0edb339138118597..0946028e27e78494eda766d565f93764164ceb4b 100644 (file)
@@ -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,
index f0616e6cf6aa181f81239f4c2037263e86c6cc70..a2ba0e8a23c1d114c30d748e89f6a7faa0d44e44 100644 (file)
@@ -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;