aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/lisp-cp
AgeCommit message (Expand)AuthorFilesLines
2019-09-20classify: remove includes from classifier header fileDamjan Marion1-0/+1
2019-08-20vppapigen: remove support for legacy typedefsPaul Vinciguerra4-21/+8
2019-07-02lisp: init locator probed field in parserFlorin Coras1-0/+1
2019-06-25lisp: move cp tests to unittestFlorin Coras1-1/+1
2019-05-30lisp-cp: start lisp retry service on demandFlorin Coras2-8/+18
2019-04-25crypto: improve key handlingDamjan Marion1-4/+32
2019-04-07crypto: add support for AEAD and AES-GCMDamjan Marion1-5/+5
2019-04-02lisp: use crypto lib instead of openssl directlyFilip Tehlar1-25/+43
2019-01-30Use IP and MAC API types for neighborsNeale Ranns1-2/+1
2019-01-30lisp: set reachable flag in map-registerFlorin Coras3-0/+3
2019-01-23lisp: cli for marking local mappings authoritativeFlorin Coras2-0/+3
2018-10-23lisp: register cp port only if enabledFlorin Coras1-2/+0
2018-10-23c11 safe string handling supportDave Barach9-170/+171
2018-09-24Trivial: Clean up some typos.Paul Vinciguerra11-18/+18
2018-09-12Trivial: Fix lisp flag labelPaul Vinciguerra1-1/+1
2018-08-22Consolidate the [un]format_mac_address implementationsNeale Ranns2-18/+0
2018-08-15Remove client_index field from replies in APIOndrej Fabry2-4/+0
2018-02-02lisp-cp: fix handling of ndp without source link addr VPP-1159Florin Coras1-4/+21
2018-01-23VPPAPIGEN: vppapigen replacement in Python PLY.Ole Troan2-2/+2
2018-01-11api: remove transport specific code from handlersFlorin Coras2-191/+124
2018-01-09api: refactor vlibmemoryFlorin Coras2-46/+36
2018-01-05sock api: add infra for bootstrapping shm clientsFlorin Coras1-14/+0
2017-12-10VPP-1077 Add meaningful error info, when executing command with enable/disabl...Swarup Nayak2-11/+11
2017-11-02LISP: fix negative mapping timeout, VPP-1043Filip Tehlar1-1/+2
2017-10-31LISP: add P-ITR/P-ETR/xTR API handlers, ONE-24Filip Tehlar6-63/+552
2017-10-30LISP: improve updating the dataplne when locators changeFilip Tehlar5-28/+74
2017-10-20null-terminate some formatted stringGabriel Ganne2-0/+13
2017-10-18LISP: fix crash when sending NSH map-request message, ONE-32Filip Tehlar1-0/+3
2017-10-16LISP: fix map-request counters, ONE-25Filip Tehlar1-6/+5
2017-10-09vppapigen: support per-file (major,minor,patch) version stampsDave Barach2-0/+4
2017-10-03Repair vlib API socket serverDave Barach2-1/+10
2017-09-27LISP: add API handlers for set/get transport protocolFilip Tehlar3-0/+62
2017-09-20LISP: add debug cli for neighbor discoveryFilip Tehlar4-6/+71
2017-09-19LISP: support for neighbor discoveryFilip Tehlar8-110/+384
2017-09-19Remove associated lisp-gpe entries when removing lisp local mapping.Alberto Rodriguez-Natal2-7/+76
2017-09-07LISP: add neighbor discovery and CP protocol separation APIsFilip Tehlar2-0/+86
2017-09-07LISP: Add APIs for enable/disable xTR/P-ITR/P-ETR modesFilip Tehlar1-0/+60
2017-09-04LISP: re-fetch mapping before it expiresFilip Tehlar7-124/+272
2017-08-12LISP: fix fid nsh address formattingFlorin Coras1-1/+8
2017-08-11LISP: fix wrong reply message in map_register_fallback_threshold callFilip Tehlar1-1/+1
2017-08-10Fix LISP cp buffer leakageFlorin Coras1-1/+3
2017-08-07LISP: Map-server fallback featureFilip Tehlar5-58/+311
2017-08-05LISP: fix map register TTL reply handler, VPP-926Filip Tehlar1-1/+1
2017-08-02LISP: make TTL for map register messages configurableFilip Tehlar5-0/+153
2017-08-02Make ip csum configurable in vlib buffer functionsFlorin Coras4-15/+17
2017-07-26Fix lisp udp checksumFlorin Coras1-6/+18
2017-07-14Introduce l{2,3,4}_hdr_offset fields in the buffer metadataDamjan Marion1-1/+1
2017-07-06VPP-902: LISP-CP: Wrong size in one_l2_arp_entries_get message.Ole Troan1-1/+1
2017-06-28switch vlib process model to tw_timer_template timer implDave Barach1-0/+1
2017-06-22Update lisp map record default ttl to 24hv17.10-rc0Florin Coras1-2/+2
f='#n973'>973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130
# Copyright (c) 2015 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:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

lib_LTLIBRARIES += libvnet.la

