diff options
| author | Emanuele Di Pascale <emanuele@voltanet.io> | 2018-11-14 10:40:20 +0100 | 
|---|---|---|
| committer | Emanuele Di Pascale <emanuele@voltanet.io> | 2018-12-18 15:23:49 +0100 | 
| commit | 5336ba3025aa91e85f2c838898555470137ce80e (patch) | |
| tree | 6b946b50c9a03b456931f7a182e74f2403ab8b90 /isisd/isis_vty_fabricd.c | |
| parent | dcb1dcd6dc4d1414d3245f2f5b8a2fca0687e621 (diff) | |
isisd: retrofit the 'spf-delay-ietf' command
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
Diffstat (limited to 'isisd/isis_vty_fabricd.c')
| -rw-r--r-- | isisd/isis_vty_fabricd.c | 62 | 
1 files changed, 62 insertions, 0 deletions
diff --git a/isisd/isis_vty_fabricd.c b/isisd/isis_vty_fabricd.c index b29b3910b1..4cd32a9511 100644 --- a/isisd/isis_vty_fabricd.c +++ b/isisd/isis_vty_fabricd.c @@ -31,6 +31,7 @@  #include "isisd/isis_lsp.h"  #include "isisd/isis_csm.h"  #include "isisd/isis_circuit.h" +#include "lib/spf_backoff.h"  DEFUN (fabric_tier,         fabric_tier_cmd, @@ -621,6 +622,64 @@ DEFUN (no_area_lsp_mtu,  	return isis_vty_lsp_mtu_set(vty, DEFAULT_LSP_MTU);  } +DEFUN (no_spf_delay_ietf, +       no_spf_delay_ietf_cmd, +       "no spf-delay-ietf", +       NO_STR +       "IETF SPF delay algorithm\n") +{ +	VTY_DECLVAR_CONTEXT(isis_area, area); + +	spf_backoff_free(area->spf_delay_ietf[0]); +	spf_backoff_free(area->spf_delay_ietf[1]); +	area->spf_delay_ietf[0] = NULL; +	area->spf_delay_ietf[1] = NULL; + +	return CMD_SUCCESS; +} + +DEFUN (spf_delay_ietf, +       spf_delay_ietf_cmd, +       "spf-delay-ietf init-delay (0-60000) short-delay (0-60000) long-delay (0-60000) holddown (0-60000) time-to-learn (0-60000)", +       "IETF SPF delay algorithm\n" +       "Delay used while in QUIET state\n" +       "Delay used while in QUIET state in milliseconds\n" +       "Delay used while in SHORT_WAIT state\n" +       "Delay used while in SHORT_WAIT state in milliseconds\n" +       "Delay used while in LONG_WAIT\n" +       "Delay used while in LONG_WAIT state in milliseconds\n" +       "Time with no received IGP events before considering IGP stable\n" +       "Time with no received IGP events before considering IGP stable (in milliseconds)\n" +       "Maximum duration needed to learn all the events related to a single failure\n" +       "Maximum duration needed to learn all the events related to a single failure (in milliseconds)\n") +{ +	VTY_DECLVAR_CONTEXT(isis_area, area); + +	long init_delay = atol(argv[2]->arg); +	long short_delay = atol(argv[4]->arg); +	long long_delay = atol(argv[6]->arg); +	long holddown = atol(argv[8]->arg); +	long timetolearn = atol(argv[10]->arg); + +	size_t bufsiz = strlen(area->area_tag) + sizeof("IS-IS  Lx"); +	char *buf = XCALLOC(MTYPE_TMP, bufsiz); + +	snprintf(buf, bufsiz, "IS-IS %s L1", area->area_tag); +	spf_backoff_free(area->spf_delay_ietf[0]); +	area->spf_delay_ietf[0] = +		spf_backoff_new(master, buf, init_delay, short_delay, +				long_delay, holddown, timetolearn); + +	snprintf(buf, bufsiz, "IS-IS %s L2", area->area_tag); +	spf_backoff_free(area->spf_delay_ietf[1]); +	area->spf_delay_ietf[1] = +		spf_backoff_new(master, buf, init_delay, short_delay, +				long_delay, holddown, timetolearn); + +	XFREE(MTYPE_TMP, buf); +	return CMD_SUCCESS; +} +  void isis_vty_daemon_init(void)  {  	install_element(ROUTER_NODE, &fabric_tier_cmd); @@ -654,4 +713,7 @@ void isis_vty_daemon_init(void)  	install_element(ROUTER_NODE, &spf_interval_cmd);  	install_element(ROUTER_NODE, &no_spf_interval_cmd); + +	install_element(ROUTER_NODE, &spf_delay_ietf_cmd); +	install_element(ROUTER_NODE, &no_spf_delay_ietf_cmd);  }  | 
