summaryrefslogtreecommitdiffstats
path: root/bgpd
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2016-01-12 13:41:56 -0500
committerPaul Jakma <paul.jakma@hpe.com>2016-02-26 14:11:43 +0000
commit13c378d96a57017f5995b2e0df46cfc31123f0e8 (patch)
tree6b4669bf22264a816ef451f3058cd8f59872eab5 /bgpd
parent9da04bca0e994ec92b9242159bf27d89c6743354 (diff)
downloadquagga-13c378d96a57017f5995b2e0df46cfc31123f0e8.tar.bz2
quagga-13c378d96a57017f5995b2e0df46cfc31123f0e8.tar.xz
bgpd, lib, vtysh: hook up bgp VPNv6 CLI node
Signed-off-by: Lou Berger <lberger@labn.net> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_vty.c112
-rw-r--r--bgpd/bgpd.c15
2 files changed, 121 insertions, 6 deletions
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 6f3af9ea..304da253 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -57,8 +57,15 @@ extern struct in_addr router_id_zebra;
afi_t
bgp_node_afi (struct vty *vty)
{
- if (vty->node == BGP_IPV6_NODE || vty->node == BGP_IPV6M_NODE)
- return AFI_IP6;
+ switch (vty->node)
+ {
+ case BGP_IPV6_NODE:
+ case BGP_IPV6M_NODE:
+ case BGP_VPNV6_NODE:
+ return AFI_IP6;
+ break;
+ }
+
return AFI_IP;
}
@@ -67,6 +74,8 @@ bgp_node_afi (struct vty *vty)
safi_t
bgp_node_safi (struct vty *vty)
{
+ if (vty->node == BGP_VPNV6_NODE)
+ return SAFI_MPLS_VPN;
if (vty->node == BGP_VPNV4_NODE)
return SAFI_MPLS_VPN;
if (vty->node == BGP_IPV4M_NODE || vty->node == BGP_IPV6M_NODE)
@@ -4285,6 +4294,23 @@ ALIAS (address_family_vpnv4,
"Address family\n"
"Address Family Modifier\n")
+DEFUN (address_family_vpnv6,
+ address_family_vpnv6_cmd,
+ "address-family vpnv6",
+ "Enter Address Family command mode\n"
+ "Address family\n")
+{
+ vty->node = BGP_VPNV6_NODE;
+ return CMD_SUCCESS;
+}
+
+ALIAS (address_family_vpnv6,
+ address_family_vpnv6_unicast_cmd,
+ "address-family vpnv6 unicast",
+ "Enter Address Family command mode\n"
+ "Address family\n"
+ "Address Family Modifier\n")
+
DEFUN (exit_address_family,
exit_address_family_cmd,
"exit-address-family",
@@ -4293,6 +4319,7 @@ DEFUN (exit_address_family,
if (vty->node == BGP_IPV4_NODE
|| vty->node == BGP_IPV4M_NODE
|| vty->node == BGP_VPNV4_NODE
+ || vty->node == BGP_VPNV6_NODE
|| vty->node == BGP_IPV6_NODE
|| vty->node == BGP_IPV6M_NODE)
vty->node = BGP_NODE;
@@ -9116,6 +9143,13 @@ static struct cmd_node bgp_vpnv4_node =
1
};
+static struct cmd_node bgp_vpnv6_node =
+{
+ BGP_VPNV6_NODE,
+ "%s(config-router-af-vpnv6)# ",
+ 1
+};
+
static void community_list_vty (void);
void
@@ -9128,6 +9162,7 @@ bgp_vty_init (void)
install_node (&bgp_ipv6_unicast_node, NULL);
install_node (&bgp_ipv6_multicast_node, NULL);
install_node (&bgp_vpnv4_node, NULL);
+ install_node (&bgp_vpnv6_node, NULL);
/* Install default VTY commands to new nodes. */
install_default (BGP_NODE);
@@ -9136,6 +9171,7 @@ bgp_vty_init (void)
install_default (BGP_IPV6_NODE);
install_default (BGP_IPV6M_NODE);
install_default (BGP_VPNV4_NODE);
+ install_default (BGP_VPNV6_NODE);
/* "bgp multiple-instance" commands. */
install_element (CONFIG_NODE, &bgp_multiple_instance_cmd);
@@ -9294,6 +9330,7 @@ bgp_vty_init (void)
install_element (BGP_IPV6_NODE, &neighbor_activate_cmd);
install_element (BGP_IPV6M_NODE, &neighbor_activate_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd);
/* "no neighbor activate" commands. */
install_element (BGP_NODE, &no_neighbor_activate_cmd);
@@ -9302,6 +9339,7 @@ bgp_vty_init (void)
install_element (BGP_IPV6_NODE, &no_neighbor_activate_cmd);
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);
/* "neighbor peer-group set" commands. */
install_element (BGP_NODE, &neighbor_set_peer_group_cmd);
@@ -9310,6 +9348,7 @@ bgp_vty_init (void)
install_element (BGP_IPV6_NODE, &neighbor_set_peer_group_cmd);
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);
/* "no neighbor peer-group unset" commands. */
install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd);
@@ -9318,6 +9357,7 @@ bgp_vty_init (void)
install_element (BGP_IPV6_NODE, &no_neighbor_set_peer_group_cmd);
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);
/* "neighbor softreconfiguration inbound" commands.*/
install_element (BGP_NODE, &neighbor_soft_reconfiguration_cmd);
@@ -9332,6 +9372,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_soft_reconfiguration_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_soft_reconfiguration_cmd);
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);
/* "neighbor attribute-unchanged" commands. */
install_element (BGP_NODE, &neighbor_attr_unchanged_cmd);
@@ -9467,6 +9509,29 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged9_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_attr_unchanged10_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged1_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged2_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged3_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged4_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged5_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged6_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged7_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged8_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged9_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged10_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged1_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged2_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged3_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged4_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged5_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged6_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged7_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged8_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged9_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged10_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);
@@ -9489,6 +9554,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_nexthop_self_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_nexthop_self_cmd);
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);
/* "neighbor remove-private-AS" commands. */
install_element (BGP_NODE, &neighbor_remove_private_as_cmd);
@@ -9503,6 +9570,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_remove_private_as_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_remove_private_as_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_remove_private_as_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_remove_private_as_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_cmd);
/* "neighbor send-community" commands.*/
install_element (BGP_NODE, &neighbor_send_community_cmd);
@@ -9529,6 +9598,10 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &neighbor_send_community_type_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_send_community_type_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_send_community_cmd);
+ 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);
/* "neighbor route-reflector" commands.*/
install_element (BGP_NODE, &neighbor_route_reflector_client_cmd);
@@ -9543,6 +9616,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_route_reflector_client_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_route_reflector_client_cmd);
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);
/* "neighbor route-server" commands.*/
install_element (BGP_NODE, &neighbor_route_server_client_cmd);
@@ -9557,6 +9632,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_route_server_client_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_route_server_client_cmd);
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);
/* "neighbor passive" commands. */
install_element (BGP_NODE, &neighbor_passive_cmd);
@@ -9685,6 +9762,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_distribute_list_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_distribute_list_cmd);
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);
/* "neighbor prefix-list" commands. */
install_element (BGP_NODE, &neighbor_prefix_list_cmd);
@@ -9699,6 +9778,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_prefix_list_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_prefix_list_cmd);
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);
/* "neighbor filter-list" commands. */
install_element (BGP_NODE, &neighbor_filter_list_cmd);
@@ -9713,6 +9794,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_filter_list_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_filter_list_cmd);
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);
/* "neighbor route-map" commands. */
install_element (BGP_NODE, &neighbor_route_map_cmd);
@@ -9727,6 +9810,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_route_map_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_route_map_cmd);
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);
/* "neighbor unsuppress-map" commands. */
install_element (BGP_NODE, &neighbor_unsuppress_map_cmd);
@@ -9741,6 +9826,8 @@ bgp_vty_init (void)
install_element (BGP_IPV6M_NODE, &no_neighbor_unsuppress_map_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_unsuppress_map_cmd);
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);
/* "neighbor maximum-prefix" commands. */
install_element (BGP_NODE, &neighbor_maximum_prefix_cmd);
@@ -9822,6 +9909,20 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_restart_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_maximum_prefix_threshold_restart_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_val_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_warning_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_threshold_warning_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_restart_cmd);
+ install_element (BGP_VPNV6_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);
@@ -9841,6 +9942,9 @@ bgp_vty_init (void)
install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_cmd);
install_element (BGP_VPNV4_NODE, &neighbor_allowas_in_arg_cmd);
install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_cmd);
+ install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_arg_cmd);
+ install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_cmd);
/* address-family commands. */
install_element (BGP_NODE, &address_family_ipv4_cmd);
@@ -9852,12 +9956,16 @@ 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);
+
/* "exit-address-family" command. */
install_element (BGP_IPV4_NODE, &exit_address_family_cmd);
install_element (BGP_IPV4M_NODE, &exit_address_family_cmd);
install_element (BGP_IPV6_NODE, &exit_address_family_cmd);
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);
/* "clear ip bgp commands" */
install_element (ENABLE_NODE, &clear_ip_bgp_all_cmd);
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index c3c0dba3..d9c32cee 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -5286,10 +5286,14 @@ bgp_config_write_family_header (struct vty *vty, afi_t afi, safi_t safi,
}
else if (afi == AFI_IP6)
{
- vty_out (vty, "ipv6");
-
- if (safi == SAFI_MULTICAST)
- vty_out (vty, " multicast");
+ if (safi == SAFI_MPLS_VPN)
+ vty_out (vty, "vpnv6");
+ else
+ {
+ vty_out (vty, "ipv6");
+ if (safi == SAFI_MULTICAST)
+ vty_out (vty, " multicast");
+ }
}
vty_out (vty, "%s", VTY_NEWLINE);
@@ -5531,6 +5535,9 @@ bgp_config_write (struct vty *vty)
/* IPv6 multicast configuration. */
write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_MULTICAST);
+ /* IPv6 VPN configuration. */
+ write += bgp_config_write_family (vty, bgp, AFI_IP6, SAFI_MPLS_VPN);
+
write++;
}
return write;