libvnet_la_SOURCES =
libvnet_la_DEPENDENCIES = \
	libvppinfra.la		\
	libvlib.la		\
	libsvmdb.la		\
	libsvm.la 		\
	libvlibmemory.la

libvnet_la_LIBADD = $(libvnet_la_DEPENDENCIES) -lm -lpthread -ldl -lrt

if WITH_LIBSSL
libvnet_la_LIBADD += -lcrypto
endif

########################################
# Generic stuff
########################################
libvnet_la_SOURCES +=				\
  vnet/config.c					\
  vnet/devices/devices.c			\
  vnet/handoff.c				\
  vnet/interface.c				\
  vnet/interface_api.c				\
  vnet/interface_cli.c				\
  vnet/interface_format.c			\
  vnet/interface_output.c			\
  vnet/misc.c					\
  vnet/replication.c

nobase_include_HEADERS +=			\
  vnet/api_errno.h				\
  vnet/buffer.h					\
  vnet/config.h					\
  vnet/devices/devices.h			\
  vnet/global_funcs.h				\
  vnet/handoff.h				\
  vnet/interface.h				\
  vnet/interface.api.h				\
  vnet/interface_funcs.h			\
  vnet/ip/ip4_to_ip6.h   			\
  vnet/ip/ip6_to_ip4.h   			\
  vnet/l3_types.h				\
  vnet/pipeline.h				\
  vnet/replication.h				\
  vnet/vnet.h					\
  vnet/vnet_all_api_h.h				\
  vnet/vnet_msg_enum.h				\
  vnet/util/radix.h

API_FILES += vnet/interface.api

########################################
# Policer infra
########################################

libvnet_la_SOURCES +=				\
  vnet/policer/node_funcs.c			\
  vnet/policer/policer.c			\
  vnet/policer/xlate.c				\
  vnet/policer/policer_api.c

nobase_include_HEADERS +=			\
  vnet/policer/police.h				\
  vnet/policer/policer.h			\
  vnet/policer/xlate.h				\
  vnet/policer/policer.api.h

API_FILES += vnet/policer/policer.api

########################################
# Cop - junk filter
########################################

libvnet_la_SOURCES +=				\
  vnet/cop/cop.c				\
  vnet/cop/node1.c				\
  vnet/cop/ip4_whitelist.c			\
  vnet/cop/ip6_whitelist.c			\
  vnet/cop/cop_api.c

nobase_include_HEADERS +=			\
  vnet/cop/cop.h					\
  vnet/cop/cop.api.h

API_FILES += vnet/cop/cop.api

########################################
# Layer 2 protocols go here
########################################

########################################
# Layer 2 protocol: Ethernet
########################################
libvnet_la_SOURCES +=				\
 vnet/ethernet/arp.c				\
 vnet/ethernet/format.c				\
 vnet/ethernet/init.c				\
 vnet/ethernet/interface.c			\
 vnet/ethernet/node.c				\
 vnet/ethernet/pg.c				\
 vnet/ethernet/sfp.c				\
 vnet/ethernet/p2p_ethernet.c			\
 vnet/ethernet/p2p_ethernet_input.c		\
 vnet/ethernet/p2p_ethernet_api.c

nobase_include_HEADERS +=			\
 vnet/ethernet/arp_packet.h			\
 vnet/ethernet/error.def			\
 vnet/ethernet/ethernet.h			\
 vnet/ethernet/packet.h				\
 vnet/ethernet/types.def			\
 vnet/ethernet/sfp.h				\
 vnet/ethernet/p2p_ethernet.api.h		\
 vnet/ethernet/p2p_ethernet.h

API_FILES += vnet/ethernet/p2p_ethernet.api

########################################
# Layer 2 protocol: Ethernet bridging
########################################
libvnet_la_SOURCES +=				\
 vnet/l2/feat_bitmap.c				\
 vnet/l2/l2_api.c				\
 vnet/l2/l2_bd.c				\
 vnet/l2/l2_bvi.c				\
 vnet/l2/l2_input_classify.c			\
 vnet/l2/l2_output_classify.c			\
 vnet/l2/l2_efp_filter.c			\
 vnet/l2/l2_fib.c				\
 vnet/l2/l2_flood.c				\
 vnet/l2/l2_fwd.c				\
 vnet/l2/l2_input_acl.c				\
 vnet/l2/l2_input.c				\
 vnet/l2/l2_input_vtr.c				\
 vnet/l2/l2_learn.c				\
 vnet/l2/l2_output_acl.c			\
 vnet/l2/l2_output.c				\
 vnet/l2/l2_patch.c				\
 vnet/l2/l2_rw.c				\
 vnet/l2/l2_vtr.c				\
 vnet/l2/l2_xcrw.c

nobase_include_HEADERS +=			\
 vnet/l2/feat_bitmap.h				\
 vnet/l2/l2_input.h				\
 vnet/l2/l2_output.h				\
 vnet/l2/l2_vtr.h				\
 vnet/l2/l2_input_vtr.h				\
 vnet/l2/l2_efp_filter.h			\
 vnet/l2/l2_fwd.h				\
 vnet/l2/l2_bd.h				\
 vnet/l2/l2_bvi.h				\
 vnet/l2/l2_flood.h				\
 vnet/l2/l2_fib.h				\
 vnet/l2/l2_rw.h				\
 vnet/l2/l2_xcrw.h				\
 vnet/l2/l2_classify.h				\
 vnet/l2/l2.api.h

