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.
14 AUTOMAKE_OPTIONS = foreign subdir-objects
16 AM_CFLAGS = -Wall @DPDK@ @IPSEC@ @IPV6SR@
19 libvnetplugin_la_SOURCES =
20 nobase_include_HEADERS =
26 dpdk_libs += -l:libdpdk.a
29 ########################################
31 ########################################
32 libvnet_la_SOURCES += \
36 vnet/interface_cli.c \
37 vnet/interface_format.c \
38 vnet/interface_output.c \
43 nobase_include_HEADERS += \
50 vnet/interface_funcs.h \
57 ########################################
59 ########################################
61 libvnet_la_SOURCES += \
62 vnet/policer/node_funcs.c \
63 vnet/policer/policer.c \
66 nobase_include_HEADERS += \
67 vnet/policer/police.h \
68 vnet/policer/policer.h \
69 vnet/policer/fix_types.h \
72 ########################################
74 ########################################
76 libvnet_la_SOURCES += \
79 vnet/cop/ip4_whitelist.c \
80 vnet/cop/ip6_whitelist.c
82 nobase_include_HEADERS += \
85 ########################################
86 # Layer 2 protocols go here
87 ########################################
89 ########################################
90 # Layer 2 protocol: Ethernet
91 ########################################
92 libvnet_la_SOURCES += \
94 vnet/ethernet/format.c \
95 vnet/ethernet/init.c \
96 vnet/ethernet/interface.c \
97 vnet/ethernet/node.c \
100 nobase_include_HEADERS += \
101 vnet/ethernet/arp_packet.h \
102 vnet/ethernet/error.def \
103 vnet/ethernet/ethernet.h \
104 vnet/ethernet/packet.h \
105 vnet/ethernet/types.def
107 ########################################
108 # Layer 2 protocol: Ethernet bridging
109 ########################################
110 libvnet_la_SOURCES += \
111 vnet/l2/feat_bitmap.c \
114 vnet/l2/l2_classify.c \
115 vnet/l2/l2_efp_filter.c \
119 vnet/l2/l2_input_acl.c \
121 vnet/l2/l2_input_vtr.c \
123 vnet/l2/l2_output_acl.c \
124 vnet/l2/l2_output.c \
130 nobase_include_HEADERS += \
131 vnet/l2/feat_bitmap.h \
133 vnet/l2/l2_output.h \
135 vnet/l2/l2_input_vtr.h \
136 vnet/l2/l2_efp_filter.h \
144 vnet/l2/l2_classify.h
146 ########################################
147 # Layer 2 protocol: SRP
148 ########################################
149 libvnet_la_SOURCES += \
151 vnet/srp/interface.c \
155 nobase_include_HEADERS += \
159 ########################################
160 # Layer 2 protocol: PPP
161 ########################################
162 libvnet_la_SOURCES += \
167 nobase_include_HEADERS += \
172 ########################################
173 # Layer 2 protocol: HDLC
174 ########################################
175 libvnet_la_SOURCES += \
180 nobase_include_HEADERS += \
181 vnet/hdlc/error.def \
185 ########################################
186 # Layer 2 protocol: LLC
187 ########################################
188 libvnet_la_SOURCES += \
193 nobase_include_HEADERS += \
196 ########################################
197 # Layer 2 protocol: SNAP
198 ########################################
199 libvnet_la_SOURCES += \
204 nobase_include_HEADERS += \
207 ########################################
209 ########################################
210 libvnet_la_SOURCES += \
215 nobase_include_HEADERS += \
217 vnet/vxlan/vxlan_packet.h \
218 vnet/vxlan/vxlan_error.def
220 ########################################
222 ########################################
223 libvnet_la_SOURCES += \
224 vnet/cdp/cdp_input.c \
225 vnet/cdp/cdp_node.c \
226 vnet/cdp/cdp_periodic.c
228 nobase_include_HEADERS += \
229 vnet/cdp/cdp_protocol.h
231 ########################################
232 # Layer 2/3 "classify"
233 ########################################
234 libvnet_la_SOURCES += \
235 vnet/classify/vnet_classify.c \
236 vnet/classify/ip_classify.c \
237 vnet/classify/input_acl.c \
238 vnet/classify/policer_classify.c \
239 vnet/classify/vnet_classify.h
241 nobase_include_HEADERS += \
242 vnet/classify/vnet_classify.h \
243 vnet/classify/input_acl.h \
244 vnet/classify/policer_classify.h
246 ########################################
247 # Layer 3 protocols go here
248 ########################################
250 ########################################
251 # Layer 3 protocol: IP v4/v6
252 ########################################
253 libvnet_la_SOURCES += \
254 vnet/ip/adj_alloc.c \
258 vnet/ip/ip_feature_registration.c \
260 vnet/ip/ip4_format.c \
261 vnet/ip/ip4_forward.c \
262 vnet/ip/ip4_input.c \
263 vnet/ip/ip4_mtrie.c \
265 vnet/ip/ip4_source_check.c \
266 vnet/ip/ip4_source_and_port_range_check.c \
267 vnet/ip/ip6_format.c \
268 vnet/ip/ip6_forward.c \
269 vnet/ip/ip6_hop_by_hop.c \
270 vnet/ip/ip6_input.c \
271 vnet/ip/ip6_neighbor.c \
273 vnet/ip/ip_checksum.c \
277 vnet/ip/udp_format.c \
279 vnet/ip/udp_local.c \
281 vnet/ip/ip_input_acl.c \
284 nobase_include_HEADERS += \
285 vnet/ip/adj_alloc.h \
287 vnet/ip/icmp46_packet.h \
290 vnet/ip/igmp_packet.h \
292 vnet/ip/ip_feature_registration.h \
293 vnet/ip/ip_source_and_port_range_check.h \
295 vnet/ip/ip4_mtrie.h \
296 vnet/ip/ip4_error.h \
297 vnet/ip/ip4_packet.h \
299 vnet/ip/ip6_error.h \
300 vnet/ip/ip6_hop_by_hop.h \
301 vnet/ip/ip6_hop_by_hop_packet.h \
302 vnet/ip/ip6_packet.h \
304 vnet/ip/ip_packet.h \
306 vnet/ip/protocols.def \
307 vnet/ip/tcp_packet.h \
309 vnet/ip/udp_error.def \
312 ########################################
313 # Layer 3 protocol: IPSec
314 ########################################
316 libvnet_la_SOURCES += \
318 vnet/ipsec/ipsec_cli.c \
319 vnet/ipsec/ipsec_format.c \
320 vnet/ipsec/ipsec_input.c \
321 vnet/ipsec/ipsec_if.c \
322 vnet/ipsec/ipsec_if_in.c \
323 vnet/ipsec/ipsec_if_out.c \
324 vnet/ipsec/esp_encrypt.c \
325 vnet/ipsec/esp_decrypt.c \
327 vnet/ipsec/ikev2_crypto.c \
328 vnet/ipsec/ikev2_cli.c \
329 vnet/ipsec/ikev2_payload.c \
330 vnet/ipsec/ikev2_format.c
333 libvnet_la_SOURCES += \
334 vnet/ipsec/ipsec_output.c
336 nobase_include_HEADERS += \
340 vnet/ipsec/ikev2_priv.h
342 ########################################
343 # Layer 3 protocol: osi
344 ########################################
345 libvnet_la_SOURCES += \
350 nobase_include_HEADERS += \
353 ########################################
354 # Layer 3 protocol: MAP
355 ########################################
356 libvnet_la_SOURCES += \
360 vnet/map/ip4_map_t.c \
363 nobase_include_HEADERS += \
370 test_map_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
372 test_map_LDADD = libvnet.la -lvppinfra -lvlib \
373 -lpthread -lvlibmemory -lvlibapi -lvlib_unix \
376 test_map_LDFLAGS = -static
380 ########################################
381 # Tunnel protocol: gre
382 ########################################
383 libvnet_la_SOURCES += \
386 vnet/gre/interface.c \
389 nobase_include_HEADERS += \
394 ########################################
395 # Tunnel protocol: l2tpv3
396 ########################################
397 libvnet_la_SOURCES += \
403 nobase_include_HEADERS += \
407 ########################################
408 # Tunnel protocol: gre+mpls
409 ########################################
410 libvnet_la_SOURCES += \
411 vnet/mpls-gre/mpls.c \
412 vnet/mpls-gre/node.c \
413 vnet/mpls-gre/interface.c \
414 vnet/mpls-gre/policy_encap.c \
417 nobase_include_HEADERS += \
418 vnet/mpls-gre/mpls.h \
419 vnet/mpls-gre/packet.h \
420 vnet/mpls-gre/error.def
423 ########################################
424 # Tunnel protocol: vxlan-gpe
425 ########################################
427 libvnet_la_SOURCES += \
428 vnet/vxlan-gpe/vxlan_gpe.c \
429 vnet/vxlan-gpe/encap.c \
430 vnet/vxlan-gpe/decap.c
432 nobase_include_HEADERS += \
433 vnet/vxlan-gpe/vxlan_gpe.h \
434 vnet/vxlan-gpe/vxlan_gpe_packet.h \
435 vnet/vxlan-gpe/vxlan_gpe_error.def
437 ########################################
438 # Tunnel protocol: ipsec+gre
439 ########################################
440 libvnet_la_SOURCES += \
441 vnet/ipsec-gre/ipsec_gre.c \
442 vnet/ipsec-gre/node.c \
443 vnet/ipsec-gre/interface.c
445 nobase_include_HEADERS += \
446 vnet/ipsec-gre/ipsec_gre.h \
447 vnet/ipsec-gre/error.def
449 ########################################
450 # LISP control plane: lisp-cp
451 ########################################
453 libvnet_la_SOURCES += \
454 vnet/lisp-cp/lisp_types.c \
455 vnet/lisp-cp/control.c \
456 vnet/lisp-cp/gid_dictionary.c \
457 vnet/lisp-cp/lisp_msg_serdes.c \
458 vnet/lisp-cp/packets.c
460 nobase_include_HEADERS += \
461 vnet/lisp-cp/lisp_types.h \
462 vnet/lisp-cp/packets.h \
463 vnet/lisp-cp/gid_dictionary.h \
464 vnet/lisp-cp/lisp_cp_messages.h \
465 vnet/lisp-cp/lisp_msg_serdes.h \
466 vnet/lisp-cp/control.h
470 LDS = -lvppinfra -l:libvlib.a $(dpdk_libs) -l:libvlibmemory.a \
471 -l:libvlibapi.a -l:libsvm.a -lpthread -ldl -lrt -lm -l:libvlib_unix.a
473 TESTS += test_cp_serdes test_lisp_types
475 test_cp_serdes_SOURCES = \
476 test/lisp-cp/test_cp_serdes.c \
477 vnet/lisp-cp/lisp_msg_serdes.c \
478 vnet/lisp-cp/lisp_types.c \
479 vnet/lisp-cp/packets.c \
480 vnet/ip/ip_checksum.c
482 test_lisp_types_SOURCES = \
483 test/lisp-cp/test_lisp_types.c \
484 vnet/lisp-cp/lisp_types.c
486 test_cp_serdes_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
487 test_lisp_types_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
489 test_cp_serdes_LDADD = libvnet.la $(LDS)
490 test_lisp_types_LDADD = libvnet.la $(LDS)
492 test_cp_serdes_LDFLAGS = -static
493 test_lisp_types_LDFLAGS = -static
496 ########################################
497 # Tunnel protocol: lisp-gpe
498 ########################################
500 libvnet_la_SOURCES += \
501 vnet/lisp-gpe/lisp_gpe.c \
502 vnet/lisp-gpe/interface.c \
503 vnet/lisp-gpe/ip_forward.c \
504 vnet/lisp-gpe/decap.c
506 nobase_include_HEADERS += \
507 vnet/lisp-gpe/lisp_gpe.h \
508 vnet/lisp-gpe/lisp_gpe_packet.h \
509 vnet/lisp-gpe/lisp_gpe_error.def
514 test_test_SOURCES = test/lisp-gpe/test.c
516 test_test_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
518 test_test_LDADD = $(LIBOBJS)
520 noinst_PROGRAMS += $(TESTS)
521 check_PROGRAMS = $(TESTS)
524 ########################################
526 ########################################
527 libvnet_la_SOURCES += \
531 nobase_include_HEADERS += \
534 ########################################
536 ########################################
537 libvnet_la_SOURCES += \
538 vnet/dhcp/proxy_node.c \
541 nobase_include_HEADERS += \
544 vnet/dhcp/proxy_error.def
546 ########################################
547 # ipv6 segment routing
548 ########################################
551 libvnet_la_SOURCES += \
553 vnet/sr/sr_replicate.c
556 nobase_include_HEADERS += \
557 vnet/sr/sr_packet.h \
558 vnet/sr/sr_error.def \
561 ########################################
563 ########################################
564 libvnet_la_SOURCES += \
565 vnet/dhcpv6/proxy_node.c
567 nobase_include_HEADERS += \
568 vnet/dhcpv6/packet.h \
569 vnet/dhcpv6/proxy.h \
570 vnet/dhcpv6/proxy_error.def
572 ########################################
573 # IPFIX / netflow v10
574 ########################################
575 libvnet_la_SOURCES += \
576 vnet/flow/flow_report.c
578 nobase_include_HEADERS += \
579 vnet/flow/flow_report.h \
580 vnet/flow/ipfix_info_elements.h \
581 vnet/flow/ipfix_packet.h
583 ########################################
584 # IPFIX classify code
585 ########################################
587 libvnet_la_SOURCES += \
588 vnet/flow/flow_report_classify.c
590 nobase_include_HEADERS += \
591 vnet/flow/flow_report_classify.h
593 ########################################
595 ########################################
597 libvnet_la_SOURCES += \
598 vnet/lawful-intercept/lawful_intercept.c \
599 vnet/lawful-intercept/node.c
601 nobase_include_HEADERS += \
602 vnet/dpdk_replication.h \
603 vnet/lawful-intercept/lawful_intercept.h
605 ########################################
607 ########################################
609 libvnet_la_SOURCES += \
617 nobase_include_HEADERS += \
621 ########################################
623 ########################################
625 libvnet_la_SOURCES += \
626 vnet/devices/dpdk/dpdk_priv.h \
627 vnet/devices/dpdk/device.c \
628 vnet/devices/dpdk/format.c \
629 vnet/devices/dpdk/init.c \
630 vnet/devices/dpdk/node.c \
631 vnet/devices/dpdk/vhost_user.c \
632 vnet/devices/dpdk/cli.c
634 nobase_include_HEADERS += \
635 vnet/devices/dpdk/dpdk.h
637 libvnet_la_SOURCES += \
638 vnet/devices/nic/ixge.c \
639 vnet/devices/nic/ixge.h \
640 vnet/devices/nic/sfp.c \
641 vnet/devices/nic/sfp.h
644 ########################################
646 ########################################
648 libvnet_la_SOURCES += \
649 vnet/devices/virtio/vhost-user.c
651 nobase_include_HEADERS += \
652 vnet/devices/virtio/vhost-user.h
654 ########################################
656 ########################################
657 libvnet_la_SOURCES += \
658 vnet/devices/ssvm/ssvm_eth.c \
659 vnet/devices/ssvm/node.c
661 nobase_include_HEADERS += \
662 vnet/devices/ssvm/ssvm_eth.h
664 ########################################
665 # Linux packet interface
666 ########################################
668 libvnet_la_SOURCES += \
669 vnet/devices/af_packet/af_packet.c \
670 vnet/devices/af_packet/device.c \
671 vnet/devices/af_packet/node.c \
672 vnet/devices/af_packet/cli.c
674 nobase_include_HEADERS += \
675 vnet/devices/af_packet/af_packet.h
677 ########################################
679 ########################################
681 libvnet_la_SOURCES += \
682 vnet/devices/netmap/netmap.c \
683 vnet/devices/netmap/device.c \
684 vnet/devices/netmap/node.c \
685 vnet/devices/netmap/cli.c
687 nobase_include_HEADERS += \
688 vnet/devices/netmap/netmap.h
691 ########################################
692 # Unix kernel related
693 ########################################
695 # FIXME: vnet/unix/hgshm.c
697 libvnet_la_SOURCES += \
698 vnet/unix/gdb_funcs.c \
703 nobase_include_HEADERS += \
708 ########################################
709 # Plugin client library
710 ########################################
712 libvnetplugin_la_SOURCES += \
715 nobase_include_HEADERS += \
718 lib_LTLIBRARIES = libvnet.la libvnetplugin.la
721 vnet/unix/pcap2pg.c \
724 pcap2pg_LDFLAGS = -static
725 pcap2pg_LDADD = libvnet.la -l:libvppinfra.a -lpthread -lm -ldl
727 noinst_PROGRAMS += pcap2pg