]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: refactor ip mroute cmd 5581/head
authorJafar Al-Gharaibeh <jafar@atcorp.com>
Fri, 20 Dec 2019 21:30:55 +0000 (15:30 -0600)
committerJafar Al-Gharaibeh <jafar@atcorp.com>
Fri, 20 Dec 2019 23:04:03 +0000 (17:04 -0600)
combine:
  ip mroute INTERFACE A.B.C.D
  ip mroute INTERFACE A.B.C.D A.B.C.D

into:
  ip mroute INTERFACE A.B.C.D [A.B.C.D]

Signed-off-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
pimd/pim_cmd.c

index 5c192a9fcdc9120a9f8c5f4ff9ac1dcb9d4e0d07..d165cca086b7ac9922de7a68f36ca0ff233e6ad3 100644 (file)
@@ -7873,55 +7873,7 @@ DEFUN(interface_no_ip_pim_boundary_oil,
 
 DEFUN (interface_ip_mroute,
        interface_ip_mroute_cmd,
-       "ip mroute INTERFACE A.B.C.D",
-       IP_STR
-       "Add multicast route\n"
-       "Outgoing interface name\n"
-       "Group address\n")
-{
-       VTY_DECLVAR_CONTEXT(interface, iif);
-       struct pim_interface *pim_ifp;
-       struct pim_instance *pim;
-       int idx_interface = 2;
-       int idx_ipv4 = 3;
-       struct interface *oif;
-       const char *oifname;
-       const char *grp_str;
-       struct in_addr grp_addr;
-       struct in_addr src_addr;
-       int result;
-
-       PIM_GET_PIM_INTERFACE(pim_ifp, iif);
-       pim = pim_ifp->pim;
-
-       oifname = argv[idx_interface]->arg;
-       oif = if_lookup_by_name(oifname, pim->vrf_id);
-       if (!oif) {
-               vty_out(vty, "No such interface name %s\n", oifname);
-               return CMD_WARNING;
-       }
-
-       grp_str = argv[idx_ipv4]->arg;
-       result = inet_pton(AF_INET, grp_str, &grp_addr);
-       if (result <= 0) {
-               vty_out(vty, "Bad group address %s: errno=%d: %s\n", grp_str,
-                       errno, safe_strerror(errno));
-               return CMD_WARNING;
-       }
-
-       src_addr.s_addr = INADDR_ANY;
-
-       if (pim_static_add(pim, iif, oif, grp_addr, src_addr)) {
-               vty_out(vty, "Failed to add route\n");
-               return CMD_WARNING;
-       }
-
-       return CMD_SUCCESS;
-}
-
-DEFUN (interface_ip_mroute_source,
-       interface_ip_mroute_source_cmd,
-       "ip mroute INTERFACE A.B.C.D A.B.C.D",
+       "ip mroute INTERFACE A.B.C.D [A.B.C.D]",
        IP_STR
        "Add multicast route\n"
        "Outgoing interface name\n"
@@ -7933,7 +7885,6 @@ DEFUN (interface_ip_mroute_source,
        struct pim_instance *pim;
        int idx_interface = 2;
        int idx_ipv4 = 3;
-       int idx_ipv4_2 = 4;
        struct interface *oif;
        const char *oifname;
        const char *grp_str;
@@ -7960,16 +7911,21 @@ DEFUN (interface_ip_mroute_source,
                return CMD_WARNING;
        }
 
-       src_str = argv[idx_ipv4_2]->arg;
-       result = inet_pton(AF_INET, src_str, &src_addr);
-       if (result <= 0) {
-               vty_out(vty, "Bad source address %s: errno=%d: %s\n", src_str,
-                       errno, safe_strerror(errno));
-               return CMD_WARNING;
-       }
+        if (argc == (idx_ipv4 + 1)) {
+                src_addr.s_addr = INADDR_ANY;
+        }
+        else {
+                src_str = argv[idx_ipv4 + 1]->arg;
+                result = inet_pton(AF_INET, src_str, &src_addr);
+                if (result <= 0) {
+                        vty_out(vty, "Bad source address %s: errno=%d: %s\n", src_str,
+                                errno, safe_strerror(errno));
+                        return CMD_WARNING;
+                }
+        }
 
        if (pim_static_add(pim, iif, oif, grp_addr, src_addr)) {
-               vty_out(vty, "Failed to add route\n");
+               vty_out(vty, "Failed to add static mroute\n");
                return CMD_WARNING;
        }
 
@@ -7978,56 +7934,7 @@ DEFUN (interface_ip_mroute_source,
 
 DEFUN (interface_no_ip_mroute,
        interface_no_ip_mroute_cmd,
-       "no ip mroute INTERFACE A.B.C.D",
-       NO_STR
-       IP_STR
-       "Add multicast route\n"
-       "Outgoing interface name\n"
-       "Group Address\n")
-{
-       VTY_DECLVAR_CONTEXT(interface, iif);
-       struct pim_interface *pim_ifp;
-       struct pim_instance *pim;
-       int idx_interface = 3;
-       int idx_ipv4 = 4;
-       struct interface *oif;
-       const char *oifname;
-       const char *grp_str;
-       struct in_addr grp_addr;
-       struct in_addr src_addr;
-       int result;
-
-       PIM_GET_PIM_INTERFACE(pim_ifp, iif);
-       pim = pim_ifp->pim;
-
-       oifname = argv[idx_interface]->arg;
-       oif = if_lookup_by_name(oifname, pim->vrf_id);
-       if (!oif) {
-               vty_out(vty, "No such interface name %s\n", oifname);
-               return CMD_WARNING;
-       }
-
-       grp_str = argv[idx_ipv4]->arg;
-       result = inet_pton(AF_INET, grp_str, &grp_addr);
-       if (result <= 0) {
-               vty_out(vty, "Bad group address %s: errno=%d: %s\n", grp_str,
-                       errno, safe_strerror(errno));
-               return CMD_WARNING;
-       }
-
-       src_addr.s_addr = INADDR_ANY;
-
-       if (pim_static_del(pim, iif, oif, grp_addr, src_addr)) {
-               vty_out(vty, "Failed to remove route\n");
-               return CMD_WARNING;
-       }
-
-       return CMD_SUCCESS;
-}
-
-DEFUN (interface_no_ip_mroute_source,
-       interface_no_ip_mroute_source_cmd,
-       "no ip mroute INTERFACE A.B.C.D A.B.C.D",
+       "no ip mroute INTERFACE A.B.C.D [A.B.C.D]",
        NO_STR
        IP_STR
        "Add multicast route\n"
@@ -8040,7 +7947,6 @@ DEFUN (interface_no_ip_mroute_source,
        struct pim_instance *pim;
        int idx_interface = 3;
        int idx_ipv4 = 4;
-       int idx_ipv4_2 = 5;
        struct interface *oif;
        const char *oifname;
        const char *grp_str;
@@ -8067,16 +7973,21 @@ DEFUN (interface_no_ip_mroute_source,
                return CMD_WARNING;
        }
 
-       src_str = argv[idx_ipv4_2]->arg;
-       result = inet_pton(AF_INET, src_str, &src_addr);
-       if (result <= 0) {
-               vty_out(vty, "Bad source address %s: errno=%d: %s\n", src_str,
-                       errno, safe_strerror(errno));
-               return CMD_WARNING;
-       }
+        if (argc == (idx_ipv4 + 1)) {
+                src_addr.s_addr = INADDR_ANY;
+        }
+        else {
+                src_str = argv[idx_ipv4 + 1]->arg;
+                result = inet_pton(AF_INET, src_str, &src_addr);
+                if (result <= 0) {
+                        vty_out(vty, "Bad source address %s: errno=%d: %s\n", src_str,
+                                errno, safe_strerror(errno));
+                        return CMD_WARNING;
+                }
+        }
 
        if (pim_static_del(pim, iif, oif, grp_addr, src_addr)) {
-               vty_out(vty, "Failed to remove route\n");
+               vty_out(vty, "Failed to remove static mroute\n");
                return CMD_WARNING;
        }
 
@@ -10547,9 +10458,7 @@ void pim_cmd_init(void)
 
        // Static mroutes NEB
        install_element(INTERFACE_NODE, &interface_ip_mroute_cmd);
-       install_element(INTERFACE_NODE, &interface_ip_mroute_source_cmd);
        install_element(INTERFACE_NODE, &interface_no_ip_mroute_cmd);
-       install_element(INTERFACE_NODE, &interface_no_ip_mroute_source_cmd);
 
        install_element(VIEW_NODE, &show_ip_igmp_interface_cmd);
        install_element(VIEW_NODE, &show_ip_igmp_interface_vrf_all_cmd);