API_FILES += vnet/l2/l2.api

########################################
# Layer 2 protocol: SRP
########################################
libvnet_la_SOURCES +=				\
 vnet/srp/format.c				\
 vnet/srp/interface.c				\
 vnet/srp/node.c				\
 vnet/srp/pg.c

nobase_include_HEADERS +=			\
 vnet/srp/packet.h				\
 vnet/srp/srp.h

########################################
# Layer 2 protocol: PPP
########################################
libvnet_la_SOURCES +=				\
  vnet/ppp/node.c				\
  vnet/ppp/pg.c					\
  vnet/ppp/ppp.c

nobase_include_HEADERS +=			\
 vnet/ppp/error.def				\
 vnet/ppp/ppp.h					\
 vnet/ppp/packet.h

########################################
# Layer 2 protocol: HDLC
########################################
libvnet_la_SOURCES +=				\
  vnet/hdlc/node.c				\
  vnet/hdlc/pg.c				\
  vnet/hdlc/hdlc.c

nobase_include_HEADERS +=			\
 vnet/hdlc/error.def				\
 vnet/hdlc/hdlc.h				\
 vnet/hdlc/packet.h

########################################
# Layer 2 protocol: LLC
########################################
libvnet_la_SOURCES +=				\
  vnet/llc/llc.c				\
  vnet/llc/node.c				\
  vnet/llc/pg.c

nobase_include_HEADERS +=			\
 vnet/llc/llc.h

########################################
# Layer 2 protocol: SNAP
########################################
libvnet_la_SOURCES +=				\
  vnet/snap/snap.c				\
  vnet/snap/node.c				\
  vnet/snap/pg.c

nobase_include_HEADERS +=			\
 vnet/snap/snap.h

########################################
# Layer 2 / vxlan
########################################
libvnet_la_SOURCES +=				\
  vnet/vxlan/vxlan.c				\
  vnet/vxlan/encap.c				\
  vnet/vxlan/decap.c				\
  vnet/vxlan/vxlan_api.c

nobase_include_HEADERS +=			\
  vnet/vxlan/vxlan.h				\
  vnet/vxlan/vxlan_packet.h			\
  vnet/vxlan/vxlan_error.def			\
  vnet/vxlan/vxlan.api.h

API_FILES += vnet/vxlan/vxlan.api

########################################
# Layer 2 / Geneve
########################################
libvnet_la_SOURCES +=				\
  vnet/geneve/geneve.c				\
  vnet/geneve/encap.c				\
  vnet/geneve/decap.c				\
  vnet/geneve/geneve_api.c

nobase_include_HEADERS +=			\
  vnet/geneve/geneve.h				\
  vnet/geneve/geneve_packet.h			\
  vnet/geneve/geneve_error.def			\
  vnet/geneve/geneve.api.h

API_FILES += vnet/geneve/geneve.api

########################################
# Layer 2 / CDP
########################################
libvnet_la_SOURCES +=				\
  vnet/cdp/cdp_input.c				\
  vnet/cdp/cdp_node.c				\
  vnet/cdp/cdp_periodic.c

nobase_include_HEADERS +=			\
  vnet/cdp/cdp_protocol.h

########################################
# Layer 2 / LLDP
########################################
libvnet_la_SOURCES +=				\
  vnet/lldp/lldp_input.c			\
  vnet/lldp/lldp_node.c				\
  vnet/lldp/lldp_output.c			\
  vnet/lldp/lldp_cli.c                          \
  vnet/lldp/lldp_api.c

nobase_include_HEADERS +=			\
  vnet/lldp/lldp_protocol.h                     \
  vnet/lldp/lldp.h                              \
  vnet/lldp/lldp.api.h

API_FILES += vnet/lldp/lldp.api

########################################
# Layer 2/3 "classify"
########################################
libvnet_la_SOURCES +=				\
  vnet/classify/vnet_classify.c			\
  vnet/classify/ip_classify.c			\
  vnet/classify/input_acl.c			\
  vnet/classify/policer_classify.c		\
  vnet/classify/flow_classify.c                 \
  vnet/classify/flow_classify_node.c            \
  vnet/classify/vnet_classify.h			\
  vnet/classify/classify_api.c

nobase_include_HEADERS +=			\
  vnet/classify/vnet_classify.h	                \
  vnet/classify/input_acl.h                     \
  vnet/classify/policer_classify.h              \
  vnet/classify/flow_classify.h					\
  vnet/classify/classify.api.h

API_FILES += vnet/classify/classify.api

########################################
# Layer 3 protocols go here
########################################

