summaryrefslogtreecommitdiffstats
path: root/bgpd
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2016-01-12 19:42:04 +0100
committervivek <vivek@cumulusnetworks.com>2016-06-12 00:52:05 +0200
commit8b1fb8be22f5565618c96f84700975c787e8e935 (patch)
tree335a0c863f4385e13dd8054a1097a6776f7cc6b7 /bgpd
parentbgpd: encap: add encap SAFI (RFC5512) (diff)
downloadfrr-8b1fb8be22f5565618c96f84700975c787e8e935.tar.xz
frr-8b1fb8be22f5565618c96f84700975c787e8e935.zip
bgpd, lib, vtysh: hook up bgp ENCAP CLI node
Signed-off-by: Lou Berger <lberger@labn.net> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> (cherry picked from commit a3fda886cdd48b6d8c421ebb1401142fa9ee93b0) Conflicts: bgpd/bgp_vty.c bgpd/bgpd.c vtysh/vtysh_config.c
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_encap.c5
-rw-r--r--bgpd/bgp_vty.c245
-rw-r--r--bgpd/bgp_vty.h6
-rw-r--r--bgpd/bgpd.c14
4 files changed, 264 insertions, 6 deletions
diff --git a/bgpd/bgp_encap.c b/bgpd/bgp_encap.c
index 2186b2112..4b1b6757a 100644
--- a/bgpd/bgp_encap.c
+++ b/bgpd/bgp_encap.c
@@ -943,9 +943,8 @@ DEFUN (show_bgp_ipv6_encap_rd_neighbor_advertised_routes,
void
bgp_encap_init (void)
{
- //install_element (BGP_ENCAP_NODE, &encap_network_cmd);
- //install_element (BGP_ENCAP_NODE, &no_encap_network_cmd);
-
+ install_element (BGP_ENCAP_NODE, &encap_network_cmd);
+ install_element (BGP_ENCAP_NODE, &no_encap_network_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_cmd);
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_cmd);
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index ed7eca58c..bbeaf3761 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -64,7 +64,8 @@ bgp_node_afi (struct vty *vty)
{
if (vty->node == BGP_IPV6_NODE ||
vty->node == BGP_IPV6M_NODE ||
- vty->node == BGP_VPNV6_NODE)
+ vty->node == BGP_VPNV6_NODE ||
+ vty->node == BGP_ENCAPV6_NODE)
return AFI_IP6;
return AFI_IP;
}
@@ -76,11 +77,51 @@ bgp_node_safi (struct vty *vty)
{
if (vty->node == BGP_VPNV4_NODE || vty->node == BGP_VPNV6_NODE)
return SAFI_MPLS_VPN;
+ if (vty->node == BGP_ENCAP_NODE || vty->node == BGP_ENCAPV6_NODE)
+ return SAFI_ENCAP;
if (vty->node == BGP_IPV4M_NODE || vty->node == BGP_IPV6M_NODE)
return SAFI_MULTICAST;
return SAFI_UNICAST;
}
+int
+bgp_parse_afi(const char *str, afi_t *afi)
+{
+ if (!strcmp(str, "ipv4")) {
+ *afi = AFI_IP;
+ return 0;
+ }
+#ifdef HAVE_IPV6
+ if (!strcmp(str, "ipv6")) {
+ *afi = AFI_IP6;
+ return 0;
+ }
+#endif /* HAVE_IPV6 */
+ return -1;
+}
+
+int
+bgp_parse_safi(const char *str, safi_t *safi)
+{
+ if (!strcmp(str, "encap")) {
+ *safi = SAFI_ENCAP;
+ return 0;
+ }
+ if (!strcmp(str, "multicast")) {
+ *safi = SAFI_MULTICAST;
+ return 0;
+ }
+ if (!strcmp(str, "unicast")) {
+ *safi = SAFI_UNICAST;
+ return 0;
+ }
+ if (!strcmp(str, "vpn")) {
+ *safi = SAFI_MPLS_VPN;
+ return 0;
+ }
+ return -1;
+}
+
static int
peer_address_self_check (struct bgp *bgp, union sockunion *su)
{
@@ -5883,6 +5924,32 @@ ALIAS (address_family_vpnv6,
"Address family\n"
"Address Family Modifier\n")
+DEFUN (address_family_encap,
+ address_family_encap_cmd,
+ "address-family encap",
+ "Enter Address Family command mode\n"
+ "Address family\n")
+{
+ vty->node = BGP_ENCAP_NODE;
+ return CMD_SUCCESS;
+}
+
+ALIAS (address_family_encap,
+ address_family_encapv4_cmd,
+ "address-family encapv4",
+ "Enter Address Family command mode\n"
+ "Address family\n")
+
+DEFUN (address_family_encapv6,
+ address_family_encapv6_cmd,
+ "address-family encapv6",
+ "Enter Address Family command mode\n"
+ "Address family\n")
+{
+ vty->node = BGP_ENCAPV6_NODE;
+ return CMD_SUCCESS;
+}
+
DEFUN (exit_address_family,
exit_address_family_cmd,
"exit-address-family",
@@ -5893,7 +5960,9 @@ DEFUN (exit_address_family,
|| vty->node == BGP_VPNV4_NODE
|| vty->node == BGP_IPV6_NODE
|| vty->node == BGP_IPV6M_NODE
- || vty->node == BGP_VPNV6_NODE)
+ || vty->node == BGP_VPNV6_NODE
+ || vty->node == BGP_ENCAP_NODE
+ || vty->node == BGP_ENCAPV6_NODE)
vty->node = BGP_NODE;
return CMD_SUCCESS;
}
@@ -10688,12 +10757,16 @@ afi_safi_print (afi_t afi, safi_t safi)
return "IPv4 Multicast";
else if (afi == AFI_IP && safi == SAFI_MPLS_VPN)
return "VPN-IPv4 Unicast";
+ else if (afi == AFI_IP && safi == SAFI_ENCAP)
+ return "ENCAP-IPv4 Unicast";
else if (afi == AFI_IP6 && safi == SAFI_UNICAST)
return "IPv6 Unicast";
else if (afi == AFI_IP6 && safi == SAFI_MULTICAST)
return "IPv6 Multicast";
else if (afi == AFI_IP6 && safi == SAFI_MPLS_VPN)
return "VPN-IPv6 Unicast";
+ else if (afi == AFI_IP6 && safi == SAFI_ENCAP)
+ return "ENCAP-IPv6 Unicast";
else
return "Unknown";
}
@@ -11477,7 +11550,11 @@ bgp_show_peer (struct vty *vty, struct peer *p, u_char use_json, json_object *js
|| p->afc_recv[AFI_IP6][SAFI_MULTICAST]
|| p->afc_adv[AFI_IP6][SAFI_MPLS_VPN]
|| p->afc_recv[AFI_IP6][SAFI_MPLS_VPN]
+ || p->afc_adv[AFI_IP6][SAFI_ENCAP]
+ || p->afc_recv[AFI_IP6][SAFI_ENCAP]
#endif /* HAVE_IPV6 */
+ || p->afc_adv[AFI_IP][SAFI_ENCAP]
+ || p->afc_recv[AFI_IP][SAFI_ENCAP]
|| p->afc_adv[AFI_IP][SAFI_MPLS_VPN]
|| p->afc_recv[AFI_IP][SAFI_MPLS_VPN])
{
@@ -14138,6 +14215,20 @@ static struct cmd_node bgp_vpnv6_node =
1
};
+static struct cmd_node bgp_encap_node =
+{
+ BGP_ENCAP_NODE,
+ "%s(config-router-af-encap)# ",
+ 1
+};
+
+static struct cmd_node bgp_encapv6_node =
+{
+ BGP_ENCAPV6_NODE,
+ "%s(config-router-af-encapv6)# ",
+ 1
+};
+
static void community_list_vty (void);
void
@@ -14151,6 +14242,8 @@ bgp_vty_init (void)
install_node (&bgp_ipv6_multicast_node, NULL);
install_node (&bgp_vpnv4_node, NULL);
install_node (&bgp_vpnv6_node, NULL);
+ install_node (&bgp_encap_node, NULL);
+ install_node (&bgp_encapv6_node, NULL);
/* Install default VTY commands to new nodes. */
install_default (BGP_NODE);
@@ -14160,6 +14253,8 @@ bgp_vty_init (void)
install_default (BGP_IPV6M_NODE);
install_default (BGP_VPNV4_NODE);
install_default (BGP_VPNV6_NODE);
+ install_default (BGP_ENCAP_NODE);
+ install_default (BGP_ENCAPV6_NODE);
/* "bgp multiple-instance" commands. */
install_element (CONFIG_NODE, &bgp_multiple_instance_cmd);
@@ -14406,6 +14501,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &neighbor_activate_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_activate_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_activate_cmd);
/* "no neighbor activate" commands. */
install_element (BGP_NODE, &no_neighbor_activate_cmd);
@@ -14415,6 +14512,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_activate_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_activate_cmd);
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);
/* "neighbor peer-group" set commands.
* Long term we should only accept this command under BGP_NODE and not all of
@@ -14429,6 +14528,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &neighbor_set_peer_group_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_set_peer_group_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_set_peer_group_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_set_peer_group_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_set_peer_group_cmd);
/* "no neighbor peer-group unset" commands. */
install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd);
@@ -14438,6 +14539,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_set_peer_group_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_set_peer_group_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_set_peer_group_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_set_peer_group_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_set_peer_group_cmd);
/* "neighbor softreconfiguration inbound" commands.*/
install_element (BGP_NODE, &neighbor_soft_reconfiguration_cmd);
@@ -14454,6 +14557,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_soft_reconfiguration_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_soft_reconfiguration_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_soft_reconfiguration_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_soft_reconfiguration_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_soft_reconfiguration_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
/* "neighbor attribute-unchanged" commands. */
install_element (BGP_NODE, &neighbor_attr_unchanged_cmd);
@@ -14611,6 +14718,51 @@ bgp_vty_init (void)
install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged9_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged10_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged1_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged2_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged3_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged4_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged5_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged6_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged7_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged8_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged9_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged10_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged1_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged2_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged3_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged4_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged5_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged6_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged7_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged8_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged9_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged10_cmd);
+
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged1_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged2_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged3_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged4_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged5_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged6_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged7_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged8_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged9_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged10_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged1_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged2_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged3_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged4_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged5_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged6_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged7_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged8_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged9_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged10_cmd);
/* "nexthop-local unchanged" commands */
install_element (BGP_IPV6_NODE, &neighbor_nexthop_local_unchanged_cmd);
@@ -14631,6 +14783,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_nexthop_self_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_nexthop_self_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_nexthop_self_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_nexthop_self_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_nexthop_self_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_nexthop_self_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_nexthop_self_cmd);
/* "neighbor next-hop-self force" commands. */
install_element (BGP_NODE, &neighbor_nexthop_self_force_cmd);
@@ -14721,6 +14877,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_replace_as_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_remove_private_as_all_replace_as_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_all_replace_as_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_remove_private_as_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_remove_private_as_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_remove_private_as_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_remove_private_as_cmd);
/* "neighbor send-community" commands.*/
install_element (BGP_NODE, &neighbor_send_community_cmd);
@@ -14751,6 +14911,14 @@ bgp_vty_init (void)
install_element (BGP_VPNV6_NODE, &neighbor_send_community_type_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_type_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_send_community_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_send_community_type_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_type_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_type_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_type_cmd);
/* "neighbor route-reflector" commands.*/
install_element (BGP_NODE, &neighbor_route_reflector_client_cmd);
@@ -14767,6 +14935,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_route_reflector_client_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_route_reflector_client_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_route_reflector_client_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_route_reflector_client_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_route_reflector_client_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_route_reflector_client_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_reflector_client_cmd);
/* "neighbor route-server" commands.*/
install_element (BGP_NODE, &neighbor_route_server_client_cmd);
@@ -14783,6 +14955,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_route_server_client_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_route_server_client_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_route_server_client_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_route_server_client_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_route_server_client_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_route_server_client_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_server_client_cmd);
/* "neighbor addpath-tx-all-paths" commands.*/
install_element (BGP_NODE, &neighbor_addpath_tx_all_paths_cmd);
@@ -14944,6 +15120,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_distribute_list_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_distribute_list_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_distribute_list_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_distribute_list_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_distribute_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_distribute_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_distribute_list_cmd);
/* "neighbor prefix-list" commands. */
install_element (BGP_NODE, &neighbor_prefix_list_cmd);
@@ -14960,6 +15140,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_prefix_list_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_prefix_list_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_prefix_list_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_prefix_list_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_prefix_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_prefix_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_prefix_list_cmd);
/* "neighbor filter-list" commands. */
install_element (BGP_NODE, &neighbor_filter_list_cmd);
@@ -14976,6 +15160,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_filter_list_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_filter_list_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_filter_list_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_filter_list_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_filter_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_filter_list_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_filter_list_cmd);
/* "neighbor route-map" commands. */
install_element (BGP_NODE, &neighbor_route_map_cmd);
@@ -14992,6 +15180,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_route_map_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_route_map_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_route_map_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_route_map_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_route_map_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_route_map_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_map_cmd);
/* "neighbor unsuppress-map" commands. */
install_element (BGP_NODE, &neighbor_unsuppress_map_cmd);
@@ -15008,6 +15200,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_unsuppress_map_cmd);
install_element (BGP_VPNV6_NODE, &neighbor_unsuppress_map_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_unsuppress_map_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_unsuppress_map_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_unsuppress_map_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_unsuppress_map_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_unsuppress_map_cmd);
/* "neighbor maximum-prefix" commands. */
install_element (BGP_NODE, &neighbor_maximum_prefix_cmd);
@@ -15102,6 +15298,34 @@ bgp_vty_init (void)
install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_val_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
+
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_val_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
+
/* "neighbor allowas-in" */
install_element (BGP_NODE, &neighbor_allowas_in_cmd);
install_element (BGP_NODE, &neighbor_allowas_in_arg_cmd);
@@ -15131,6 +15355,12 @@ bgp_vty_init (void)
install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_arg_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_cmd);
install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_val_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_cmd);
+ install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_arg_cmd);
+ install_element (BGP_ENCAP_NODE, &no_neighbor_allowas_in_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_cmd);
+ install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_arg_cmd);
+ install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd);
/* address-family commands. */
install_element (BGP_NODE, &address_family_ipv4_cmd);
@@ -15142,6 +15372,15 @@ bgp_vty_init (void)
install_element (BGP_NODE, &address_family_vpnv4_cmd);
install_element (BGP_NODE, &address_family_vpnv4_unicast_cmd);
+ install_element (BGP_NODE, &address_family_vpnv6_cmd);
+ install_element (BGP_NODE, &address_family_vpnv6_unicast_cmd);
+
+ install_element (BGP_NODE, &address_family_encap_cmd);
+ install_element (BGP_NODE, &address_family_encapv4_cmd);
+#ifdef HAVE_IPV6
+ install_element (BGP_NODE, &address_family_encapv6_cmd);
+#endif
+
/* "exit-address-family" command. */
install_element (BGP_IPV4_NODE, &exit_address_family_cmd);
install_element (BGP_IPV4M_NODE, &exit_address_family_cmd);
@@ -15149,6 +15388,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &exit_address_family_cmd);
install_element (BGP_VPNV4_NODE, &exit_address_family_cmd);
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);
/* "clear ip bgp commands" */
install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd);
diff --git a/bgpd/bgp_vty.h b/bgpd/bgp_vty.h
index 16cda49f6..ba520af06 100644
--- a/bgpd/bgp_vty.h
+++ b/bgpd/bgp_vty.h
@@ -40,4 +40,10 @@ extern int bgp_vty_return (struct vty *vty, int ret);
extern struct peer *
peer_and_group_lookup_vty (struct vty *vty, const char *peer_str);
+extern int
+bgp_parse_afi(const char *str, afi_t *afi);
+
+extern int
+bgp_parse_safi(const char *str, safi_t *safi);
+
#endif /* _QUAGGA_BGP_VTY_H */
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index f694f7156..bab20fc88 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -6903,7 +6903,9 @@ bgp_config_write_family_header (struct vty *vty, afi_t afi, safi_t safi,
else if (safi == SAFI_MULTICAST)
vty_out (vty, "ipv4 multicast");
else if (safi == SAFI_MPLS_VPN)
- vty_out (vty, "vpnv4 unicast");
+ vty_out (vty, "vpnv4");
+ else if (safi == SAFI_ENCAP)
+ vty_out (vty, "encap");
}
else if (afi == AFI_IP6)
{
@@ -6913,6 +6915,8 @@ bgp_config_write_family_header (struct vty *vty, afi_t afi, safi_t safi,
vty_out (vty, "ipv6 multicast");
else if (safi == SAFI_MPLS_VPN)
vty_out (vty, "vpnv6");
+ else if (safi == SAFI_ENCAP)
+ vty_out (vty, "encapv6");
}
vty_out (vty, "%s", VTY_NEWLINE);
@@ -7194,6 +7198,9 @@ bgp_config_write (struct vty *vty)
/* IPv4 VPN configuration. */
write += bgp_config_write_family (vty, bgp, AFI_IP, SAFI_MPLS_VPN);
+ /* ENCAPv4 configuration. */
+ write += bgp_config_write_family (vty, bgp, AFI_IP, SAFI_ENCAP);
+
/* IPv6 unicast configuration. */
write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_UNICAST);
@@ -7203,6 +7210,11 @@ bgp_config_write (struct vty *vty)
/* IPv6 VPN configuration. */
write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_MPLS_VPN);
+ /* ENCAPv6 configuration. */
+ write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_ENCAP);
+
+ vty_out (vty, " exit%s", VTY_NEWLINE);
+
write++;
}
return write;