1 # Copyright (c) 2015 Cisco and/or its affiliates.
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at:
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
15 libvnetplugin_la_SOURCES =
17 libvnet_la_LIBAD = libvppinfra.la libvlib.la libsvm.la
19 ########################################
21 ########################################
22 libvnet_la_SOURCES += \
24 vnet/devices/devices.c \
27 vnet/interface_api.c \
28 vnet/interface_cli.c \
29 vnet/interface_format.c \
30 vnet/interface_output.c \
35 nobase_include_HEADERS += \
39 vnet/devices/devices.h \
43 vnet/interface.api.h \
44 vnet/interface_funcs.h \
50 vnet/vnet_all_api_h.h \
53 API_FILES += vnet/interface.api
55 ########################################
57 ########################################
59 libvnet_la_SOURCES += \
60 vnet/policer/node_funcs.c \
61 vnet/policer/policer.c \
64 nobase_include_HEADERS += \
65 vnet/policer/police.h \
66 vnet/policer/policer.h \
69 ########################################
71 ########################################
73 libvnet_la_SOURCES += \
76 vnet/cop/ip4_whitelist.c \
77 vnet/cop/ip6_whitelist.c
79 nobase_include_HEADERS += \
82 ########################################
83 # Layer 2 protocols go here
84 ########################################
86 ########################################
87 # Layer 2 protocol: Ethernet
88 ########################################
89 libvnet_la_SOURCES += \
91 vnet/ethernet/format.c \
92 vnet/ethernet/init.c \
93 vnet/ethernet/interface.c \
94 vnet/ethernet/node.c \
97 nobase_include_HEADERS += \
98 vnet/ethernet/arp_packet.h \
99 vnet/ethernet/error.def \
100 vnet/ethernet/ethernet.h \
101 vnet/ethernet/packet.h \
102 vnet/ethernet/types.def
104 ########################################
105 # Layer 2 protocol: Ethernet bridging
106 ########################################
107 libvnet_la_SOURCES += \
108 vnet/l2/feat_bitmap.c \
112 vnet/l2/l2_input_classify.c \
113 vnet/l2/l2_output_classify.c \
114 vnet/l2/l2_efp_filter.c \
118 vnet/l2/l2_input_acl.c \
120 vnet/l2/l2_input_vtr.c \
122 vnet/l2/l2_output_acl.c \
123 vnet/l2/l2_output.c \
129 nobase_include_HEADERS += \
130 vnet/l2/feat_bitmap.h \
132 vnet/l2/l2_output.h \
134 vnet/l2/l2_input_vtr.h \
135 vnet/l2/l2_efp_filter.h \
143 vnet/l2/l2_classify.h \
146 API_FILES += vnet/l2/l2.api
148 ########################################
149 # Layer 2 protocol: SRP
150 ########################################
151 libvnet_la_SOURCES += \
153 vnet/srp/interface.c \
157 nobase_include_HEADERS += \
161 ########################################
162 # Layer 2 protocol: PPP
163 ########################################
164 libvnet_la_SOURCES += \
169 nobase_include_HEADERS += \
174 ########################################
175 # Layer 2 protocol: HDLC
176 ########################################
177 libvnet_la_SOURCES += \
182 nobase_include_HEADERS += \
183 vnet/hdlc/error.def \
187 ########################################
188 # Layer 2 protocol: LLC
189 ########################################
190 libvnet_la_SOURCES += \
195 nobase_include_HEADERS += \
198 ########################################
199 # Layer 2 protocol: SNAP
200 ########################################
201 libvnet_la_SOURCES += \
206 nobase_include_HEADERS += \
209 ########################################
211 ########################################
212 libvnet_la_SOURCES += \
216 vnet/vxlan/vxlan_api.c
218 nobase_include_HEADERS += \
220 vnet/vxlan/vxlan_packet.h \
221 vnet/vxlan/vxlan_error.def \
222 vnet/vxlan/vxlan.api.h
224 API_FILES += vnet/vxlan/vxlan.api
226 ########################################
228 ########################################
229 libvnet_la_SOURCES += \
230 vnet/cdp/cdp_input.c \
231 vnet/cdp/cdp_node.c \
232 vnet/cdp/cdp_periodic.c
234 nobase_include_HEADERS += \
235 vnet/cdp/cdp_protocol.h
237 ########################################
239 ########################################
240 libvnet_la_SOURCES += \
241 vnet/lldp/lldp_input.c \
242 vnet/lldp/lldp_node.c \
243 vnet/lldp/lldp_output.c \
246 nobase_include_HEADERS += \
247 vnet/lldp/lldp_protocol.h
249 ########################################
250 # Layer 2/3 "classify"
251 ########################################
252 libvnet_la_SOURCES += \
253 vnet/classify/vnet_classify.c \
254 vnet/classify/ip_classify.c \
255 vnet/classify/input_acl.c \
256 vnet/classify/policer_classify.c \
257 vnet/classify/flow_classify.c \
258 vnet/classify/flow_classify_node.c \
259 vnet/classify/vnet_classify.h
261 nobase_include_HEADERS += \
262 vnet/classify/vnet_classify.h \
263 vnet/classify/input_acl.h \
264 vnet/classify/policer_classify.h \
265 vnet/classify/flow_classify.h
267 ########################################
268 # Layer 3 protocols go here
269 ########################################
271 ########################################
272 # Layer 3 protocol: IP v4/v6
273 ########################################
274 libvnet_la_SOURCES += \
279 vnet/ip/ip4_format.c \
280 vnet/ip/ip4_forward.c \
281 vnet/ip/ip4_input.c \
282 vnet/ip/ip4_mtrie.c \
284 vnet/ip/ip4_source_and_port_range_check.c \
285 vnet/ip/ip4_source_check.c \
286 vnet/ip/ip6_format.c \
287 vnet/ip/ip6_forward.c \
288 vnet/ip/ip6_hop_by_hop.c \
289 vnet/ip/ip6_input.c \
290 vnet/ip/ip6_neighbor.c \
293 vnet/ip/ip_checksum.c \
297 vnet/ip/ip_input_acl.c \
301 vnet/ip/udp_format.c \
303 vnet/ip/udp_local.c \
306 nobase_include_HEADERS += \
308 vnet/ip/icmp46_packet.h \
311 vnet/ip/igmp_packet.h \
313 vnet/ip/ip4_error.h \
315 vnet/ip/ip4_mtrie.h \
316 vnet/ip/ip4_packet.h \
317 vnet/ip/ip6_error.h \
319 vnet/ip/ip6_hop_by_hop.h \
320 vnet/ip/ip6_hop_by_hop_packet.h \
321 vnet/ip/ip6_packet.h \
322 vnet/ip/ip6_neighbor.h \
324 vnet/ip/ip_packet.h \
325 vnet/ip/ip_source_and_port_range_check.h \
328 vnet/ip/protocols.def \
329 vnet/ip/punt_error.def \
331 vnet/ip/tcp_packet.h \
332 vnet/ip/udp_error.def \
336 API_FILES += vnet/ip/ip.api
338 ########################################
339 # Bidirectional Forwarding Detection
340 ########################################
342 nobase_include_HEADERS += \
343 vnet/bfd/bfd_protocol.h \
344 vnet/bfd/bfd_main.h \
349 libvnet_la_SOURCES += \
352 vnet/bfd/bfd_main.c \
353 vnet/bfd/bfd_protocol.c \
356 API_FILES += vnet/bfd/bfd.api
358 ########################################
359 # Layer 3 protocol: IPSec
360 ########################################
362 libvnet_la_SOURCES += \
364 vnet/ipsec/ipsec_cli.c \
365 vnet/ipsec/ipsec_format.c \
366 vnet/ipsec/ipsec_input.c \
367 vnet/ipsec/ipsec_if.c \
368 vnet/ipsec/ipsec_if_in.c \
369 vnet/ipsec/ipsec_if_out.c \
370 vnet/ipsec/esp_encrypt.c \
371 vnet/ipsec/esp_decrypt.c \
373 vnet/ipsec/ikev2_crypto.c \
374 vnet/ipsec/ikev2_cli.c \
375 vnet/ipsec/ikev2_payload.c \
376 vnet/ipsec/ikev2_format.c \
377 vnet/ipsec/ipsec_api.c
379 API_FILES += vnet/ipsec/ipsec.api
382 libvnet_la_SOURCES += \
383 vnet/devices/dpdk/ipsec/esp_encrypt.c \
384 vnet/devices/dpdk/ipsec/esp_decrypt.c \
385 vnet/devices/dpdk/ipsec/crypto_node.c \
386 vnet/devices/dpdk/ipsec/cli.c \
387 vnet/devices/dpdk/ipsec/ipsec.c
391 libvnet_la_SOURCES += \
392 vnet/ipsec/ipsec_output.c
394 nobase_include_HEADERS += \
398 vnet/ipsec/ikev2_priv.h \
399 vnet/ipsec/ipsec.api.h
401 nobase_include_HEADERS += \
402 vnet/devices/dpdk/ipsec/ipsec.h \
403 vnet/devices/dpdk/ipsec/esp.h
406 ########################################
407 # Layer 3 protocol: osi
408 ########################################
409 libvnet_la_SOURCES += \
414 nobase_include_HEADERS += \
417 ########################################
418 # Layer 3 protocol: MAP
419 ########################################
420 libvnet_la_SOURCES += \
425 vnet/map/ip4_map_t.c \
426 vnet/map/ip6_map_t.c \
429 nobase_include_HEADERS += \
434 API_FILES += vnet/map/map.api
440 test_map_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
442 test_map_LDADD = libvnet.la libvppinfra.la libvlib.la \
443 -lpthread -lvlibmemory -lvlibapi -lvlib_unix \
446 test_map_LDFLAGS = -static
450 ########################################
451 # Tunnel protocol: gre
452 ########################################
453 libvnet_la_SOURCES += \
456 vnet/gre/interface.c \
460 nobase_include_HEADERS += \
466 API_FILES += vnet/gre/gre.api
468 ########################################
469 # Tunnel protocol: l2tpv3
470 ########################################
471 libvnet_la_SOURCES += \
478 nobase_include_HEADERS += \
483 API_FILES += vnet/l2tp/l2tp.api
485 ########################################
486 # Tunnel protocol: gre+mpls
487 ########################################
488 libvnet_la_SOURCES += \
490 vnet/mpls/mpls_lookup.c \
491 vnet/mpls/mpls_output.c \
492 vnet/mpls/mpls_features.c \
494 vnet/mpls/interface.c \
495 vnet/mpls/mpls_tunnel.c \
498 nobase_include_HEADERS += \
500 vnet/mpls/mpls_types.h \
501 vnet/mpls/mpls_tunnel.h \
506 ########################################
507 # Tunnel protocol: vxlan-gpe
508 ########################################
510 libvnet_la_SOURCES += \
511 vnet/vxlan-gpe/vxlan_gpe.c \
512 vnet/vxlan-gpe/encap.c \
513 vnet/vxlan-gpe/decap.c \
514 vnet/vxlan-gpe/vxlan_gpe_api.c
516 nobase_include_HEADERS += \
517 vnet/vxlan-gpe/vxlan_gpe.h \
518 vnet/vxlan-gpe/vxlan_gpe_packet.h \
519 vnet/vxlan-gpe/vxlan_gpe_error.def \
520 vnet/vxlan-gpe/vxlan_gpe.api.h
522 API_FILES += vnet/vxlan-gpe/vxlan_gpe.api
524 ########################################
525 # Tunnel protocol: ipsec+gre
526 ########################################
527 libvnet_la_SOURCES += \
528 vnet/ipsec-gre/ipsec_gre.c \
529 vnet/ipsec-gre/node.c \
530 vnet/ipsec-gre/interface.c \
531 vnet/ipsec-gre/ipsec_gre_api.c
533 nobase_include_HEADERS += \
534 vnet/ipsec-gre/ipsec_gre.h \
535 vnet/ipsec-gre/error.def \
536 vnet/ipsec-gre/ipsec_gre.api.h
538 API_FILES += vnet/ipsec-gre/ipsec_gre.api
540 ########################################
541 # LISP control plane: lisp-cp
542 ########################################
544 libvnet_la_SOURCES += \
545 vnet/lisp-cp/lisp_types.c \
546 vnet/lisp-cp/lisp_cp_dpo.c \
547 vnet/lisp-cp/control.c \
548 vnet/lisp-cp/gid_dictionary.c \
549 vnet/lisp-cp/lisp_msg_serdes.c \
550 vnet/lisp-cp/packets.c \
551 vnet/lisp-cp/lisp_api.c
553 nobase_include_HEADERS += \
554 vnet/lisp-cp/lisp_types.h \
555 vnet/lisp-cp/packets.h \
556 vnet/lisp-cp/gid_dictionary.h \
557 vnet/lisp-cp/lisp_cp_messages.h \
558 vnet/lisp-cp/lisp_msg_serdes.h \
559 vnet/lisp-cp/control.h \
560 vnet/lisp-cp/lisp.api.h
562 API_FILES += vnet/lisp-cp/lisp.api
574 -lpthread -ldl -lrt -lm -lcrypto
576 TESTS += test_cp_serdes test_lisp_types
578 test_cp_serdes_SOURCES = \
579 tests/vnet/lisp-cp/test_cp_serdes.c \
580 vnet/lisp-cp/lisp_msg_serdes.c \
581 vnet/lisp-cp/lisp_types.c \
582 vnet/lisp-cp/packets.c \
583 vnet/ip/ip_checksum.c
585 test_lisp_types_SOURCES = \
586 tests/vnet/lisp-cp/test_lisp_types.c \
587 vnet/lisp-cp/lisp_types.c
589 test_cp_serdes_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
590 test_lisp_types_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
592 test_cp_serdes_LDFLAGS = $(DPDK_LD_FLAGS)
593 test_cp_serdes_LDADD = $(LDS) $(DPDK_LD_ADD)
594 test_lisp_types_LDFLAGS = $(DPDK_LD_FLAGS)
595 test_lisp_types_LDADD = $(LDS) $(DPDK_LD_ADD)
598 ########################################
599 # Tunnel protocol: lisp-gpe
600 ########################################
602 libvnet_la_SOURCES += \
603 vnet/lisp-gpe/lisp_gpe.c \
604 vnet/lisp-gpe/lisp_gpe_sub_interface.c \
605 vnet/lisp-gpe/lisp_gpe_adjacency.c \
606 vnet/lisp-gpe/lisp_gpe_tunnel.c \
607 vnet/lisp-gpe/lisp_gpe_fwd_entry.c \
608 vnet/lisp-gpe/lisp_gpe_tenant.c \
609 vnet/lisp-gpe/interface.c \
610 vnet/lisp-gpe/decap.c \
611 vnet/lisp-gpe/lisp_gpe_api.c
613 nobase_include_HEADERS += \
614 vnet/lisp-gpe/lisp_gpe.h \
615 vnet/lisp-gpe/lisp_gpe_fwd_entry.h \
616 vnet/lisp-gpe/lisp_gpe_tenant.h \
617 vnet/lisp-gpe/lisp_gpe_packet.h \
618 vnet/lisp-gpe/lisp_gpe_error.def \
619 vnet/lisp-gpe/lisp_gpe.api.h
621 API_FILES += vnet/lisp-gpe/lisp_gpe.api
626 test_test_SOURCES = tests/vnet/lisp-gpe/test.c
628 test_test_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
630 test_test_LDADD = $(LIBOBJS)
632 noinst_PROGRAMS += $(TESTS)
633 check_PROGRAMS += $(TESTS)
636 ########################################
638 ########################################
639 libvnet_la_SOURCES += \
643 nobase_include_HEADERS += \
646 ########################################
648 ########################################
649 libvnet_la_SOURCES += \
650 vnet/dhcp/proxy_node.c \
653 nobase_include_HEADERS += \
656 vnet/dhcp/proxy_error.def
658 ########################################
659 # ipv6 segment routing
660 ########################################
663 libvnet_la_SOURCES += \
665 vnet/sr/sr_replicate.c
668 nobase_include_HEADERS += \
669 vnet/sr/sr_packet.h \
670 vnet/sr/sr_error.def \
673 ########################################
675 ########################################
676 libvnet_la_SOURCES += \
677 vnet/dhcpv6/proxy_node.c
679 nobase_include_HEADERS += \
680 vnet/dhcpv6/packet.h \
681 vnet/dhcpv6/proxy.h \
682 vnet/dhcpv6/proxy_error.def
684 ########################################
685 # IPFIX / netflow v10
686 ########################################
687 libvnet_la_SOURCES += \
688 vnet/flow/flow_report.c
690 nobase_include_HEADERS += \
691 vnet/flow/flow_report.h \
692 vnet/flow/ipfix_info_elements.h \
693 vnet/flow/ipfix_packet.h
695 ########################################
696 # IPFIX classify code
697 ########################################
699 libvnet_la_SOURCES += \
700 vnet/flow/flow_report_classify.c
702 nobase_include_HEADERS += \
703 vnet/flow/flow_report_classify.h
705 ########################################
707 ########################################
709 libvnet_la_SOURCES += \
710 vnet/lawful-intercept/lawful_intercept.c \
711 vnet/lawful-intercept/node.c
713 nobase_include_HEADERS += \
714 vnet/lawful-intercept/lawful_intercept.h
716 ########################################
717 # SPAN (port mirroring)
718 ########################################
720 libvnet_la_SOURCES += \
721 vnet/span/span_api.c \
725 nobase_include_HEADERS += \
726 vnet/span/span.api.h \
729 API_FILES += vnet/span/span.api
731 ########################################
733 ########################################
735 libvnet_la_SOURCES += \
743 nobase_include_HEADERS += \
747 ########################################
749 ########################################
751 libvnet_la_SOURCES += \
752 vnet/devices/dpdk/dpdk_priv.h \
753 vnet/devices/dpdk/device.c \
754 vnet/devices/dpdk/format.c \
755 vnet/devices/dpdk/init.c \
756 vnet/devices/dpdk/node.c \
757 vnet/devices/dpdk/hqos.c \
758 vnet/devices/dpdk/cli.c
760 nobase_include_HEADERS += \
761 vnet/devices/dpdk/dpdk.h
763 libvnet_la_SOURCES += \
764 vnet/devices/nic/ixge.c \
765 vnet/devices/nic/ixge.h \
766 vnet/devices/nic/sfp.c \
767 vnet/devices/nic/sfp.h
770 ########################################
772 ########################################
774 libvnet_la_SOURCES += \
775 vnet/devices/virtio/vhost-user.c \
776 vnet/devices/virtio/vhost_user_api.c
778 nobase_include_HEADERS += \
779 vnet/devices/virtio/vhost-user.h \
780 vnet/devices/virtio/vhost_user.api.h
782 API_FILES += vnet/devices/virtio/vhost_user.api
784 ########################################
786 ########################################
787 libvnet_la_SOURCES += \
788 vnet/devices/ssvm/ssvm_eth.c \
789 vnet/devices/ssvm/node.c
791 nobase_include_HEADERS += \
792 vnet/devices/ssvm/ssvm_eth.h
794 ########################################
795 # Linux packet interface
796 ########################################
798 libvnet_la_SOURCES += \
799 vnet/devices/af_packet/af_packet.c \
800 vnet/devices/af_packet/device.c \
801 vnet/devices/af_packet/node.c \
802 vnet/devices/af_packet/cli.c \
803 vnet/devices/af_packet/af_packet_api.c
805 nobase_include_HEADERS += \
806 vnet/devices/af_packet/af_packet.h \
807 vnet/devices/af_packet/af_packet.api.h
809 API_FILES += vnet/devices/af_packet/af_packet.api
811 ########################################
813 ########################################
815 libvnet_la_SOURCES += \
816 vnet/devices/netmap/netmap.c \
817 vnet/devices/netmap/device.c \
818 vnet/devices/netmap/node.c \
819 vnet/devices/netmap/cli.c \
820 vnet/devices/netmap/netmap_api.c
822 nobase_include_HEADERS += \
823 vnet/devices/netmap/netmap.h \
824 vnet/devices/netmap/netmap.api.h
826 API_FILES += vnet/devices/netmap/netmap.api
828 ########################################
829 # Driver feature graph arc support
830 ########################################
832 libvnet_la_SOURCES += \
833 vnet/feature/feature.c \
834 vnet/feature/registration.c
836 nobase_include_HEADERS += \
837 vnet/feature/feature.h
839 ########################################
840 # Unix kernel related
841 ########################################
843 # FIXME: vnet/unix/hgshm.c
845 libvnet_la_SOURCES += \
846 vnet/unix/gdb_funcs.c \
848 vnet/unix/tap_api.c \
852 nobase_include_HEADERS += \
855 vnet/unix/tap.api.h \
858 API_FILES += vnet/unix/tap.api
860 ########################################
862 ########################################
864 libvnet_la_SOURCES += \
866 vnet/fib/fib_test.c \
869 vnet/fib/mpls_fib.c \
870 vnet/fib/fib_table.c \
871 vnet/fib/fib_walk.c \
872 vnet/fib/fib_types.c \
873 vnet/fib/fib_node.c \
874 vnet/fib/fib_node_list.c \
875 vnet/fib/fib_entry.c \
876 vnet/fib/fib_entry_src.c \
877 vnet/fib/fib_entry_src_rr.c \
878 vnet/fib/fib_entry_src_interface.c \
879 vnet/fib/fib_entry_src_default_route.c \
880 vnet/fib/fib_entry_src_special.c \
881 vnet/fib/fib_entry_src_api.c \
882 vnet/fib/fib_entry_src_adj.c \
883 vnet/fib/fib_entry_src_mpls.c \
884 vnet/fib/fib_entry_src_lisp.c \
885 vnet/fib/fib_entry_cover.c \
886 vnet/fib/fib_entry_delegate.c \
887 vnet/fib/fib_path_list.c \
888 vnet/fib/fib_path.c \
889 vnet/fib/fib_path_ext.c \
890 vnet/fib/fib_urpf_list.c \
891 vnet/fib/fib_attached_export.c
893 nobase_include_HEADERS += \
898 vnet/fib/fib_types.h \
899 vnet/fib/fib_table.h \
900 vnet/fib/fib_node.h \
901 vnet/fib/fib_node_list.h \
902 vnet/fib/fib_entry.h \
903 vnet/fib/fib_entry_delegate.h
905 ########################################
907 ########################################
909 libvnet_la_SOURCES += \
911 vnet/adj/adj_rewrite.c \
912 vnet/adj/adj_glean.c \
913 vnet/adj/adj_midchain.c \
917 nobase_include_HEADERS += \
919 vnet/adj/adj_types.h \
920 vnet/adj/adj_rewrite.h \
921 vnet/adj/adj_glean.h \
924 ########################################
926 ########################################
928 libvnet_la_SOURCES += \
930 vnet/dpo/drop_dpo.c \
931 vnet/dpo/ip_null_dpo.c \
932 vnet/dpo/punt_dpo.c \
933 vnet/dpo/receive_dpo.c \
934 vnet/dpo/load_balance.c \
935 vnet/dpo/load_balance_map.c \
936 vnet/dpo/lookup_dpo.c \
937 vnet/dpo/classify_dpo.c \
938 vnet/dpo/mpls_label_dpo.c
940 nobase_include_HEADERS += \
941 vnet/dpo/load_balance.h \
942 vnet/dpo/drop_dpo.h \
943 vnet/dpo/lookup_dpo.h \
944 vnet/dpo/punt_dpo.h \
945 vnet/dpo/classify_dpo.h \
946 vnet/dpo/receive_dpo.h \
947 vnet/dpo/ip_null_dpo.h \
950 ########################################
951 # Plugin client library
952 ########################################
954 libvnetplugin_la_SOURCES += \
957 nobase_include_HEADERS += \
960 libvnetdir = ${libdir}
961 libvnet_LTLIBRARIES = libvnet.la libvnetplugin.la
964 vnet/unix/pcap2pg.c \
967 pcap2pg_LDFLAGS = -static
968 pcap2pg_LDADD = libvnet.la libvppinfra.la -lpthread libvlibmemory.la -lm -ldl
970 noinst_PROGRAMS += pcap2pg