########################################
# Layer 3 protocol: IP v4/v6
########################################
libvnet_la_SOURCES +=				\
 vnet/ip/format.c				\
 vnet/ip/icmp4.c				\
 vnet/ip/icmp6.c				\
 vnet/ip/ip46_cli.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_mtrie.c				\
 vnet/ip/ip4_pg.c				\
 vnet/ip/ip4_source_and_port_range_check.c	\
 vnet/ip/ip4_source_check.c			\
 vnet/ip/ip6_format.c				\
 vnet/ip/ip6_forward.c				\
 vnet/ip/ip6_punt_drop.c			\
 vnet/ip/ip6_hop_by_hop.c			\
 vnet/ip/ip6_input.c				\
 vnet/ip/ip6_neighbor.c				\
 vnet/ip/ip6_pg.c				\
 vnet/ip/ip_api.c				\
 vnet/ip/ip_checksum.c				\
 vnet/ip/ip_frag.c				\
 vnet/ip/ip.c					\
 vnet/ip/ip_init.c				\
 vnet/ip/ip_input_acl.c				\
 vnet/ip/lookup.c				\
 vnet/ip/ping.c					\
 vnet/ip/punt.c

nobase_include_HEADERS +=			\
 vnet/ip/format.h				\
 vnet/ip/icmp46_packet.h			\
 vnet/ip/icmp4.h				\
 vnet/ip/icmp6.h				\
 vnet/ip/igmp_packet.h				\
 vnet/ip/ip.api.h				\
 vnet/ip/ip4_error.h				\
 vnet/ip/ip4.h					\
 vnet/ip/ip4_mtrie.h				\
 vnet/ip/ip4_packet.h				\
 vnet/ip/ip6_error.h				\
 vnet/ip/ip6.h					\
 vnet/ip/ip6_hop_by_hop.h			\
 vnet/ip/ip6_hop_by_hop_packet.h		\
 vnet/ip/ip6_packet.h				\
 vnet/ip/ip6_neighbor.h				\
 vnet/ip/ip.h					\
 vnet/ip/ip_packet.h				\
 vnet/ip/ip_source_and_port_range_check.h	\
 vnet/ip/lookup.h				\
 vnet/ip/ports.def				\
 vnet/ip/protocols.def				\
 vnet/ip/punt_error.def				\
 vnet/ip/punt.h

API_FILES += vnet/ip/ip.api

########################################
# Bidirectional Forwarding Detection
########################################

nobase_include_HEADERS +=			\
 vnet/bfd/bfd_protocol.h			\
 vnet/bfd/bfd_main.h				\
 vnet/bfd/bfd_api.h				\
 vnet/bfd/bfd_udp.h				\
 vnet/bfd/bfd.api.h

libvnet_la_SOURCES +=				\
 vnet/bfd/bfd_api.h				\
 vnet/bfd/bfd_udp.c				\
 vnet/bfd/bfd_main.c				\
 vnet/bfd/bfd_protocol.c			\
 vnet/bfd/bfd_cli.c                             \
 vnet/bfd/bfd_api.c

API_FILES += vnet/bfd/bfd.api

########################################
# Layer 3 protocol: IPSec
########################################
if WITH_LIBSSL
libvnet_la_SOURCES +=				\
 vnet/ipsec/ipsec.c				\
 vnet/ipsec/ipsec_cli.c				\
 vnet/ipsec/ipsec_format.c			\
 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			\
 vnet/ipsec/ikev2.c				\
 vnet/ipsec/ikev2_crypto.c			\
 vnet/ipsec/ikev2_cli.c				\
 vnet/ipsec/ikev2_payload.c			\
 vnet/ipsec/ikev2_format.c			\
 vnet/ipsec/ipsec_api.c

API_FILES += vnet/ipsec/ipsec.api
endif

libvnet_la_SOURCES +=				\
 vnet/ipsec/ipsec_output.c

nobase_include_HEADERS +=			\
 vnet/ipsec/ipsec.h				\
 vnet/ipsec/esp.h				\
 vnet/ipsec/ikev2.h				\
 vnet/ipsec/ikev2_priv.h			\
 vnet/ipsec/ipsec.api.h

########################################
# Layer 3 protocol: osi
########################################
libvnet_la_SOURCES +=				\
 vnet/osi/node.c				\
 vnet/osi/osi.c					\
 vnet/osi/pg.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
########################################
libvnet_la_SOURCES +=				\
 vnet/tcp/tcp_api.c				\
 vnet/tcp/tcp_format.c				\
 vnet/tcp/tcp_pg.c				\
 vnet/tcp/tcp_syn_filter4.c			\
 vnet/tcp/tcp_output.c				\
 vnet/tcp/tcp_input.c				\
 vnet/tcp/tcp_newreno.c				\
 vnet/tcp/builtin_client.c			\
 vnet/tcp/builtin_server.c			\
 vnet/tcp/builtin_http_server.c			\
 vnet/tcp/builtin_proxy.c			\
 vnet/tcp/tcp_test.c				\
 vnet/tcp/tcp.c

nobase_include_HEADERS +=			\
 vnet/tcp/tcp_packet.h				\
 vnet/tcp/tcp_timer.h				\
 vnet/tcp/tcp_debug.h				\
 vnet/tcp/tcp.h					\
 vnet/tcp/tcp.api.h

API_FILES += vnet/tcp/tcp.api

