diff options
| author | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2022-11-28 11:36:34 +0100 | 
|---|---|---|
| committer | Carmine Scarpitta <carmine.scarpitta@uniroma2.it> | 2023-08-04 09:29:16 +0200 | 
| commit | c57ff2d123b822f6257c1ba4926bf7f7a51292f8 (patch) | |
| tree | 5d6afc6f1e1ef3cf14a92574bc6b913db31252a2 | |
| parent | eb918dbd25cef3d721c59e65917371806e1019d3 (diff) | |
isisd: Add CLI command to enable SRv6
r1# conf
r1(config)# router isis <area-tag>
r1(config-router)# segment-routing srv6
Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
| -rw-r--r-- | isisd/isis_cli.c | 27 | ||||
| -rw-r--r-- | isisd/isisd.c | 10 | ||||
| -rw-r--r-- | lib/command.h | 1 | 
3 files changed, 38 insertions, 0 deletions
diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c index b455352699..a567953faf 100644 --- a/isisd/isis_cli.c +++ b/isisd/isis_cli.c @@ -2037,6 +2037,31 @@ void cli_show_isis_prefix_sid_algorithm(struct vty *vty,  	vty_out(vty, "\n");  } +/* + * XPath: /frr-isisd:isis/instance/segment-routing-srv6/enabled + */ +DEFPY_YANG_NOSH (isis_srv6_enable, +       isis_srv6_enable_cmd, +       "segment-routing srv6", +       SR_STR +       "Enable Segment Routing over IPv6 (SRv6)\n") +{ +	int ret; +	char xpath[XPATH_MAXLEN + 37]; + +	snprintf(xpath, sizeof(xpath), "%s/segment-routing-srv6", +		 VTY_CURR_XPATH); + +	nb_cli_enqueue_change(vty, "./segment-routing-srv6/enabled", +			      NB_OP_MODIFY, "true"); + +	ret = nb_cli_apply_changes(vty, NULL); +	if (ret == CMD_SUCCESS) +		VTY_PUSH_XPATH(ISIS_SRV6_NODE, xpath); + +	return ret; +} +  void cli_show_isis_srv6_enabled(struct vty *vty, const struct lyd_node *dnode,  				bool show_defaults)  { @@ -3815,6 +3840,8 @@ void isis_cli_init(void)  	install_element(ISIS_NODE, &isis_frr_remote_lfa_plist_cmd);  	install_element(ISIS_NODE, &no_isis_frr_remote_lfa_plist_cmd); +	install_element(ISIS_NODE, &isis_srv6_enable_cmd); +  	install_element(INTERFACE_NODE, &isis_passive_cmd);  	install_element(INTERFACE_NODE, &isis_passwd_cmd); diff --git a/isisd/isisd.c b/isisd/isisd.c index dfb70943c3..f9c12bc7c4 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -3832,6 +3832,13 @@ struct cmd_node isis_flex_algo_node = {  };  #endif /* ifdnef FABRICD */ +struct cmd_node isis_srv6_node = { +	.name = "isis-srv6", +	.node = ISIS_SRV6_NODE, +	.parent_node = ISIS_NODE, +	.prompt = "%s(config-router-srv6)# ", +}; +  void isis_init(void)  {  	/* Install IS-IS top node */ @@ -3944,5 +3951,8 @@ void isis_init(void)  	install_default(ISIS_FLEX_ALGO_NODE);  #endif /* ifdnef FABRICD */ +	install_node(&isis_srv6_node); +	install_default(ISIS_SRV6_NODE); +  	spf_backoff_cmd_init();  } diff --git a/lib/command.h b/lib/command.h index 3167c652c5..a0ff42b107 100644 --- a/lib/command.h +++ b/lib/command.h @@ -172,6 +172,7 @@ enum node_type {  	OPENFABRIC_NODE,	/* OpenFabric router configuration node */  	VRRP_NODE,		 /* VRRP node */  	BMP_NODE,		/* BMP config under router bgp */ +	ISIS_SRV6_NODE,    /* ISIS SRv6 node */  	NODE_TYPE_MAX, /* maximum */  };  /* clang-format on */  | 
