summaryrefslogtreecommitdiff
path: root/ospfd/ospf_vty.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospfd/ospf_vty.c')
-rw-r--r--ospfd/ospf_vty.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index a7b59e7916..4c248c0df3 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -8312,10 +8312,12 @@ DEFUN (ip_ospf_hello_interval,
{
VTY_DECLVAR_CONTEXT(interface, ifp);
int idx = 0;
- struct in_addr addr;
+ struct in_addr addr = {.s_addr = 0L};
struct ospf_if_params *params;
params = IF_DEF_PARAMS(ifp);
uint32_t seconds = 0;
+ bool is_addr = false;
+ uint32_t old_interval = 0;
argv_find(argv, argc, "(1-65535)", &idx);
seconds = strtol(argv[idx]->arg, NULL, 10);
@@ -8329,8 +8331,15 @@ DEFUN (ip_ospf_hello_interval,
params = ospf_get_if_params(ifp, addr);
ospf_if_update_params(ifp, addr);
+ is_addr = true;
}
+ old_interval = params->v_hello;
+
+ /* Return, if same interval is configured. */
+ if (old_interval == seconds)
+ return CMD_SUCCESS;
+
SET_IF_PARAM(params, v_hello);
params->v_hello = seconds;
@@ -8345,6 +8354,8 @@ DEFUN (ip_ospf_hello_interval,
params->v_wait = 4 * seconds;
}
+ ospf_reset_hello_timer(ifp, addr, is_addr);
+
return CMD_SUCCESS;
}
@@ -8371,7 +8382,7 @@ DEFUN (no_ip_ospf_hello_interval,
{
VTY_DECLVAR_CONTEXT(interface, ifp);
int idx = 0;
- struct in_addr addr;
+ struct in_addr addr = {.s_addr = 0L};
struct ospf_if_params *params;
struct route_node *rn;