diff options
| author | Philippe Guibert <philippe.guibert@6wind.com> | 2019-09-19 14:13:57 +0200 | 
|---|---|---|
| committer | Louis Scalbert <louis.scalbert@6wind.com> | 2024-01-18 13:23:33 +0100 | 
| commit | 1420189c11e52f8ff306de5d3d0e6a81293e54a9 (patch) | |
| tree | f2b8c67460147e231db539eddcd09bac59d59112 /vtysh | |
| parent | fd83486a2957761b1658773f9a7706e58d297780 (diff) | |
bgpd: add support of rpki in vrf configure context
Add support of RPKI commands in the VRF configure context.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Diffstat (limited to 'vtysh')
| -rw-r--r-- | vtysh/vtysh.c | 19 | ||||
| -rw-r--r-- | vtysh/vtysh.h | 2 | ||||
| -rw-r--r-- | vtysh/vtysh_config.c | 11 | 
3 files changed, 29 insertions, 3 deletions
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c index 2888403e62..28768801f2 100644 --- a/vtysh/vtysh.c +++ b/vtysh/vtysh.c @@ -1625,6 +1625,14 @@ static struct cmd_node rpki_node = {  	.parent_node = CONFIG_NODE,  	.prompt = "%s(config-rpki)# ",  }; + +static struct cmd_node rpki_vrf_node = { +	.name = "rpki", +	.node = RPKI_VRF_NODE, +	.parent_node = VRF_NODE, +	.prompt = "%s(config-vrf-rpki)# ", +}; +  #endif /* HAVE_BGPD */  #if HAVE_BFDD > 0 @@ -1855,7 +1863,10 @@ DEFUNSH(VTYSH_BGPD,  	"rpki",  	"Enable rpki and enter rpki configuration mode\n")  { -	vty->node = RPKI_NODE; +	if (vty->node == CONFIG_NODE) +		vty->node = RPKI_NODE; +	else +		vty->node = RPKI_VRF_NODE;  	return CMD_SUCCESS;  } @@ -5071,6 +5082,12 @@ void vtysh_init_vty(void)  	install_element(VRF_NODE, &vtysh_exit_vrf_cmd);  	install_element(VRF_NODE, &vtysh_quit_vrf_cmd); +	install_node(&rpki_vrf_node); +	install_element(VRF_NODE, &rpki_cmd); +	install_element(RPKI_VRF_NODE, &rpki_exit_cmd); +	install_element(RPKI_VRF_NODE, &rpki_quit_cmd); +	install_element(RPKI_VRF_NODE, &vtysh_end_all_cmd); +  	install_element(CONFIG_NODE, &vtysh_affinity_map_cmd);  	install_element(CONFIG_NODE, &vtysh_no_affinity_map_cmd); diff --git a/vtysh/vtysh.h b/vtysh/vtysh.h index 11751d027e..f63d4be6ee 100644 --- a/vtysh/vtysh.h +++ b/vtysh/vtysh.h @@ -58,7 +58,7 @@ extern struct event_loop *master;  		VTYSH_EIGRPD | VTYSH_BABELD | VTYSH_PBRD | VTYSH_FABRICD |     \  		VTYSH_VRRPD | VTYSH_MGMTD  #define VTYSH_INTERFACE VTYSH_INTERFACE_SUBSET | VTYSH_BGPD -#define VTYSH_VRF	VTYSH_INTERFACE_SUBSET +#define VTYSH_VRF	VTYSH_INTERFACE_SUBSET | RPKI_VRF_NODE  #define VTYSH_KEYS VTYSH_RIPD | VTYSH_EIGRPD | VTYSH_OSPF6D | VTYSH_OSPFD  /* Daemons who can process nexthop-group configs */  #define VTYSH_NH_GROUP    VTYSH_PBRD|VTYSH_SHARPD diff --git a/vtysh/vtysh_config.c b/vtysh/vtysh_config.c index c02f27c876..888f6a8c21 100644 --- a/vtysh/vtysh_config.c +++ b/vtysh/vtysh_config.c @@ -315,11 +315,20 @@ void vtysh_config_parse_line(void *arg, const char *line)  			} else if (!strncmp(line, " ip mroute",  					    strlen(" ip mroute"))) {  				config_add_line_uniq_end(config->line, line); +			} else if ((strncmp(line, " rpki", strlen(" rpki")) == +				    0) && +				   config->index == VRF_NODE) { +				config_add_line(config->line, line); +				config->index = RPKI_VRF_NODE;  			} else if (config->index == RMAP_NODE ||  				   config->index == INTERFACE_NODE ||  				   config->index == VTY_NODE)  				config_add_line_uniq(config->line, line); -			else if (config->index == NH_GROUP_NODE) { +			else if (config->index == RPKI_VRF_NODE && +				 strncmp(line, "  exit", strlen("  exit")) == 0) { +				config_add_line(config->line, line); +				config->index = VRF_NODE; +			} else if (config->index == NH_GROUP_NODE) {  				if (strncmp(line, " resilient",  					    strlen(" resilient")) == 0)  					config_add_line_head(config->line,  | 
