]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: introduce ip pim passive command
authorsarita patra <saritap@vmware.com>
Thu, 7 Apr 2022 07:41:14 +0000 (00:41 -0700)
committersarita patra <saritap@vmware.com>
Fri, 13 May 2022 06:50:06 +0000 (23:50 -0700)
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 <saritap@vmware.com>
pimd/pim_cmd.c

index 55e58f2d9a892fbd2c065a0335a17603ae811a7c..d89d1afea1e84873e56e17856ffc596b4e8ec8be 100644 (file)
@@ -5262,13 +5262,30 @@ DEFUN_HIDDEN (interface_ip_pim_sm,
        return pim_process_ip_pim_cmd(vty);
 }
 
-DEFUN (interface_ip_pim,
+DEFPY (interface_ip_pim,
        interface_ip_pim_cmd,
-       "ip pim",
+       "ip pim [passive$passive]",
        IP_STR
-       PIM_STR)
+       PIM_STR
+       "Disable exchange of protocol packets\n")
 {
-       return pim_process_ip_pim_cmd(vty);
+       VTY_DECLVAR_CONTEXT(interface, ifp);
+       struct pim_interface *pim_ifp;
+       int ret;
+
+       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;
 }
 
 DEFUN_HIDDEN (interface_no_ip_pim_ssm,
@@ -5293,14 +5310,31 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm,
        return pim_process_no_ip_pim_cmd(vty);
 }
 
-DEFUN (interface_no_ip_pim,
+DEFPY (interface_no_ip_pim,
        interface_no_ip_pim_cmd,
-       "no ip pim",
+       "no ip pim [passive$passive]",
        NO_STR
        IP_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;
 }
 
 /* boundaries */