mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 00:56:19 +00:00
bgpd: basic vty support for EVPN
Introduction of EVPN address-family node that is reachable under BGP node, like follow: address-family evpn. Under that node, only some commands are available for configuring a neighbor or setting some basic settings like attribute unchanged behaviour. Currently, no vty command is available for setting NLRI entries for EVPN. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
14a227b873
commit
4e0b7b6d35
@ -74,6 +74,9 @@ bgp_node_afi (struct vty *vty)
|
||||
case BGP_ENCAPV6_NODE:
|
||||
afi = AFI_IP6;
|
||||
break;
|
||||
case BGP_EVPN_NODE:
|
||||
afi = AFI_L2VPN;
|
||||
break;
|
||||
default:
|
||||
afi = AFI_IP;
|
||||
break;
|
||||
@ -101,6 +104,9 @@ bgp_node_safi (struct vty *vty)
|
||||
case BGP_IPV6M_NODE:
|
||||
safi = SAFI_MULTICAST;
|
||||
break;
|
||||
case BGP_EVPN_NODE:
|
||||
safi = SAFI_EVPN;
|
||||
break;
|
||||
default:
|
||||
safi = SAFI_UNICAST;
|
||||
break;
|
||||
@ -119,6 +125,9 @@ bgp_vty_afi_from_arg(const char *afi_str)
|
||||
else if (!strcmp(afi_str, "ipv6")) {
|
||||
afi = AFI_IP6;
|
||||
}
|
||||
else if (!strcmp(afi_str, "l2vpn")) {
|
||||
afi = AFI_L2VPN;
|
||||
}
|
||||
return afi;
|
||||
}
|
||||
|
||||
@ -195,6 +204,12 @@ argv_find_and_parse_safi (struct cmd_token **argv, int argc, int *index, safi_t
|
||||
if (safi)
|
||||
*safi = SAFI_ENCAP;
|
||||
}
|
||||
else if (argv_find (argv, argc, "evpn", index))
|
||||
{
|
||||
ret = 1;
|
||||
if (safi)
|
||||
*safi = SAFI_EVPN;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -5695,6 +5710,18 @@ DEFUN (address_family_encapv6,
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (address_family_evpn,
|
||||
address_family_evpn_cmd,
|
||||
"address-family evpn",
|
||||
"Enter Address Family command mode\n"
|
||||
"Address family\n")
|
||||
{
|
||||
#if defined(HAVE_EVPN)
|
||||
vty->node = BGP_EVPN_NODE;
|
||||
#endif /* HAVE_EVPN */
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (exit_address_family,
|
||||
exit_address_family_cmd,
|
||||
"exit-address-family",
|
||||
@ -5707,7 +5734,8 @@ DEFUN (exit_address_family,
|
||||
|| vty->node == BGP_IPV6M_NODE
|
||||
|| vty->node == BGP_VPNV6_NODE
|
||||
|| vty->node == BGP_ENCAP_NODE
|
||||
|| vty->node == BGP_ENCAPV6_NODE)
|
||||
|| vty->node == BGP_ENCAPV6_NODE
|
||||
|| vty->node == BGP_EVPN_NODE)
|
||||
vty->node = BGP_NODE;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
@ -9966,6 +9994,13 @@ static struct cmd_node bgp_encapv6_node =
|
||||
1
|
||||
};
|
||||
|
||||
static struct cmd_node bgp_evpn_node =
|
||||
{
|
||||
BGP_EVPN_NODE,
|
||||
"%s(config-router-evpn)# ",
|
||||
1
|
||||
};
|
||||
|
||||
static void community_list_vty (void);
|
||||
|
||||
void
|
||||
@ -9981,6 +10016,7 @@ bgp_vty_init (void)
|
||||
install_node (&bgp_vpnv6_node, NULL);
|
||||
install_node (&bgp_encap_node, NULL);
|
||||
install_node (&bgp_encapv6_node, NULL);
|
||||
install_node (&bgp_evpn_node, NULL);
|
||||
|
||||
/* Install default VTY commands to new nodes. */
|
||||
install_default (BGP_NODE);
|
||||
@ -9992,6 +10028,7 @@ bgp_vty_init (void)
|
||||
install_default (BGP_VPNV6_NODE);
|
||||
install_default (BGP_ENCAP_NODE);
|
||||
install_default (BGP_ENCAPV6_NODE);
|
||||
install_default (BGP_EVPN_NODE);
|
||||
|
||||
/* "bgp multiple-instance" commands. */
|
||||
install_element (CONFIG_NODE, &bgp_multiple_instance_cmd);
|
||||
@ -10205,6 +10242,7 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_EVPN_NODE, &neighbor_activate_cmd);
|
||||
|
||||
/* "no neighbor activate" commands. */
|
||||
install_element (BGP_NODE, &no_neighbor_activate_cmd);
|
||||
@ -10216,6 +10254,7 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_EVPN_NODE, &no_neighbor_activate_cmd);
|
||||
|
||||
/* "neighbor peer-group" set commands.
|
||||
* Long term we should only accept this command under BGP_NODE and not all of
|
||||
@ -10286,6 +10325,9 @@ bgp_vty_init (void)
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
install_element (BGP_EVPN_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_EVPN_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
/* "nexthop-local unchanged" commands */
|
||||
install_element (BGP_IPV6_NODE, &neighbor_nexthop_local_unchanged_cmd);
|
||||
install_element (BGP_IPV6_NODE, &no_neighbor_nexthop_local_unchanged_cmd);
|
||||
@ -10828,6 +10870,8 @@ bgp_vty_init (void)
|
||||
install_element (BGP_NODE, &address_family_encap_cmd);
|
||||
install_element (BGP_NODE, &address_family_encapv6_cmd);
|
||||
|
||||
install_element (BGP_NODE, &address_family_evpn_cmd);
|
||||
|
||||
/* "exit-address-family" command. */
|
||||
install_element (BGP_IPV4_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_IPV4M_NODE, &exit_address_family_cmd);
|
||||
@ -10837,6 +10881,7 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_EVPN_NODE, &exit_address_family_cmd);
|
||||
|
||||
/* "clear ip bgp commands" */
|
||||
install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd);
|
||||
|
Loading…
Reference in New Issue
Block a user