summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_cmd.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index d7e94d11dd..a0516d4066 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -7328,8 +7328,14 @@ DEFUN (ip_pim_bfd,
struct pim_interface *pim_ifp = ifp->info;
struct bfd_info *bfd_info = NULL;
- if (!pim_ifp)
- return CMD_SUCCESS;
+ if (!pim_ifp) {
+ if (!pim_cmd_interface_add(ifp)) {
+ vty_out(vty, "Could not enable PIM SM on interface\n");
+ return CMD_WARNING;
+ }
+ }
+ pim_ifp = ifp->info;
+
bfd_info = pim_ifp->bfd_info;
if (!bfd_info || !CHECK_FLAG(bfd_info->flags, BFD_FLAG_PARAM_CFG))
@@ -7350,8 +7356,10 @@ DEFUN (no_ip_pim_bfd,
VTY_DECLVAR_CONTEXT(interface, ifp);
struct pim_interface *pim_ifp = ifp->info;
- if (!pim_ifp)
- return CMD_SUCCESS;
+ if (!pim_ifp) {
+ vty_out(vty, "Pim not enabled on this interface\n");
+ return CMD_WARNING;
+ }
if (pim_ifp->bfd_info) {
pim_bfd_reg_dereg_all_nbr(ifp, ZEBRA_BFD_DEST_DEREGISTER);
@@ -7379,7 +7387,14 @@ DEFUN (ip_pim_bfd_param,
u_int32_t tx_val;
u_int8_t dm_val;
int ret;
+ struct pim_interface *pim_ifp = ifp->info;
+ if (!pim_ifp) {
+ if (!pim_cmd_interface_add(ifp)) {
+ vty_out(vty, "Could not enable PIM SM on interface\n");
+ return CMD_WARNING;
+ }
+ }
if ((ret = bfd_validate_param(
vty, argv[idx_number]->arg, argv[idx_number_2]->arg,