summaryrefslogtreecommitdiff
path: root/pimd/pim_cmd_common.c
diff options
context:
space:
mode:
authorSai Gomathi N <nsaigomathi@vmware.com>2022-06-09 04:22:42 -0700
committerSai Gomathi N <nsaigomathi@vmware.com>2022-06-09 04:22:42 -0700
commitfe7eaf4065cab165d40a6010d00d5c84273a4cf0 (patch)
tree01dafb2d4807e455594c9f83c6c5fd1ebb56e7c1 /pimd/pim_cmd_common.c
parentcefa37cf41709bc23a1be296b6ed63097ea47350 (diff)
pim6d: Moving the common lines of pim_show_nexthop_lookup cli
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>
Diffstat (limited to 'pimd/pim_cmd_common.c')
-rw-r--r--pimd/pim_cmd_common.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/pimd/pim_cmd_common.c b/pimd/pim_cmd_common.c
index 666d7672eb..54abd17d5e 100644
--- a/pimd/pim_cmd_common.c
+++ b/pimd/pim_cmd_common.c
@@ -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;