]> git.proxmox.com Git - mirror_frr.git/commitdiff
pim6d: Moving the common lines of pim_show_nexthop_lookup cli
authorSai Gomathi N <nsaigomathi@vmware.com>
Thu, 9 Jun 2022 11:22:42 +0000 (04:22 -0700)
committerSai Gomathi N <nsaigomathi@vmware.com>
Thu, 9 Jun 2022 11:22:42 +0000 (04:22 -0700)
Moving the common lines of pim_show_nexthop_lookup cli
in pim_cmd.c and pim6_cmd.c to pim_cmd_common.c file

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
pimd/pim6_cmd.c
pimd/pim_cmd.c
pimd/pim_cmd_common.c
pimd/pim_cmd_common.h

index 55d77f6e963ad92c05384cf3abf6a0d10f95a985..2b13d70f516d30714bf6bd3d5cb17bef39a00df3 100644 (file)
@@ -1432,37 +1432,7 @@ DEFPY (show_ipv6_pim_nexthop_lookup,
        "Source/RP address\n"
        "Multicast Group address\n")
 {
-       struct prefix nht_p;
-       int result = 0;
-       pim_addr vif_source;
-       struct prefix grp;
-       struct pim_nexthop nexthop;
-       struct vrf *v;
-
-       v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
-
-       if (!v)
-               return CMD_WARNING;
-
-       if (!pim_rp_set_upstream_addr(v->info, &vif_source, source, group))
-               return CMD_SUCCESS;
-
-       pim_addr_to_prefix(&nht_p, vif_source);
-       pim_addr_to_prefix(&grp, group);
-       memset(&nexthop, 0, sizeof(nexthop));
-
-       result = pim_ecmp_nexthop_lookup(v->info, &nexthop, &nht_p, &grp, 0);
-
-       if (!result) {
-               vty_out(vty,
-                       "Nexthop Lookup failed, no usable routes returned.\n");
-               return CMD_SUCCESS;
-       }
-
-       vty_out(vty, "Group %s --- Nexthop %pPAs Interface %s\n", group_str,
-               &nexthop.mrib_nexthop_addr, nexthop.interface->name);
-
-       return CMD_SUCCESS;
+       return pim_show_nexthop_lookup_cmd_helper(vrf, vty, source, group);
 }
 
 DEFPY (show_ipv6_multicast,
index ec1a2f4c579d5123cbbf2f41265a141f40b813c6..ccd3a64bedc6368d7111dccd8e9ddcd4d8358e4b 100644 (file)
@@ -3298,49 +3298,7 @@ DEFPY (show_ip_pim_nexthop_lookup,
        "Source/RP address\n"
        "Multicast Group address\n")
 {
-       struct prefix nht_p;
-       int result = 0;
-       pim_addr vif_source;
-       struct prefix grp;
-       struct pim_nexthop nexthop;
-       struct vrf *v;
-
-       v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
-
-       if (!v)
-               return CMD_WARNING;
-
-       if (pim_is_group_224_4(source)) {
-               vty_out(vty,
-                       "Invalid argument. Expected Valid Source Address.\n");
-               return CMD_WARNING;
-       }
-
-       if (!pim_is_group_224_4(group)) {
-               vty_out(vty,
-                       "Invalid argument. Expected Valid Multicast Group Address.\n");
-               return CMD_WARNING;
-       }
-
-       if (!pim_rp_set_upstream_addr(v->info, &vif_source, source, group))
-               return CMD_SUCCESS;
-
-       pim_addr_to_prefix(&nht_p, vif_source);
-       pim_addr_to_prefix(&grp, group);
-       memset(&nexthop, 0, sizeof(nexthop));
-
-       result = pim_ecmp_nexthop_lookup(v->info, &nexthop, &nht_p, &grp, 0);
-
-       if (!result) {
-               vty_out(vty,
-                       "Nexthop Lookup failed, no usable routes returned.\n");
-               return CMD_SUCCESS;
-       }
-
-       vty_out(vty, "Group %s --- Nexthop %pPAs Interface %s \n", group_str,
-               &nexthop.mrib_nexthop_addr, nexthop.interface->name);
-
-       return CMD_SUCCESS;
+       return pim_show_nexthop_lookup_cmd_helper(vrf, vty, source, group);
 }
 
 DEFUN (show_ip_pim_interface_traffic,
index 666d7672eb1dd1d302f05cf14a2c22bbb16b8bfa..54abd17d5e661cb6f3163ef6c4e81a505fd2094c 100644 (file)
@@ -55,6 +55,7 @@
 #include "pim_static.h"
 #include "pim_addr.h"
 #include "pim_static.h"
+#include "pim_util.h"
 
 /**
  * Get current node VRF name.
@@ -2597,6 +2598,59 @@ static int pim_print_pnc_cache_walkcb(struct hash_bucket *bucket, void *arg)
        return CMD_SUCCESS;
 }
 
+int pim_show_nexthop_lookup_cmd_helper(const char *vrf, struct vty *vty,
+                                      pim_addr source, pim_addr group)
+{
+       struct prefix nht_p;
+       int result = 0;
+       pim_addr vif_source;
+       struct prefix grp;
+       struct pim_nexthop nexthop;
+       struct vrf *v;
+       char grp_str[PREFIX_STRLEN];
+
+       v = vrf_lookup_by_name(vrf ? vrf : VRF_DEFAULT_NAME);
+
+       if (!v)
+               return CMD_WARNING;
+
+#if PIM_IPV == 4
+       if (pim_is_group_224_4(source)) {
+               vty_out(vty,
+                       "Invalid argument. Expected Valid Source Address.\n");
+               return CMD_WARNING;
+       }
+
+       if (!pim_is_group_224_4(group)) {
+               vty_out(vty,
+                       "Invalid argument. Expected Valid Multicast Group Address.\n");
+               return CMD_WARNING;
+       }
+#endif
+
+       if (!pim_rp_set_upstream_addr(v->info, &vif_source, source, group))
+               return CMD_SUCCESS;
+
+       pim_addr_to_prefix(&nht_p, vif_source);
+       pim_addr_to_prefix(&grp, group);
+       memset(&nexthop, 0, sizeof(nexthop));
+
+       result = pim_ecmp_nexthop_lookup(v->info, &nexthop, &nht_p, &grp, 0);
+
+       if (!result) {
+               vty_out(vty,
+                       "Nexthop Lookup failed, no usable routes returned.\n");
+               return CMD_SUCCESS;
+       }
+
+       pim_addr_dump("<grp?>", &grp, grp_str, sizeof(grp_str));
+
+       vty_out(vty, "Group %s --- Nexthop %pPAs Interface %s\n", grp_str,
+               &nexthop.mrib_nexthop_addr, nexthop.interface->name);
+
+       return CMD_SUCCESS;
+}
+
 int pim_show_nexthop_cmd_helper(const char *vrf, struct vty *vty)
 {
        struct vrf *v;
index 2ff738997d2ed9e98ccdf581bc9336bc252a6ff8..bb07a7da0f2f3c5a75b214b22c06022259c9a24d 100644 (file)
@@ -102,6 +102,8 @@ void pim_show_interfaces_single(struct pim_instance *pim, struct vty *vty,
                                json_object *json);
 void ip_pim_ssm_show_group_range(struct pim_instance *pim, struct vty *vty,
                                 bool uj);
+int pim_show_nexthop_lookup_cmd_helper(const char *vrf, struct vty *vty,
+                                      pim_addr source, pim_addr group);
 int pim_show_nexthop_cmd_helper(const char *vrf, struct vty *vty);
 void pim_show_nexthop(struct pim_instance *pim, struct vty *vty);
 int pim_show_neighbors_cmd_helper(const char *vrf, struct vty *vty,