diff options
-rw-r--r-- | pimd/pim_cmd.c | 69 | ||||
-rw-r--r-- | pimd/pim_cmd.h | 3 | ||||
-rw-r--r-- | pimd/pim_vty.c | 8 |
3 files changed, 79 insertions, 1 deletions
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c index 33644540..55545c15 100644 --- a/pimd/pim_cmd.c +++ b/pimd/pim_cmd.c @@ -3169,7 +3169,7 @@ DEFUN (interface_no_ip_pim_drprio, pim_ifp = ifp->info; if (!pim_ifp) { - vty_out(vty, "Pim no enabled on this interface%s", VTY_NEWLINE); + vty_out(vty, "Pim not enabled on this interface%s", VTY_NEWLINE); return CMD_WARNING; } @@ -3445,6 +3445,70 @@ DEFUN (interface_no_ip_mroute_source, return CMD_SUCCESS; } +DEFUN (interface_ip_pim_hello, + interface_ip_pim_hello_cmd, + "ip pim hello <1-180>", + IP_STR + PIM_STR + IFACE_PIM_HELLO_STR + IFACE_PIM_HELLO_TIME_STR) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + + ifp = vty->index; + pim_ifp = ifp->info; + + if (!pim_ifp) { + vty_out(vty, "Pim not enabled on this interface%s", VTY_NEWLINE); + return CMD_WARNING; + } + + pim_ifp->pim_hello_period = strtol(argv[0], NULL, 10); + + if (argc == 2) + pim_ifp->pim_default_holdtime = strtol(argv[1], NULL, 10); + + return CMD_SUCCESS; +} + +ALIAS (interface_ip_pim_hello, + interface_ip_pim_hello_hold_cmd, + "ip pim hello <1-180> <1-180>", + IP_STR + PIM_STR + IFACE_PIM_HELLO_STR + IFACE_PIM_HELLO_TIME_STR + IFACE_PIM_HELLO_HOLD_STR) + + +DEFUN (interface_no_ip_pim_hello, + interface_no_ip_pim_hello_cmd, + "no ip pim hello {<1-180> <1-180>}", + NO_STR + IP_STR + PIM_STR + IFACE_PIM_HELLO_STR + IFACE_PIM_HELLO_TIME_STR + IFACE_PIM_HELLO_HOLD_STR) +{ + struct interface *ifp; + struct pim_interface *pim_ifp; + + ifp = vty->index; + pim_ifp = ifp->info; + + if (!pim_ifp) { + vty_out(vty, "Pim not enabled on this interface%s", VTY_NEWLINE); + return CMD_WARNING; + } + + pim_ifp->pim_hello_period = PIM_DEFAULT_HELLO_PERIOD; + pim_ifp->pim_default_holdtime = -1; + + return CMD_SUCCESS; +} + DEFUN (debug_igmp, debug_igmp_cmd, "debug igmp", @@ -4746,6 +4810,9 @@ void pim_cmd_init() install_element (INTERFACE_NODE, &interface_no_ip_pim_ssm_cmd); install_element (INTERFACE_NODE, &interface_ip_pim_drprio_cmd); install_element (INTERFACE_NODE, &interface_no_ip_pim_drprio_cmd); + install_element (INTERFACE_NODE, &interface_ip_pim_hello_cmd); + install_element (INTERFACE_NODE, &interface_ip_pim_hello_hold_cmd); + install_element (INTERFACE_NODE, &interface_no_ip_pim_hello_cmd); // Static mroutes NEB install_element (INTERFACE_NODE, &interface_ip_mroute_cmd); diff --git a/pimd/pim_cmd.h b/pimd/pim_cmd.h index 25e24446..a1cb5816 100644 --- a/pimd/pim_cmd.h +++ b/pimd/pim_cmd.h @@ -30,6 +30,9 @@ #define CONF_SSMPINGD_STR "Enable ssmpingd operation\n" #define SHOW_SSMPINGD_STR "ssmpingd operation\n" #define IFACE_PIM_STR "Enable PIM SSM operation\n" +#define IFACE_PIM_HELLO_STR "Hello Interval\n" +#define IFACE_PIM_HELLO_TIME_STR "Time in seconds for Hello Interval\n" +#define IFACE_PIM_HELLO_HOLD_STR "Time in seconds for Hold Interval\n" #define IFACE_IGMP_STR "Enable IGMP operation\n" #define IFACE_IGMP_QUERY_INTERVAL_STR "IGMP host query interval\n" #define IFACE_IGMP_QUERY_MAX_RESPONSE_TIME_STR "IGMP max query response value (seconds)\n" diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c index e31e2d6e..512c0e67 100644 --- a/pimd/pim_vty.c +++ b/pimd/pim_vty.c @@ -142,6 +142,14 @@ int pim_interface_config_write(struct vty *vty) ++writes; } + /* IF ip pim hello */ + if (pim_ifp->pim_hello_period != PIM_DEFAULT_HELLO_PERIOD) { + vty_out(vty, " ip pim hello %d", pim_ifp->pim_hello_period); + if (pim_ifp->pim_default_holdtime != -1) + vty_out(vty, " %d", pim_ifp->pim_default_holdtime); + vty_out(vty, "%s", VTY_NEWLINE); + } + /* IF ip igmp */ if (PIM_IF_TEST_IGMP(pim_ifp->options)) { vty_out(vty, " ip igmp%s", VTY_NEWLINE); |