]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Cleanup pim_ssm.c to use 'struct pim_instance *'
authorDonald Sharp <sharpd@cumulusnetworks.com>
Sun, 21 May 2017 13:30:02 +0000 (09:30 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 24 Jul 2017 17:51:36 +0000 (13:51 -0400)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_cmd.c
pimd/pim_ifchannel.c
pimd/pim_mroute.c
pimd/pim_register.c
pimd/pim_ssm.c
pimd/pim_ssm.h
pimd/pim_upstream.c
pimd/pim_zebra.c
pimd/pimd.c

index e0777e40d6fc38afaaa4dd592a5177f55a16ae55..06186a24139989a974d13c7634c3c943b2569fed 100644 (file)
@@ -4602,9 +4602,10 @@ DEFUN (no_ip_pim_rp_prefix_list,
        return pim_no_rp_cmd_worker(vty, argv[4]->arg, NULL, argv[6]->arg);
 }
 
-static int pim_ssm_cmd_worker(struct vty *vty, const char *plist)
+static int pim_ssm_cmd_worker(struct pim_instance *pim, struct vty *vty,
+                             const char *plist)
 {
-       int result = pim_ssm_range_set(pimg->vrf_id, plist);
+       int result = pim_ssm_range_set(pim, pim->vrf_id, plist);
 
        if (result == PIM_SSM_ERR_NONE)
                return CMD_SUCCESS;
@@ -4632,7 +4633,7 @@ DEFUN (ip_pim_ssm_prefix_list,
        "group range prefix-list filter\n"
        "Name of a prefix-list\n")
 {
-       return pim_ssm_cmd_worker(vty, argv[0]->arg);
+       return pim_ssm_cmd_worker(pimg, vty, argv[0]->arg);
 }
 
 DEFUN (no_ip_pim_ssm_prefix_list,
@@ -4644,7 +4645,7 @@ DEFUN (no_ip_pim_ssm_prefix_list,
        "Source Specific Multicast\n"
        "group range prefix-list filter\n")
 {
-       return pim_ssm_cmd_worker(vty, NULL);
+       return pim_ssm_cmd_worker(pimg, vty, NULL);
 }
 
 DEFUN (no_ip_pim_ssm_prefix_list_name,
@@ -4660,7 +4661,7 @@ DEFUN (no_ip_pim_ssm_prefix_list_name,
        struct pim_ssm *ssm = pimg->ssm_info;
 
        if (ssm->plist_name && !strcmp(ssm->plist_name, argv[0]->arg))
-               return pim_ssm_cmd_worker(vty, NULL);
+               return pim_ssm_cmd_worker(pimg, vty, NULL);
 
        vty_out(vty, "%% pim ssm prefix-list %s doesn't exist\n", argv[0]->arg);
 
@@ -4711,7 +4712,8 @@ static void ip_pim_ssm_show_group_type(struct vty *vty, u_char uj,
                type_str = "invalid";
        else {
                if (pim_is_group_224_4(group_addr))
-                       type_str = pim_is_grp_ssm(group_addr) ? "SSM" : "ASM";
+                       type_str = pim_is_grp_ssm(pimg, group_addr) ? "SSM"
+                                                                   : "ASM";
                else
                        type_str = "not-multicast";
        }
index 4027489a783c555061b8974f908a43ec7420fbd0..469d33318c6dec5140f4b3df20c5f872f718306e 100644 (file)
@@ -1016,7 +1016,7 @@ int pim_ifchannel_local_membership_add(struct interface *ifp,
 
        /* skip (*,G) ch creation if G is of type SSM */
        if (sg->src.s_addr == INADDR_ANY) {
-               if (pim_is_grp_ssm(sg->grp)) {
+               if (pim_is_grp_ssm(pim, sg->grp)) {
                        if (PIM_DEBUG_PIM_EVENTS)
                                zlog_debug(
                                        "%s: local membership (S,G)=%s ignored as group is SSM",
index 4195685f354501ef26db07f9041e4d58cd9db3b8..435f5e6413b348e156a2298aa3af12d97e6bfaca 100644 (file)
@@ -277,7 +277,7 @@ static int pim_mroute_msg_wholepkt(int fd, struct interface *ifp,
         * If we've received a register suppress
         */
        if (!up->t_rs_timer) {
-               if (pim_is_grp_ssm(sg.grp)) {
+               if (pim_is_grp_ssm(pim_ifp->pim, sg.grp)) {
                        if (PIM_DEBUG_PIM_REG)
                                zlog_debug(
                                        "%s register forward skipped as group is SSM",
index d7b13fe05c735b3285e749212cb58b8dd163c53e..9448dd8182c7430553d4854e4a33b3964fda87f0 100644 (file)
@@ -50,7 +50,7 @@ void pim_register_join(struct pim_upstream *up)
 {
        struct pim_instance *pim = up->channel_oil->pim;
 
-       if (pim_is_grp_ssm(up->sg.grp)) {
+       if (pim_is_grp_ssm(pim, up->sg.grp)) {
                if (PIM_DEBUG_PIM_EVENTS)
                        zlog_debug("%s register setup skipped as group is SSM",
                                   up->sg_str);
index 35d588abd563df017db09c00a846279211272d6a..8d270e620563fc8fbb8d0d9e754ec65b54329d3e 100644 (file)
@@ -29,7 +29,7 @@
 #include "pim_ssm.h"
 #include "pim_zebra.h"
 
-static void pim_ssm_range_reevaluate(void)
+static void pim_ssm_range_reevaluate(struct pim_instance *pim)
 {
        /* 1. Setup register state for (S,G) entries if G has changed from SSM
         * to
@@ -47,13 +47,14 @@ static void pim_ssm_range_reevaluate(void)
         * will
         * disappear in time for SSM groups.
         */
-       pim_upstream_register_reevaluate(pimg);
+       pim_upstream_register_reevaluate(pim);
        igmp_source_forward_reevaluate_all();
 }
 
-void pim_ssm_prefix_list_update(struct prefix_list *plist)
+void pim_ssm_prefix_list_update(struct pim_instance *pim,
+                               struct prefix_list *plist)
 {
-       struct pim_ssm *ssm = pimg->ssm_info;
+       struct pim_ssm *ssm = pim->ssm_info;
 
        if (!ssm->plist_name
            || strcmp(ssm->plist_name, prefix_list_name(plist))) {
@@ -61,7 +62,7 @@ void pim_ssm_prefix_list_update(struct prefix_list *plist)
                return;
        }
 
-       pim_ssm_range_reevaluate();
+       pim_ssm_range_reevaluate(pim);
 }
 
 static int pim_is_grp_standard_ssm(struct prefix *group)
@@ -77,7 +78,7 @@ static int pim_is_grp_standard_ssm(struct prefix *group)
        return prefix_match(&group_ssm, group);
 }
 
-int pim_is_grp_ssm(struct in_addr group_addr)
+int pim_is_grp_ssm(struct pim_instance *pim, struct in_addr group_addr)
 {
        struct pim_ssm *ssm;
        struct prefix group;
@@ -88,7 +89,7 @@ int pim_is_grp_ssm(struct in_addr group_addr)
        group.u.prefix4 = group_addr;
        group.prefixlen = 32;
 
-       ssm = pimg->ssm_info;
+       ssm = pim->ssm_info;
        if (!ssm->plist_name) {
                return pim_is_grp_standard_ssm(&group);
        }
@@ -100,15 +101,16 @@ int pim_is_grp_ssm(struct in_addr group_addr)
        return (prefix_list_apply(plist, &group) == PREFIX_PERMIT);
 }
 
-int pim_ssm_range_set(vrf_id_t vrf_id, const char *plist_name)
+int pim_ssm_range_set(struct pim_instance *pim, vrf_id_t vrf_id,
+                     const char *plist_name)
 {
        struct pim_ssm *ssm;
        int change = 0;
 
-       if (vrf_id != pimg->vrf_id)
+       if (vrf_id != pim->vrf_id)
                return PIM_SSM_ERR_NO_VRF;
 
-       ssm = pimg->ssm_info;
+       ssm = pim->ssm_info;
        if (plist_name) {
                if (ssm->plist_name) {
                        if (!strcmp(ssm->plist_name, plist_name))
@@ -125,7 +127,7 @@ int pim_ssm_range_set(vrf_id_t vrf_id, const char *plist_name)
        }
 
        if (change)
-               pim_ssm_range_reevaluate();
+               pim_ssm_range_reevaluate(pim);
 
        return PIM_SSM_ERR_NONE;
 }
index 85f7c5de28aca4025cc9b688cc838474bf90e0bd..7235ade8dc779a45400be89fb4e0b175edc3c677 100644 (file)
@@ -32,9 +32,11 @@ struct pim_ssm {
        char *plist_name; /* prefix list of group ranges */
 };
 
-void pim_ssm_prefix_list_update(struct prefix_list *plist);
-int pim_is_grp_ssm(struct in_addr group_addr);
-int pim_ssm_range_set(vrf_id_t vrf_id, const char *plist_name);
+void pim_ssm_prefix_list_update(struct pim_instance *pim,
+                               struct prefix_list *plist);
+int pim_is_grp_ssm(struct pim_instance *pim, struct in_addr group_addr);
+int pim_ssm_range_set(struct pim_instance *pim, vrf_id_t vrf_id,
+                     const char *plist_name);
 void *pim_ssm_init(void);
 void pim_ssm_terminate(struct pim_ssm *ssm);
 #endif
index cb0170767ad43ee10022948244aa09d09f788438..6e255d677cd8e027ba0d468ef7b1ad3d19be1620 100644 (file)
@@ -483,7 +483,7 @@ void pim_upstream_register_reevaluate(struct pim_instance *pim)
                if (!PIM_UPSTREAM_FLAG_TEST_FHR(up->flags) || !up->t_ka_timer)
                        continue;
 
-               if (pim_is_grp_ssm(up->sg.grp)) {
+               if (pim_is_grp_ssm(pim, up->sg.grp)) {
                        /* clear the register state  for SSM groups */
                        if (up->reg_state != PIM_REG_NOINFO) {
                                if (PIM_DEBUG_PIM_EVENTS)
index ab7abb9a6444fcbc45ffbb824703f3450a991bd1..6f915bd98ab8eeab8ddd028361d7217b6e4dc636 100644 (file)
@@ -787,7 +787,8 @@ void igmp_anysource_forward_stop(struct igmp_group *group)
                igmp_source_forward_stop(source);
 }
 
-static void igmp_source_forward_reevaluate_one(struct igmp_source *source)
+static void igmp_source_forward_reevaluate_one(struct pim_instance *pim,
+                                              struct igmp_source *source)
 {
        struct prefix_sg sg;
        struct igmp_group *group = source->source_group;
@@ -802,7 +803,7 @@ static void igmp_source_forward_reevaluate_one(struct igmp_source *source)
        sg.grp = group->group_addr;
 
        ch = pim_ifchannel_find(group->group_igmp_sock->interface, &sg);
-       if (pim_is_grp_ssm(group->group_addr)) {
+       if (pim_is_grp_ssm(pim, group->group_addr)) {
                /* If SSM group withdraw local membership */
                if (ch
                    && (ch->local_ifmembership == PIM_IFMEMBERSHIP_INCLUDE)) {
@@ -866,7 +867,7 @@ void igmp_source_forward_reevaluate_all(void)
                                                     grp->group_source_list,
                                                     srcnode, src)) {
                                                igmp_source_forward_reevaluate_one(
-                                                       src);
+                                                       pim, src);
                                        } /* scan group sources */
                                }        /* scan igmp groups */
                        }                 /* scan igmp sockets */
index ffb025d97aa9fa51a168fd9fafcf323d66ff6c52..465ab73fcdc6d6549f96a23b6919c1f93bc7ac87 100644 (file)
@@ -83,7 +83,7 @@ void pim_prefix_list_update(struct prefix_list *plist)
                        continue;
 
                pim_rp_prefix_list_update(pim, plist);
-               pim_ssm_prefix_list_update(plist);
+               pim_ssm_prefix_list_update(pim, plist);
                pim_upstream_spt_prefix_list_update(pim, plist);
        }
 }