########################################
# Layer 4 protocol: udp
########################################
libvnet_la_SOURCES +=				\
 vnet/udp/udp.c					\
 vnet/udp/udp_input.c				\
 vnet/udp/builtin_server.c			\
 vnet/udp/udp_format.c				\
 vnet/udp/udp_local.c				\
 vnet/udp/udp_pg.c				\
 vnet/udp/udp_encap_node.c			\
 vnet/udp/udp_encap.c				\
 vnet/udp/udp_api.c

nobase_include_HEADERS +=			\
  vnet/udp/udp_error.def                       	\
  vnet/udp/udp.h                               	\
  vnet/udp/udp_packet.h

API_FILES += vnet/udp/udp.api

########################################
# Tunnel protocol: gre
########################################
libvnet_la_SOURCES +=				\
 vnet/gre/gre.c					\
 vnet/gre/node.c				\
 vnet/gre/interface.c				\
 vnet/gre/pg.c					\
 vnet/gre/gre_api.c

nobase_include_HEADERS +=			\
 vnet/gre/gre.h					\
 vnet/gre/packet.h				\
 vnet/gre/error.def				\
 vnet/gre/gre.api.h

API_FILES += vnet/gre/gre.api

########################################
# Tunnel protocol: l2tpv3
########################################
libvnet_la_SOURCES +=				\
 vnet/l2tp/l2tp.c				\
 vnet/l2tp/encap.c 				\
 vnet/l2tp/decap.c  				\
 vnet/l2tp/pg.c					\
 vnet/l2tp/l2tp_api.c

nobase_include_HEADERS +=			\
 vnet/l2tp/l2tp.h				\
 vnet/l2tp/packet.h				\
 vnet/l2tp/l2tp.api.h

API_FILES += vnet/l2tp/l2tp.api

########################################
# Tunnel protocol: gre+mpls
########################################
libvnet_la_SOURCES +=				\
 vnet/mpls/mpls.c				\
 vnet/mpls/mpls_lookup.c			\
 vnet/mpls/mpls_output.c			\
 vnet/mpls/mpls_features.c			\
 vnet/mpls/mpls_input.c				\
 vnet/mpls/interface.c			        \
 vnet/mpls/mpls_tunnel.c		        \
 vnet/mpls/pg.c			        \
 vnet/mpls/mpls_api.c

nobase_include_HEADERS +=			\
 vnet/mpls/mpls.h				\
 vnet/mpls/mpls_types.h				\
 vnet/mpls/mpls_tunnel.h			\
 vnet/mpls/packet.h				\
 vnet/mpls/error.def			\
 vnet/mpls/mpls.api.h

API_FILES += vnet/mpls/mpls.api

########################################
# Tunnel protocol: vxlan-gpe
########################################

libvnet_la_SOURCES +=				\
 vnet/vxlan-gpe/vxlan_gpe.c			\
 vnet/vxlan-gpe/encap.c				\
 vnet/vxlan-gpe/decap.c				\
 vnet/vxlan-gpe/vxlan_gpe_api.c

nobase_include_HEADERS +=			\
 vnet/vxlan-gpe/vxlan_gpe.h			\
 vnet/vxlan-gpe/vxlan_gpe_packet.h		\
 vnet/vxlan-gpe/vxlan_gpe_error.def		\
 vnet/vxlan-gpe/vxlan_gpe.api.h

API_FILES += vnet/vxlan-gpe/vxlan_gpe.api

########################################
# Tunnel protocol: ipsec+gre
########################################
libvnet_la_SOURCES +=				\
 vnet/ipsec-gre/ipsec_gre.c			\
 vnet/ipsec-gre/node.c				\
 vnet/ipsec-gre/interface.c			\
 vnet/ipsec-gre/ipsec_gre_api.c

nobase_include_HEADERS +=			\
 vnet/ipsec-gre/ipsec_gre.h			\
 vnet/ipsec-gre/error.def			\
 vnet/ipsec-gre/ipsec_gre.api.h

API_FILES += vnet/ipsec-gre/ipsec_gre.api

########################################
# LISP control plane: lisp-cp
########################################

libvnet_la_SOURCES +=				\
 vnet/lisp-cp/lisp_types.c			\
 vnet/lisp-cp/lisp_cp_dpo.c			\
 vnet/lisp-cp/control.c				\
 vnet/lisp-cp/gid_dictionary.c			\
 vnet/lisp-cp/lisp_msg_serdes.c			\
 vnet/lisp-cp/packets.c				\
 vnet/lisp-cp/one_cli.c				\
 vnet/lisp-cp/lisp_cli.c			\
 vnet/lisp-cp/one_api.c				\
 vnet/lisp-cp/lisp_api.c

nobase_include_HEADERS +=			\
 vnet/lisp-cp/lisp_types.h			\
 vnet/lisp-cp/packets.h				\
 vnet/lisp-cp/gid_dictionary.h			\
 vnet/lisp-cp/lisp_cp_messages.h		\
 vnet/lisp-cp/lisp_msg_serdes.h			\
 vnet/lisp-cp/control.h				\
 vnet/lisp-cp/one.api.h				\
 vnet/lisp-cp/lisp.api.h

API_FILES += vnet/lisp-cp/lisp.api
API_FILES += vnet/lisp-cp/one.api

