# limitations under the License.
lib_LTLIBRARIES += libvnet.la
+noinst_LTLIBRARIES =
libvnet_la_SOURCES =
libvnet_la_DEPENDENCIES = \
libsvmdb.la \
libsvm.la \
libvlibmemory.la
+libvnet_multiversioning_sources =
libvnet_la_LIBADD = $(libvnet_la_DEPENDENCIES) -lm -lpthread -ldl -lrt
vnet/config.c \
vnet/devices/devices.c \
vnet/devices/netlink.c \
+ vnet/flow/flow.c \
+ vnet/flow/flow_cli.c \
vnet/handoff.c \
vnet/interface.c \
vnet/interface_api.c \
vnet/config.h \
vnet/devices/devices.h \
vnet/devices/netlink.h \
+ vnet/flow/flow.h \
vnet/global_funcs.h \
vnet/handoff.h \
vnet/interface.h \
vnet/ethernet/p2p_ethernet_input.c \
vnet/ethernet/p2p_ethernet_api.c
+libvnet_multiversioning_sources += \
+ vnet/l2/l2_output.c
+
nobase_include_HEADERS += \
vnet/ethernet/arp_packet.h \
vnet/ethernet/error.def \
vnet/bonding/node.h \
vnet/bonding/bond.api.h
+libvnet_multiversioning_sources += \
+ vnet/bonding/node.c
+
API_FILES += vnet/bonding/bond.api
########################################
vnet/ip/icmp4.c \
vnet/ip/icmp6.c \
vnet/ip/ip46_cli.c \
+ vnet/ip/ip_types_api.c \
vnet/ip/ip4_format.c \
vnet/ip/ip4_forward.c \
vnet/ip/ip4_punt_drop.c \
vnet/ip/ip4_input.c \
+ vnet/ip/ip4_options.c \
vnet/ip/ip4_mtrie.c \
vnet/ip/ip4_pg.c \
vnet/ip/ip4_source_and_port_range_check.c \
vnet/ip/ip6_pg.c \
vnet/ip/ip6_reassembly.c \
vnet/ip/rd_cp.c \
+ vnet/ip/ip_neighbor.c \
vnet/ip/ip_api.c \
vnet/ip/ip_checksum.c \
vnet/ip/ip_frag.c \
vnet/ip/ip.h \
vnet/ip/ip_packet.h \
vnet/ip/ip_source_and_port_range_check.h \
+ vnet/ip/ip_neighbor.h \
vnet/ip/lookup.h \
vnet/ip/ports.def \
vnet/ip/protocols.def \
vnet/ip/rd_cp.api \
vnet/ip/punt.api
+libvnet_multiversioning_sources += \
+ vnet/ip/ip4_input.c
+
########################################
# Bidirectional Forwarding Detection
########################################
vnet/ipsec/ipsec_input.c \
vnet/ipsec/ipsec_if.c \
vnet/ipsec/ipsec_if_in.c \
- vnet/ipsec/ipsec_if_out.c \
vnet/ipsec/esp_format.c \
vnet/ipsec/esp_encrypt.c \
vnet/ipsec/esp_decrypt.c \
nobase_include_HEADERS += \
vnet/osi/osi.h
-########################################
-# Layer 3 protocol: MAP
-########################################
-libvnet_la_SOURCES += \
- vnet/map/map.c \
- vnet/map/map_dpo.c \
- vnet/map/ip4_map.c \
- vnet/map/ip6_map.c \
- vnet/map/ip4_map_t.c \
- vnet/map/ip6_map_t.c \
- vnet/map/map_api.c
-
-nobase_include_HEADERS += \
- vnet/map/map.h \
- vnet/map/map_dpo.h \
- vnet/map/map.api.h
-
-API_FILES += vnet/map/map.api
-
-if ENABLE_TESTS
-TESTS += test_map
-test_map_SOURCES = \
- vnet/map/test.c
-test_map_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
-
-test_map_LDADD = libvnet.la libvppinfra.la libvlib.la \
- -lpthread -lvlibmemory -ldl -lsvm -lrt
-
-test_map_LDFLAGS = -static
-endif
-
########################################
# Layer 4 protocol: tcp
########################################
vnet/tcp/tcp_output.c \
vnet/tcp/tcp_input.c \
vnet/tcp/tcp_newreno.c \
- vnet/tcp/tcp_test.c \
vnet/tcp/tcp.c
nobase_include_HEADERS += \
libvnet_la_SOURCES += \
vnet/dhcp/client.c \
vnet/dhcp/dhcp_client_detect.c \
+ vnet/dhcp/dhcp6_client_common_dp.c \
+ vnet/dhcp/dhcp6_pd_client_dp.c \
+ vnet/dhcp/dhcp6_pd_client_cp.c \
+ vnet/dhcp/dhcp6_ia_na_client_dp.c \
+ vnet/dhcp/dhcp6_ia_na_client_cp.c \
vnet/dhcp/dhcp_api.c
nobase_include_HEADERS += \
vnet/dhcp/client.h \
- vnet/dhcp/dhcp.api.h
+ vnet/dhcp/dhcp6_client_common_dp.h \
+ vnet/dhcp/dhcp6_pd_client_dp.h \
+ vnet/dhcp/dhcp6_ia_na_client_dp.h \
+ vnet/dhcp/dhcp.api.h \
+ vnet/dhcp/dhcp6_pd_client_cp.api.h \
+ vnet/dhcp/dhcp6_ia_na_client_cp.api.h
-API_FILES += vnet/dhcp/dhcp.api
+API_FILES += \
+ vnet/dhcp/dhcp.api \
+ vnet/dhcp/dhcp6_pd_client_cp.api \
+ vnet/dhcp/dhcp6_ia_na_client_cp.api
########################################
# DHCP proxy
# IPFIX / netflow v10
########################################
libvnet_la_SOURCES += \
- vnet/flow/flow_report.c \
- vnet/flow/flow_api.c
+ vnet/ipfix-export/flow_report.c \
+ vnet/ipfix-export/flow_api.c
nobase_include_HEADERS += \
- vnet/flow/flow_report.h \
- vnet/flow/ipfix_info_elements.h \
- vnet/flow/ipfix_packet.h \
- vnet/flow/flow.api.h
+ vnet/ipfix-export/flow_report.h \
+ vnet/ipfix-export/ipfix_info_elements.h \
+ vnet/ipfix-export/ipfix_packet.h \
+ vnet/ipfix-export/ipfix_export.api.h
-API_FILES += vnet/flow/flow.api
+API_FILES += vnet/ipfix-export/ipfix_export.api
########################################
# IPFIX classify code
########################################
libvnet_la_SOURCES += \
- vnet/flow/flow_report_classify.c
+ vnet/ipfix-export/flow_report_classify.c
nobase_include_HEADERS += \
- vnet/flow/flow_report_classify.h
+ vnet/ipfix-export/flow_report_classify.h
########################################
# lawful intercept
libvnet_la_SOURCES += \
vnet/devices/virtio/device.c \
vnet/devices/virtio/node.c \
- vnet/devices/virtio/vhost-user.c \
+ vnet/devices/virtio/vhost_user.c \
+ vnet/devices/virtio/vhost_user_input.c \
+ vnet/devices/virtio/vhost_user_output.c \
vnet/devices/virtio/vhost_user_api.c \
vnet/devices/virtio/virtio.c
nobase_include_HEADERS += \
vnet/devices/virtio/virtio.h \
- vnet/devices/virtio/vhost-user.h \
+ vnet/devices/virtio/vhost_user.h \
vnet/devices/virtio/vhost_user.api.h
+libvnet_multiversioning_sources += \
+ vnet/devices/virtio/vhost_user_input.c \
+ vnet/devices/virtio/vhost_user_output.c
+
API_FILES += vnet/devices/virtio/vhost_user.api
########################################
API_FILES += vnet/devices/tap/tapv2.api
+########################################
+# tap interface (with virtio backend)
+########################################
+
+libvnet_la_SOURCES += \
+ vnet/devices/pipe/pipe_api.c \
+ vnet/devices/pipe/pipe.c
+
+nobase_include_HEADERS += \
+ vnet/devices/pipe/pipe.h \
+ vnet/devices/pipe/pipe.api.h
+
+API_FILES += vnet/devices/pipe/pipe.api
+
########################################
# session managmeent
########################################
API_FILES += vnet/bier/bier.api
+if CPU_X86_64
+if CC_SUPPORTS_AVX2
+###############################################################
+# AVX2
+###############################################################
+libvnet_avx2_la_SOURCES = $(libvnet_multiversioning_sources)
+libvnet_avx2_la_CFLAGS = \
+ $(AM_CFLAGS) @CPU_AVX2_FLAGS@ \
+ -DCLIB_MARCH_VARIANT=avx2
+noinst_LTLIBRARIES += libvnet_avx2.la
+libvnet_la_LIBADD += libvnet_avx2.la
+endif
+
+if CC_SUPPORTS_AVX512
+###############################################################
+# AVX512
+###############################################################
+libvnet_avx512_la_SOURCES = $(libvnet_multiversioning_sources)
+libvnet_avx512_la_CFLAGS = \
+ $(AM_CFLAGS) @CPU_AVX512_FLAGS@ \
+ -DCLIB_MARCH_VARIANT=avx512
+noinst_LTLIBRARIES += libvnet_avx512.la
+libvnet_la_LIBADD += libvnet_avx512.la
+endif
+endif
+
########################################
# Test apps
########################################