]> git.puffer.fish Git - mirror/frr.git/commitdiff
pimd: Create ability to modify hell and hold timers per interface
authorDonald Sharp <sharpd@cumulusnetworks.com>
Fri, 21 Aug 2015 23:35:27 +0000 (19:35 -0400)
committerDonald Sharp <sharpd@cumulusnetwroks.com>
Thu, 26 May 2016 00:38:33 +0000 (20:38 -0400)
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@cumulusnetworks.com>
pimd/pim_cmd.c
pimd/pim_cmd.h
pimd/pim_vty.c

index 2bc1de00705afbe784e4fb5ccb44c57e998a336c..bbefdf3876aa5f66c83ee169894fd0de10074035 100644 (file)
@@ -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);
index 25e2444624cf8519bee083ef92e4fbd38f7bd8b1..a1cb58161f8acaa8ddf7d4c05e4c562f477d708b 100644 (file)
@@ -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"
index 071515edc3ff23034450beecf570320fc0138bd2..2d6895dbc9a7f9a44aaabaf3314292ceb45efe35 100644 (file)
@@ -143,6 +143,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);