if ENABLE_TESTS
LDS = \
  libvppinfra.la \
  libvnet.la \
  libvlib.la  \
  libsvm.la \
  libsvmdb.la \
  libvlibmemory.la \
  -lpthread -ldl -lrt -lm

TESTS += test_cp_serdes test_lisp_types

test_cp_serdes_SOURCES =			\
 tests/vnet/lisp-cp/test_cp_serdes.c		\
 vnet/lisp-cp/lisp_msg_serdes.c			\
 vnet/lisp-cp/lisp_types.c			\
 vnet/lisp-cp/packets.c				\
 vnet/ip/ip_checksum.c

test_lisp_types_SOURCES =			\
 tests/vnet/lisp-cp/test_lisp_types.c		\
 vnet/lisp-cp/lisp_types.c

test_cp_serdes_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
test_lisp_types_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG

test_cp_serdes_LDADD = $(LDS)
test_lisp_types_LDADD = $(LDS)
endif

########################################
# Tunnel protocol: lisp-gpe
########################################

libvnet_la_SOURCES +=				\
 vnet/lisp-gpe/lisp_gpe.c			\
 vnet/lisp-gpe/lisp_gpe_sub_interface.c		\
 vnet/lisp-gpe/lisp_gpe_adjacency.c		\
 vnet/lisp-gpe/lisp_gpe_tunnel.c		\
 vnet/lisp-gpe/lisp_gpe_fwd_entry.c		\
 vnet/lisp-gpe/lisp_gpe_tenant.c		\
 vnet/lisp-gpe/interface.c			\
 vnet/lisp-gpe/decap.c				\
 vnet/lisp-gpe/lisp_gpe_api.c

nobase_include_HEADERS +=			\
 vnet/lisp-gpe/lisp_gpe.h			\
 vnet/lisp-gpe/lisp_gpe_fwd_entry.h		\
 vnet/lisp-gpe/lisp_gpe_tenant.h		\
 vnet/lisp-gpe/lisp_gpe_packet.h		\
 vnet/lisp-gpe/lisp_gpe_error.def		\
 vnet/lisp-gpe/lisp_gpe.api.h

API_FILES += vnet/lisp-gpe/lisp_gpe.api

########################################
# DHCP client
########################################
libvnet_la_SOURCES +=				\
 vnet/dhcp/client.c				\
 vnet/dhcp/client.h				\
 vnet/dhcp/dhcp_api.c

nobase_include_HEADERS +=			\
 vnet/dhcp/client.h				\
 vnet/dhcp/dhcp.api.h

API_FILES += vnet/dhcp/dhcp.api

########################################
# DHCP proxy
########################################
libvnet_la_SOURCES +=				\
 vnet/dhcp/dhcp6_proxy_node.c                   \
 vnet/dhcp/dhcp4_proxy_node.c			\
 vnet/dhcp/dhcp_proxy.c

nobase_include_HEADERS +=			\
 vnet/dhcp/dhcp4_packet.h		        \
 vnet/dhcp/dhcp6_packet.h		        \
 vnet/dhcp/dhcp_proxy.h				\
 vnet/dhcp/dhcp6_proxy_error.def                \
 vnet/dhcp/dhcp4_proxy_error.def

########################################
# ipv6 segment routing
########################################

libvnet_la_SOURCES +=				\
 vnet/srv6/sr.c						\
 vnet/srv6/sr_localsid.c			\
 vnet/srv6/sr_policy_rewrite.c		\
 vnet/srv6/sr_steering.c			\
 vnet/srv6/sr_api.c

nobase_include_HEADERS +=			\
 vnet/srv6/sr_packet.h				\
 vnet/srv6/sr.h 					\
 vnet/srv6/sr.api.h

API_FILES += vnet/srv6/sr.api

########################################
# mpls segment routing
########################################

libvnet_la_SOURCES +=				\
 vnet/srmpls/sr_mpls_policy.c		\
 vnet/srmpls/sr_mpls_steering.c


nobase_include_HEADERS +=			\
 vnet/srmpls/sr.h

########################################
# IPFIX / netflow v10
########################################
libvnet_la_SOURCES +=				\
 vnet/flow/flow_report.c			\
 vnet/flow/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

API_FILES += vnet/flow/flow.api

########################################
# IPFIX classify code
########################################

libvnet_la_SOURCES +=				\
  vnet/flow/flow_report_classify.c

nobase_include_HEADERS +=			\
  vnet/flow/flow_report_classify.h

########################################
# lawful intercept
########################################

libvnet_la_SOURCES +=				\
  vnet/lawful-intercept/lawful_intercept.c	\
  vnet/lawful-intercept/node.c

nobase_include_HEADERS += 			\
  vnet/lawful-intercept/lawful_intercept.h

########################################
# SPAN (port mirroring)
########################################

libvnet_la_SOURCES +=				\
  vnet/span/span_api.c  \
  vnet/span/span.c	    \
  vnet/span/node.c

nobase_include_HEADERS += 			\
  vnet/span/span.api.h  \
  vnet/span/span.h

API_FILES += vnet/span/span.api

########################################
# DNS proxy, API
########################################
libvnet_la_SOURCES +=				\
 vnet/dns/dns.c					\
 vnet/dns/dns.h					\
 vnet/dns/dns_packet.h				\
 vnet/dns/reply_node.c				\
 vnet/dns/request_node.c			\
 vnet/dns/resolver_process.c

