[quagga-dev 12979] Re: [PATCH-v2] PIMD: Create ability to modify hell and hold timers per interface

Everton Marques everton.marques at gmail.com
Mon Aug 24 17:38:06 BST 2015


Ack: Looks good to me.

On Fri, Aug 21, 2015 at 8:35 PM, Donald Sharp <sharpd at cumulusnetworks.com>
wrote:

> Create new per interface command:
> 'ip pim hello <1-180> {<1-180>}'
>
> The first number is the Hello Timer for this interface
> The second number is the Hold Timer to pass to neighbors on this interface.
> The second number is optional.
>
> Signed-off-by: Donald Sharp <sharpd at cumulusnetworks.com>
> ---
>  pimd/pim_cmd.c | 69
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  pimd/pim_cmd.h |  3 +++
>  pimd/pim_vty.c |  8 +++++++
>  3 files changed, 79 insertions(+), 1 deletion(-)
>
> diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
> index f19b212..0d9fd73 100644
> --- a/pimd/pim_cmd.c
> +++ b/pimd/pim_cmd.c
> @@ -3051,7 +3051,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;
>    }
>
> @@ -3133,6 +3133,70 @@ DEFUN (interface_no_ip_pim_ssm,
>    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",
> @@ -4407,6 +4471,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);
>
>    install_element (VIEW_NODE, &show_ip_igmp_interface_cmd);
>    install_element (VIEW_NODE, &show_ip_igmp_join_cmd);
> diff --git a/pimd/pim_cmd.h b/pimd/pim_cmd.h
> index c503740..3dcbce8 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 e31e2d6..512c0e6 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);
> --
> 1.9.1
>
>
> _______________________________________________
> Quagga-dev mailing list
> Quagga-dev at lists.quagga.net
> https://lists.quagga.net/mailman/listinfo/quagga-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quagga.net/pipermail/quagga-dev/attachments/20150824/1b4d9b49/attachment-0001.html>


More information about the Quagga-dev mailing list