-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2018-2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
# See the License for the specific language governing permissions and
# limitations under the License.
-add_definitions (-DWITH_LIBSSL=1)
-include_directories(${OPENSSL_INCLUDE_DIR})
-
unset(VNET_SOURCES)
unset(VNET_HEADERS)
unset(VNET_API_FILES)
unset(VNET_MULTIARCH_SOURCES)
+option(VPP_IP_FIB_MTRIE_16 "IP FIB's MTRIE Stride is 16-8-8 (if not set it's 8-8-8-8)" ON)
+
##############################################################################
# Generic stuff
##############################################################################
config.c
devices/devices.c
devices/netlink.c
+ error.c
flow/flow.c
flow/flow_cli.c
+ flow/flow_api.c
handoff.c
interface.c
interface_api.c
interface_cli.c
interface_format.c
interface_output.c
+ interface/caps.c
+ interface/rx_queue.c
+ interface/tx_queue.c
+ interface/runtime.c
+ interface/monitor.c
+ interface/stats.c
interface_stats.c
misc.c
)
list(APPEND VNET_HEADERS
api_errno.h
+ error.h
buffer.h
config.h
devices/devices.h
devices/netlink.h
flow/flow.h
global_funcs.h
- handoff.h
+ interface/rx_queue_funcs.h
+ interface/tx_queue_funcs.h
interface.h
interface_funcs.h
+ interface_output.h
ip/ip4_to_ip6.h
ip/ip6_to_ip4.h
ip/ip_types_api.h
plugin/plugin.h
pipeline.h
vnet.h
- vnet_all_api_h.h
- vnet_msg_enum.h
util/radix.h
util/refcount.h
format_fns.h
ip/ip_format_fns.h
+ ip/ip_sas.h
ethernet/ethernet_format_fns.h
+ ethernet/ethernet_types_api.h
)
list(APPEND VNET_API_FILES
interface.api
interface_types.api
ip/ip_types.api
+ flow/flow_types.api
+ flow/flow.api
)
##############################################################################
policer/policer_types.api
)
-##############################################################################
-# Cop - junk filter
-##############################################################################
-list(APPEND VNET_SOURCES
- cop/cop.c
- cop/node1.c
- cop/ip4_whitelist.c
- cop/ip6_whitelist.c
- cop/cop_api.c
-)
-
-list(APPEND VNET_MULTIARCH_SOURCES
- cop/node1.c
- cop/ip4_whitelist.c
- cop/ip6_whitelist.c
-)
-
-list(APPEND VNET_HEADERS
- cop/cop.h
-)
-
-list(APPEND VNET_API_FILES cop/cop.api)
-
##############################################################################
# Layer 2 protocols go here
##############################################################################
l2/l2_flood.c
l2/l2_fwd.c
l2/l2_input.c
+ l2/l2_input_node.c
l2/l2_input_vtr.c
l2/l2_learn.c
l2/l2_output.c
l2/l2_patch.c
l2/l2_in_out_feat_arc.c
l2/l2_input_classify.c
- l2/l2_input.c
+ l2/l2_input_node.c
l2/l2_output_classify.c
l2/l2_flood.c
l2/l2_uu_fwd.c
list(APPEND VNET_API_FILES vxlan/vxlan.api)
-##############################################################################
-# Layer 2 / Geneve
-##############################################################################
-list(APPEND VNET_SOURCES
- geneve/geneve.c
- geneve/encap.c
- geneve/decap.c
- geneve/geneve_api.c
-)
-
-list(APPEND VNET_MULTIARCH_SOURCES
- geneve/encap.c
- geneve/decap.c
-)
-
-list(APPEND VNET_HEADERS
- geneve/geneve.h
- geneve/geneve_packet.h
- geneve/geneve_error.def
-)
-
-list(APPEND VNET_API_FILES geneve/geneve.api)
-
##############################################################################
# Layer 2 / Bonding
##############################################################################
list(APPEND VNET_MULTIARCH_SOURCES bonding/node.c bonding/device.c)
list(APPEND VNET_API_FILES bonding/bond.api)
-##############################################################################
-# Layer 2 / LLDP
-##############################################################################
-list(APPEND VNET_SOURCES
- lldp/lldp_input.c
- lldp/lldp_node.c
- lldp/lldp_output.c
- lldp/lldp_cli.c
- lldp/lldp_api.c
-)
-
-list(APPEND VNET_HEADERS
- lldp/lldp_protocol.h
- lldp/lldp.h
-)
-
-list(APPEND VNET_API_FILES lldp/lldp.api)
-
##############################################################################
# Layer 2/3 "classify"
##############################################################################
ip/reass/ip6_sv_reass.c
ip/ip_api.c
ip/ip_checksum.c
+ ip/ip_container_proxy.c
ip/ip_frag.c
ip/ip.c
+ ip/ip_interface.c
ip/ip_init.c
ip/ip_in_out_acl.c
+ ip/ip_path_mtu.c
+ ip/ip_path_mtu_node.c
ip/ip_punt_drop.c
ip/ip_types.c
ip/lookup.c
ip/punt.c
ip/punt_node.c
ip/vtep.c
+ ip/ip_sas.c
)
list(APPEND VNET_MULTIARCH_SOURCES
ip/ip6_punt_drop.c
ip/punt_node.c
ip/ip_in_out_acl.c
+ ip/ip_path_mtu_node.c
)
list(APPEND VNET_HEADERS
ip/icmp4.h
ip/icmp6.h
ip/igmp_packet.h
- ip/ip4_error.h
ip/ip4.h
ip/ip4_mtrie.h
+ ip/ip4_inlines.h
ip/ip4_packet.h
ip/ip46_address.h
- ip/ip6_error.h
ip/ip6.h
ip/ip6_hop_by_hop.h
ip/ip6_hop_by_hop_packet.h
+ ip/ip6_inlines.h
ip/ip6_packet.h
ip/ip.h
+ ip/ip_container_proxy.h
+ ip/ip_flow_hash.h
+ ip/ip_table.h
+ ip/ip_interface.h
ip/ip_packet.h
+ ip/ip_psh_cksum.h
ip/ip_source_and_port_range_check.h
ip/ip_types.h
ip/lookup.h
ip/protocols.def
ip/punt_error.def
ip/punt.h
+ ip/reass/ip4_sv_reass.h
+ ip/reass/ip6_sv_reass.h
)
list(APPEND VNET_API_FILES
crypto/cli.c
crypto/crypto.c
crypto/format.c
+ crypto/node.c
+ crypto/crypto_api.c
)
list(APPEND VNET_HEADERS
crypto/crypto.h
)
+list(APPEND VNET_MULTIARCH_SOURCES crypto/node.c)
+
+list(APPEND VNET_API_FILES crypto/crypto.api)
+
##############################################################################
# Layer 3 protocol: IPSec
##############################################################################
ipsec/ipsec_format.c
ipsec/ipsec_handoff.c
ipsec/ipsec_input.c
+ ipsec/ipsec_itf.c
ipsec/ipsec_punt.c
ipsec/ipsec_sa.c
ipsec/ipsec_spd.c
tcp/tcp_cubic.c
tcp/tcp_debug.c
tcp/tcp_sack.c
+ tcp/tcp_timer.c
tcp/tcp.c
)
udp/udp_pg.c
udp/udp_encap_node.c
udp/udp_encap.c
+ udp/udp_decap.c
udp/udp_api.c
+ udp/udp_output.c
)
list(APPEND VNET_MULTIARCH_SOURCES
list(APPEND VNET_HEADERS
udp/udp_error.def
udp/udp.h
+ udp/udp_encap.h
udp/udp_packet.h
+ udp/udp_inlines.h
+ udp/udp_local.h
)
list(APPEND VNET_API_FILES udp/udp.api)
list(APPEND VNET_HEADERS
tunnel/tunnel.h
tunnel/tunnel_dp.h
+ tunnel/tunnel_types_api.h
)
-##############################################################################
-# Tunnel protocol: l2tpv3
-##############################################################################
-list(APPEND VNET_SOURCES
- l2tp/l2tp.c
- l2tp/encap.c
- l2tp/decap.c
- l2tp/pg.c
- l2tp/l2tp_api.c
-)
-
-list(APPEND VNET_MULTIARCH_SOURCES
- l2tp/encap.c
- l2tp/decap.c
-)
-
-list(APPEND VNET_HEADERS
- l2tp/l2tp.h
- l2tp/packet.h
-)
-
-list(APPEND VNET_API_FILES l2tp/l2tp.api)
-
##############################################################################
# Tunnel protocol: gre+mpls
##############################################################################
list(APPEND VNET_HEADERS
mpls/mpls.h
+ mpls/mpls_lookup.h
mpls/mpls_types.h
mpls/mpls_tunnel.h
mpls/packet.h
- mpls/error.def
)
list(APPEND VNET_API_FILES mpls/mpls.api)
-##############################################################################
-# Tunnel protocol: vxlan-gbp
-##############################################################################
-list(APPEND VNET_SOURCES
- vxlan-gbp/decap.c
- vxlan-gbp/encap.c
- vxlan-gbp/vxlan_gbp_api.c
- vxlan-gbp/vxlan_gbp.c
- vxlan-gbp/vxlan_gbp_packet.c
-)
-
-list (APPEND VNET_MULTIARCH_SOURCES
- vxlan-gbp/decap.c
- vxlan-gbp/encap.c
-)
-
-list(APPEND VNET_HEADERS
- vxlan-gbp/vxlan_gbp.h
- vxlan-gbp/vxlan_gbp_packet.h
- vxlan-gbp/vxlan_gbp_error.def
-)
-
-list(APPEND VNET_API_FILES vxlan-gbp/vxlan_gbp.api)
-
##############################################################################
# Tunnel protocol: vxlan-gpe
##############################################################################
list(APPEND VNET_API_FILES vxlan-gpe/vxlan_gpe.api)
-##############################################################################
-# LISP control plane: lisp-cp
-##############################################################################
-
-list(APPEND VNET_SOURCES
- lisp-cp/lisp_types.c
- lisp-cp/lisp_cp_dpo.c
- lisp-cp/control.c
- lisp-cp/gid_dictionary.c
- lisp-cp/lisp_msg_serdes.c
- lisp-cp/packets.c
- lisp-cp/one_cli.c
- lisp-cp/lisp_cli.c
- lisp-cp/one_api.c
- lisp-cp/lisp_api.c
-)
-
-list(APPEND VNET_HEADERS
- lisp-cp/lisp_types.h
- lisp-cp/packets.h
- lisp-cp/gid_dictionary.h
- lisp-cp/lisp_cp_messages.h
- lisp-cp/lisp_msg_serdes.h
- lisp-cp/control.h
-)
-
-list(APPEND VNET_API_FILES lisp-cp/lisp.api)
-list(APPEND VNET_API_FILES lisp-cp/one.api)
-
-##############################################################################
-# Tunnel protocol: lisp-gpe
-##############################################################################
-
-list(APPEND VNET_SOURCES
- lisp-gpe/lisp_gpe.c
- lisp-gpe/lisp_gpe_sub_interface.c
- lisp-gpe/lisp_gpe_adjacency.c
- lisp-gpe/lisp_gpe_tunnel.c
- lisp-gpe/lisp_gpe_fwd_entry.c
- lisp-gpe/lisp_gpe_tenant.c
- lisp-gpe/interface.c
- lisp-gpe/decap.c
- lisp-gpe/lisp_gpe_api.c
-)
-
-list(APPEND VNET_HEADERS
- lisp-gpe/lisp_gpe.h
- lisp-gpe/lisp_gpe_fwd_entry.h
- lisp-gpe/lisp_gpe_tenant.h
- lisp-gpe/lisp_gpe_packet.h
- lisp-gpe/lisp_gpe_error.def
-)
-
-list(APPEND VNET_API_FILES lisp-gpe/lisp_gpe.api)
-
##############################################################################
# ipv6 segment routing
##############################################################################
srv6/sr_policy_rewrite.c
srv6/sr_steering.c
srv6/sr_api.c
+ srv6/sr_pt.c
+ srv6/sr_pt_node.c
+ srv6/sr_pt_api.c
)
list(APPEND VNET_HEADERS
srv6/sr_packet.h
srv6/sr.h
+ srv6/sr_pt.h
)
list(APPEND VNET_API_FILES
srv6/sr.api
srv6/sr_types.api
+ srv6/sr_pt.api
)
##############################################################################
list(APPEND VNET_API_FILES
srmpls/sr_mpls.api
- srv6/sr_types.api
)
##############################################################################
list(APPEND VNET_API_FILES ipfix-export/ipfix_export.api)
+##############################################################################
+# HASH
+##############################################################################
+list(APPEND VNET_SOURCES
+ hash/hash.c
+ hash/cli.c
+ hash/crc32_5tuple.c
+ hash/handoff_eth.c
+ hash/hash_eth.c
+)
+
+list(APPEND VNET_HEADERS
+ hash/hash.h
+)
+
##############################################################################
# GSO
##############################################################################
)
list(APPEND VNET_HEADERS
+ gso/gro.h
+ gso/gro_func.h
+ gso/hdr_offset_parser.h
gso/gso.h
)
devices/virtio/format.c
devices/virtio/node.c
devices/virtio/pci.c
- devices/virtio/vhost_user.c
- devices/virtio/vhost_user_input.c
- devices/virtio/vhost_user_output.c
- devices/virtio/vhost_user_api.c
devices/virtio/virtio.c
devices/virtio/virtio_api.c
+ devices/virtio/virtio_pci_legacy.c
+ devices/virtio/virtio_pci_modern.c
+ devices/virtio/virtio_pre_input.c
devices/virtio/virtio_types_api.c
)
list(APPEND VNET_HEADERS
devices/virtio/pci.h
devices/virtio/virtio.h
- devices/virtio/vhost_user.h
+ devices/virtio/virtio_buffering.h
+ devices/virtio/virtio_std.h
+ devices/virtio/virtio_pci_legacy.h
+ devices/virtio/virtio_pci_modern.h
+ devices/virtio/vhost_std.h
devices/virtio/virtio_types_api.h
)
list(APPEND VNET_MULTIARCH_SOURCES
- devices/virtio/vhost_user_input.c
- devices/virtio/vhost_user_output.c
devices/virtio/node.c
devices/af_packet/node.c
devices/virtio/device.c
)
list(APPEND VNET_API_FILES
- devices/virtio/vhost_user.api
devices/virtio/virtio.api
devices/virtio/virtio_types.api
)
devices/tap/tap.h
)
-list(APPEND VNET_API_FILES devices/tap/tapv2.api)
+list(APPEND VNET_API_FILES
+ devices/tap/tapv2.api
+)
##############################################################################
# tap interface (with virtio backend)
list(APPEND VNET_SOURCES
fib/fib.c
+ fib/ip4_fib_hash.c
fib/ip4_fib.c
+ fib/ip4_fib_16.c
+ fib/ip4_fib_8.c
fib/ip6_fib.c
fib/mpls_fib.c
fib/fib_table.c
fib/fib_path_list.c
fib/fib_path.c
fib/fib_path_ext.c
+ fib/fib_sas.c
fib/fib_source.c
fib/fib_urpf_list.c
fib/fib_attached_export.c
list(APPEND VNET_HEADERS
fib/fib.h
fib/fib_api.h
+ fib/fib_entry_track.h
fib/ip4_fib.h
+ fib/ip4_fib_8.h
+ fib/ip4_fib_16.h
+ fib/ip4_fib_hash.h
fib/ip6_fib.h
fib/fib_types.h
fib/fib_table.h
fib/fib_node_list.h
fib/fib_entry.h
fib/fib_entry_delegate.h
+ fib/fib_path.h
+ fib/fib_path_list.h
+ fib/fib_sas.h
fib/fib_source.h
)
-list(APPEND VNET_API_FILES fib/fib_types.api)
+list(APPEND VNET_API_FILES
+ fib/fib_types.api
+ fib/fib.api
+)
##############################################################################
# ADJ
adj/adj_nbr.c
adj/adj_glean.c
adj/adj_midchain.c
+ adj/adj_midchain_node.c
adj/adj_midchain_delegate.c
adj/adj_mcast.c
adj/adj_l2.c
list(APPEND VNET_MULTIARCH_SOURCES
adj/adj_nsh.c
adj/adj_l2.c
+ adj/adj_midchain_node.c
)
list(APPEND VNET_HEADERS
list(APPEND VNET_HEADERS
dpo/load_balance.h
+ dpo/load_balance_map.h
dpo/drop_dpo.h
dpo/lookup_dpo.h
dpo/punt_dpo.h
util/radix.c
util/refcount.c
util/throttle.c
- util/trajectory.c
)
list(APPEND VNET_HEADERS
)
list(APPEND VNET_HEADERS
- bier/bier_types.h
+ bier/bier_bit_string.h
bier/bier_entry.h
+ bier/bier_fwd.h
+ bier/bier_hdr_inlines.h
bier/bier_update.h
bier/bier_table.h
+ bier/bier_types.h
)
list(APPEND VNET_API_FILES bier/bier.api)
ip6-nd/ip6_nd.c
ip6-nd/ip6_nd_api.c
ip6-nd/ip6_nd_proxy.c
+ ip6-nd/ip6_nd_mirror_proxy.c
ip6-nd/ip6_ra.c
ip6-nd/rd_cp.c
ip6-nd/rd_cp_api.c
MULTIARCH_SOURCES ${VNET_MULTIARCH_SOURCES}
INSTALL_HEADERS ${VNET_HEADERS}
API_FILES ${VNET_API_FILES}
- LINK_LIBRARIES vppinfra svm vlib ${OPENSSL_LIBRARIES}
+ LINK_LIBRARIES vppinfra svm vlib
DEPENDS vpp_version_h api_headers
)
DEPENDS api_headers
)
+add_vat_test_library(vnet
+ interface_test.c
+ ip/ip_test.c
+ arp/arp_test.c
+ ip6-nd/ip6_nd_test.c
+ srmpls/sr_mpls_test.c
+ session/session_test.c
+ l2/l2_test.c
+ ipsec/ipsec_test.c
+)
+
+##############################################################################
+# VAT2 plugins
+##############################################################################
+add_vpp_test_library(vnet
+ ${VNET_API_FILES}
+)
+
##############################################################################