nobase_include_HEADERS +=			\
 vnet/dns/dns.api.h				\
 vnet/dns/dns.h

API_FILES += vnet/dns/dns.api

########################################
# Packet generator
########################################

libvnet_la_SOURCES +=				\
  vnet/pg/cli.c					\
  vnet/pg/edit.c				\
  vnet/pg/init.c				\
  vnet/pg/input.c				\
  vnet/pg/output.c				\
  vnet/pg/stream.c

nobase_include_HEADERS +=			\
  vnet/pg/pg.h					\
  vnet/pg/edit.h

########################################
# virtio
########################################

libvnet_la_SOURCES +=       \
  vnet/devices/virtio/vhost-user.c	\
  vnet/devices/virtio/vhost_user_api.c

nobase_include_HEADERS +=     \
  vnet/devices/virtio/vhost-user.h	\
  vnet/devices/virtio/vhost_user.api.h

API_FILES += vnet/devices/virtio/vhost_user.api

########################################
# ssvm ethernet
########################################
libvnet_la_SOURCES +=				\
  vnet/devices/ssvm/ssvm_eth.c			\
  vnet/devices/ssvm/node.c

nobase_include_HEADERS +=			\
  vnet/devices/ssvm/ssvm_eth.h

########################################
# session managmeent
########################################

libvnet_la_SOURCES +=				\
  vnet/session/session.c			\
  vnet/session/session_table.c			\
  vnet/session/session_rules_table.c		\
  vnet/session/session_lookup.c			\
  vnet/session/session_node.c			\
  vnet/session/transport.c			\
  vnet/session/application.c			\
  vnet/session/session_cli.c			\
  vnet/session/application_interface.c		\
  vnet/session/application_namespace.c		\
  vnet/session/segment_manager.c		\
  vnet/session/session_test.c			\
  vnet/session/session_api.c

nobase_include_HEADERS +=			\
  vnet/session/session.h			\
  vnet/session/session_table.h			\
  vnet/session/session_rules_table.h		\
  vnet/session/stream_session.h			\
  vnet/session/session_lookup.h			\
  vnet/session/application.h			\
  vnet/session/transport.h			\
  vnet/session/transport_interface.h		\
  vnet/session/application_interface.h		\
  vnet/session/application_namespace.h		\
  vnet/session/session_debug.h			\
  vnet/session/segment_manager.h		\
  vnet/session/mma_template.h			\
  vnet/session/mma_template.c			\
  vnet/session/mma_16.h				\
  vnet/session/mma_40.h				\
  vnet/session/session.api.h

API_FILES += vnet/session/session.api

########################################
# Linux packet interface
########################################

libvnet_la_SOURCES +=				\
  vnet/devices/af_packet/af_packet.c		\
  vnet/devices/af_packet/device.c		\
  vnet/devices/af_packet/node.c			\
  vnet/devices/af_packet/cli.c			\
  vnet/devices/af_packet/af_packet_api.c

nobase_include_HEADERS +=			\
  vnet/devices/af_packet/af_packet.h	\
  vnet/devices/af_packet/af_packet.api.h

API_FILES += vnet/devices/af_packet/af_packet.api

########################################
# NETMAP interface
########################################

libvnet_la_SOURCES +=				\
  vnet/devices/netmap/netmap.c			\
  vnet/devices/netmap/device.c			\
  vnet/devices/netmap/node.c			\
  vnet/devices/netmap/cli.c			\
  vnet/devices/netmap/netmap_api.c

nobase_include_HEADERS +=			\
  vnet/devices/netmap/netmap.h		\
  vnet/devices/netmap/netmap.api.h

API_FILES += vnet/devices/netmap/netmap.api

########################################
# Driver feature graph arc support
########################################

libvnet_la_SOURCES +=				\
  vnet/feature/feature.c			\
  vnet/feature/registration.c

nobase_include_HEADERS +=			\
  vnet/feature/feature.h

########################################
# Unix kernel related
########################################

# FIXME: vnet/unix/hgshm.c

libvnet_la_SOURCES +=				\
  vnet/unix/gdb_funcs.c				\
  vnet/unix/pcap.c				\
  vnet/unix/tap_api.c				\
  vnet/unix/tapcli.c				\
  vnet/unix/tuntap.c

nobase_include_HEADERS +=			\
  vnet/unix/pcap.h				\
  vnet/unix/tuntap.h				\
  vnet/unix/tap.api.h				\
  vnet/unix/tapcli.h

API_FILES += vnet/unix/tap.api

########################################
# FIB
########################################

