From 51491fdc13d68d5ca2fdce7d3f30795b67858eea Mon Sep 17 00:00:00 2001 From: sarita patra Date: Mon, 4 Apr 2022 04:01:45 -0700 Subject: [PATCH] pim6d: introduce ipv6 pim passive command Added a new cli command "ip pim passive" in the interface context, to disable sending of pim control packets on the interface. Signed-off-by: sarita patra --- pimd/pim6_cmd.c | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/pimd/pim6_cmd.c b/pimd/pim6_cmd.c index 6eeb778da9..0f40b35bc5 100644 --- a/pimd/pim6_cmd.c +++ b/pimd/pim6_cmd.c @@ -41,7 +41,7 @@ #include "pim_addr.h" #include "pim_nht.h" #include "pim_bsm.h" - +#include "pim_iface.h" #ifndef VTYSH_EXTRACT_PL #include "pimd/pim6_cmd_clippy.c" @@ -216,21 +216,55 @@ DEFPY (no_ipv6_pim_register_suppress, DEFPY (interface_ipv6_pim, interface_ipv6_pim_cmd, - "ipv6 pim", + "ipv6 pim [passive$passive]", IPV6_STR - PIM_STR) + PIM_STR + "Disable exchange of protocol packets\n") { - return pim_process_ip_pim_cmd(vty); + int ret; + VTY_DECLVAR_CONTEXT(interface, ifp); + struct pim_interface *pim_ifp; + + ret = pim_process_ip_pim_cmd(vty); + + if (ret != NB_OK) + return ret; + + pim_ifp = ifp->info; + if (!pim_ifp) + return CMD_WARNING_CONFIG_FAILED; + + if (passive) + pim_ifp->pim_passive_enable = true; + + return CMD_SUCCESS; } DEFPY (interface_no_ipv6_pim, interface_no_ipv6_pim_cmd, - "no ipv6 pim", + "no ipv6 pim [passive$passive]", NO_STR IPV6_STR - PIM_STR) + PIM_STR + "Disable exchange of protocol packets\n") { - return pim_process_no_ip_pim_cmd(vty); + int ret; + VTY_DECLVAR_CONTEXT(interface, ifp); + struct pim_interface *pim_ifp; + + ret = pim_process_no_ip_pim_cmd(vty); + + if (ret != NB_OK) + return ret; + + pim_ifp = ifp->info; + if (!pim_ifp) + return CMD_WARNING_CONFIG_FAILED; + + if (passive) + pim_ifp->pim_passive_enable = false; + + return CMD_SUCCESS; } DEFPY (interface_ipv6_pim_drprio,