libvnet_la_SOURCES +=				\
  vnet/fib/fib.c                                \
  vnet/fib/fib_test.c                           \
  vnet/fib/ip4_fib.c                            \
  vnet/fib/ip6_fib.c                            \
  vnet/fib/mpls_fib.c                           \
  vnet/fib/fib_table.c                          \
  vnet/fib/fib_walk.c                           \
  vnet/fib/fib_types.c                          \
  vnet/fib/fib_node.c                           \
  vnet/fib/fib_node_list.c                      \
  vnet/fib/fib_entry.c                          \
  vnet/fib/fib_entry_src.c                      \
  vnet/fib/fib_entry_src_rr.c                   \
  vnet/fib/fib_entry_src_interface.c            \
  vnet/fib/fib_entry_src_default_route.c        \
  vnet/fib/fib_entry_src_special.c              \
  vnet/fib/fib_entry_src_api.c                  \
  vnet/fib/fib_entry_src_adj.c                  \
  vnet/fib/fib_entry_src_mpls.c                 \
  vnet/fib/fib_entry_src_lisp.c                 \
  vnet/fib/fib_entry_cover.c                    \
  vnet/fib/fib_entry_delegate.c                 \
  vnet/fib/fib_path_list.c                      \
  vnet/fib/fib_path.c				\
  vnet/fib/fib_path_ext.c			\
  vnet/fib/fib_urpf_list.c			\
  vnet/fib/fib_attached_export.c		\
  vnet/fib/fib_bfd.c

nobase_include_HEADERS +=			\
  vnet/fib/fib.h				\
  vnet/fib/fib_api.h				\
  vnet/fib/ip4_fib.h				\
  vnet/fib/ip6_fib.h				\
  vnet/fib/fib_types.h				\
  vnet/fib/fib_table.h				\
  vnet/fib/fib_node.h				\
  vnet/fib/fib_node_list.h			\
  vnet/fib/fib_entry.h				\
  vnet/fib/fib_entry_delegate.h

########################################
# ADJ
########################################

libvnet_la_SOURCES +=				\
  vnet/adj/adj_nbr.c				\
  vnet/adj/adj_glean.c   			\
  vnet/adj/adj_midchain.c   			\
  vnet/adj/adj_mcast.c   			\
  vnet/adj/adj_l2.c      			\
  vnet/adj/adj_nsh.c      			\
  vnet/adj/adj.c		                \
  vnet/adj/rewrite.c				\
  vnet/adj/adj_bfd.c				\
  vnet/adj/adj_delegate.c

nobase_include_HEADERS +=			\
  vnet/adj/adj.h				\
  vnet/adj/adj_types.h				\
  vnet/adj/adj_glean.h  			\
  vnet/adj/adj_nsh.h  				\
  vnet/adj/adj_nbr.h 				\
  vnet/adj/rewrite.h

########################################
# Data-Plane Objects
########################################

libvnet_la_SOURCES +=				\
  vnet/dpo/dpo.c				\
  vnet/dpo/drop_dpo.c				\
  vnet/dpo/ip_null_dpo.c			\
  vnet/dpo/punt_dpo.c				\
  vnet/dpo/receive_dpo.c			\
  vnet/dpo/load_balance.c			\
  vnet/dpo/load_balance_map.c			\
  vnet/dpo/lookup_dpo.c   			\
  vnet/dpo/classify_dpo.c   			\
  vnet/dpo/replicate_dpo.c   			\
  vnet/dpo/interface_rx_dpo.c  			\
  vnet/dpo/interface_tx_dpo.c  			\
  vnet/dpo/mpls_disposition.c   		\
  vnet/dpo/mpls_label_dpo.c			\
  vnet/dpo/l3_proxy_dpo.c			\
  vnet/dpo/l2_bridge_dpo.c

nobase_include_HEADERS +=			\
  vnet/dpo/load_balance.h			\
  vnet/dpo/drop_dpo.h				\
  vnet/dpo/lookup_dpo.h				\
  vnet/dpo/punt_dpo.h				\
  vnet/dpo/classify_dpo.h			\
  vnet/dpo/receive_dpo.h			\
  vnet/dpo/ip_null_dpo.h			\
  vnet/dpo/replicate_dpo.h   			\
  vnet/dpo/dpo.h

########################################
# Multicast FIB
########################################

libvnet_la_SOURCES +=				\
  vnet/mfib/mfib_test.c                         \
  vnet/mfib/mfib_forward.c                      \
  vnet/mfib/ip4_mfib.c                          \
  vnet/mfib/ip6_mfib.c                          \
  vnet/mfib/mfib_types.c                        \
  vnet/mfib/mfib_signal.c                       \
  vnet/mfib/mfib_itf.c                          \
  vnet/mfib/mfib_entry.c                        \
  vnet/mfib/mfib_table.c

nobase_include_HEADERS +=			\
  vnet/mfib/ip4_mfib.h                          \
  vnet/mfib/mfib_types.h                        \
  vnet/mfib/mfib_table.h

########################################
# Utilities
########################################

libvnet_la_SOURCES +=                    \
  vnet/util/radix.c			 \
  vnet/util/trajectory.c

########################################
# Plugin client library
########################################

nobase_include_HEADERS +=                      \
  vnet/plugin/plugin.h

pcap2pg_SOURCES = 				\
  vnet/unix/pcap2pg.c				\
  vnet/unix/pcap.h

pcap2pg_LDFLAGS = -static
pcap2pg_LDADD = libvnet.la libvppinfra.la -lpthread libvlibmemory.la -lm -ldl

noinst_PROGRAMS += pcap2pg

# vi:syntax=automake