a4031824e39c0ab57cc343fa060e4a7eafde493c
[vpp.git] / vnet / Makefile.am
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:
5 #
6 #     http://www.apache.org/licenses/LICENSE-2.0
7 #
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.
13
14 AUTOMAKE_OPTIONS = foreign subdir-objects
15
16 AM_CFLAGS = -Wall -Werror @DPDK@ @DPDK_CRYPTO@ @IPSEC@ @IPV6SR@
17
18 BUILT_SOURCES =                                 \
19  vnet/devices/af_packet/af_packet.api.h         \
20  vnet/devices/af_packet/af_packet.api.json      \
21  vnet/devices/netmap/netmap.api.h               \
22  vnet/devices/netmap/netmap.api.json            \
23  vnet/devices/virtio/vhost_user.api.h           \
24  vnet/devices/virtio/vhost_user.api.json        \
25  vnet/interface.api.h                           \
26  vnet/interface.api.json                        \
27  vnet/ip/ip.api.h                               \
28  vnet/ip/ip.api.json                            \
29  vnet/l2/l2.api.h                               \
30  vnet/l2/l2.api.json                            \
31  vnet/map/map.api.h                             \
32  vnet/map/map.api.json                          \
33  vnet/span/span.api.h                           \
34  vnet/span/span.api.json                        \
35  vnet/unix/tap.api.h                            \
36  vnet/unix/tap.api.json                         \
37  vnet/vxlan/vxlan.api.h                         \
38  vnet/vxlan/vxlan.api.json                      \
39  vnet/vxlan-gpe/vxlan_gpe.api.h                 \
40  vnet/vxlan-gpe/vxlan_gpe.api.json
41
42 libvnet_la_SOURCES =
43 libvnetplugin_la_SOURCES =
44 nobase_include_HEADERS =
45 noinst_PROGRAMS =
46 TESTS =
47
48 dpdk_libs =
49 if WITH_DPDK
50 dpdk_libs += -l:libdpdk.a
51 endif
52
53 ########################################
54 # Generic stuff
55 ########################################
56 libvnet_la_SOURCES +=                                   \
57   vnet/config.c                                         \
58   vnet/devices/devices.c                                \
59   vnet/handoff.c                                        \
60   vnet/interface.c                                      \
61   vnet/interface_api.c                                  \
62   vnet/interface_cli.c                                  \
63   vnet/interface_format.c                               \
64   vnet/interface_output.c                               \
65   vnet/misc.c                                           \
66   vnet/replication.c                                    \
67   vnet/rewrite.c                                
68
69 nobase_include_HEADERS +=                       \
70   vnet/api_errno.h                              \
71   vnet/buffer.h                                 \
72   vnet/config.h                                 \
73   vnet/devices/devices.h                        \
74   vnet/global_funcs.h                           \
75   vnet/handoff.h                                \
76   vnet/interface.h                              \
77   vnet/interface.api.h                          \
78   vnet/interface_funcs.h                        \
79   vnet/l3_types.h                               \
80   vnet/pipeline.h                               \
81   vnet/replication.h                            \
82   vnet/rewrite.h                                \
83   vnet/vnet.h                                   \
84   vnet/vnet_all_api_h.h                         \
85   vnet/vnet_msg_enum.h
86
87 ########################################
88 # Policer infra
89 ########################################
90
91 libvnet_la_SOURCES +=                           \
92   vnet/policer/node_funcs.c                     \
93   vnet/policer/policer.c                        \
94   vnet/policer/xlate.c
95
96 nobase_include_HEADERS +=                       \
97   vnet/policer/police.h                         \
98   vnet/policer/policer.h                        \
99   vnet/policer/xlate.h
100
101 ########################################
102 # Cop - junk filter
103 ########################################
104
105 libvnet_la_SOURCES +=                           \
106   vnet/cop/cop.c                                \
107   vnet/cop/node1.c                              \
108   vnet/cop/ip4_whitelist.c                      \
109   vnet/cop/ip6_whitelist.c      
110
111 nobase_include_HEADERS +=                       \
112   vnet/cop/cop.h
113
114 ########################################
115 # Layer 2 protocols go here
116 ########################################
117
118 ########################################
119 # Layer 2 protocol: Ethernet
120 ########################################
121 libvnet_la_SOURCES +=                           \
122  vnet/ethernet/arp.c                            \
123  vnet/ethernet/format.c                         \
124  vnet/ethernet/init.c                           \
125  vnet/ethernet/interface.c                      \
126  vnet/ethernet/node.c                           \
127  vnet/ethernet/pg.c
128
129 nobase_include_HEADERS +=                       \
130  vnet/ethernet/arp_packet.h                     \
131  vnet/ethernet/error.def                        \
132  vnet/ethernet/ethernet.h                       \
133  vnet/ethernet/packet.h                         \
134  vnet/ethernet/types.def
135
136 ########################################
137 # Layer 2 protocol: Ethernet bridging
138 ########################################
139 libvnet_la_SOURCES +=                           \
140  vnet/l2/feat_bitmap.c                          \
141  vnet/l2/l2_api.c                               \
142  vnet/l2/l2_bd.c                                \
143  vnet/l2/l2_bvi.c                               \
144  vnet/l2/l2_input_classify.c                    \
145  vnet/l2/l2_output_classify.c                   \
146  vnet/l2/l2_efp_filter.c                        \
147  vnet/l2/l2_fib.c                               \
148  vnet/l2/l2_flood.c                             \
149  vnet/l2/l2_fwd.c                               \
150  vnet/l2/l2_input_acl.c                         \
151  vnet/l2/l2_input.c                             \
152  vnet/l2/l2_input_vtr.c                         \
153  vnet/l2/l2_learn.c                             \
154  vnet/l2/l2_output_acl.c                        \
155  vnet/l2/l2_output.c                            \
156  vnet/l2/l2_patch.c                             \
157  vnet/l2/l2_rw.c                                \
158  vnet/l2/l2_vtr.c                               \
159  vnet/l2/l2_xcrw.c
160
161 nobase_include_HEADERS +=                       \
162  vnet/l2/feat_bitmap.h                          \
163  vnet/l2/l2_input.h                             \
164  vnet/l2/l2_output.h                            \
165  vnet/l2/l2_vtr.h                               \
166  vnet/l2/l2_input_vtr.h                         \
167  vnet/l2/l2_efp_filter.h                        \
168  vnet/l2/l2_fwd.h                               \
169  vnet/l2/l2_bd.h                                \
170  vnet/l2/l2_bvi.h                               \
171  vnet/l2/l2_flood.h                             \
172  vnet/l2/l2_fib.h                               \
173  vnet/l2/l2_rw.h                                \
174  vnet/l2/l2_xcrw.h                              \
175  vnet/l2/l2_classify.h                          \
176  vnet/l2/l2.api.h
177
178 ########################################
179 # Layer 2 protocol: SRP
180 ########################################
181 libvnet_la_SOURCES +=                           \
182  vnet/srp/format.c                              \
183  vnet/srp/interface.c                           \
184  vnet/srp/node.c                                \
185  vnet/srp/pg.c
186
187 nobase_include_HEADERS +=                       \
188  vnet/srp/packet.h                              \
189  vnet/srp/srp.h
190
191 ########################################
192 # Layer 2 protocol: PPP
193 ########################################
194 libvnet_la_SOURCES +=                           \
195   vnet/ppp/node.c                               \
196   vnet/ppp/pg.c                                 \
197   vnet/ppp/ppp.c
198
199 nobase_include_HEADERS +=                       \
200  vnet/ppp/error.def                             \
201  vnet/ppp/ppp.h                                 \
202  vnet/ppp/packet.h
203
204 ########################################
205 # Layer 2 protocol: HDLC
206 ########################################
207 libvnet_la_SOURCES +=                           \
208   vnet/hdlc/node.c                              \
209   vnet/hdlc/pg.c                                \
210   vnet/hdlc/hdlc.c
211
212 nobase_include_HEADERS +=                       \
213  vnet/hdlc/error.def                            \
214  vnet/hdlc/hdlc.h                               \
215  vnet/hdlc/packet.h
216
217 ########################################
218 # Layer 2 protocol: LLC
219 ########################################
220 libvnet_la_SOURCES +=                           \
221   vnet/llc/llc.c                                \
222   vnet/llc/node.c                               \
223   vnet/llc/pg.c
224
225 nobase_include_HEADERS +=                       \
226  vnet/llc/llc.h
227
228 ########################################
229 # Layer 2 protocol: SNAP
230 ########################################
231 libvnet_la_SOURCES +=                           \
232   vnet/snap/snap.c                              \
233   vnet/snap/node.c                              \
234   vnet/snap/pg.c
235
236 nobase_include_HEADERS +=                       \
237  vnet/snap/snap.h
238
239 ########################################
240 # Layer 2 / vxlan
241 ########################################
242 libvnet_la_SOURCES +=                           \
243   vnet/vxlan/vxlan.c                            \
244   vnet/vxlan/encap.c                            \
245   vnet/vxlan/decap.c                \
246   vnet/vxlan/vxlan_api.c        
247
248 nobase_include_HEADERS +=                       \
249   vnet/vxlan/vxlan.h                            \
250   vnet/vxlan/vxlan_packet.h                     \
251   vnet/vxlan/vxlan_error.def        \
252   vnet/vxlan/vxlan.api.h
253
254 ########################################
255 # Layer 2 / CDP
256 ########################################
257 libvnet_la_SOURCES +=                           \
258   vnet/cdp/cdp_input.c                          \
259   vnet/cdp/cdp_node.c                           \
260   vnet/cdp/cdp_periodic.c       
261
262 nobase_include_HEADERS +=                       \
263   vnet/cdp/cdp_protocol.h
264
265 ########################################
266 # Layer 2 / LLDP
267 ########################################
268 libvnet_la_SOURCES +=                           \
269   vnet/lldp/lldp_input.c                                \
270   vnet/lldp/lldp_node.c                         \
271   vnet/lldp/lldp_output.c       \
272   vnet/lldp/lldp_cli.c
273
274 nobase_include_HEADERS +=                       \
275   vnet/lldp/lldp_protocol.h
276
277 ########################################
278 # Layer 2/3 "classify"
279 ########################################
280 libvnet_la_SOURCES +=                           \
281   vnet/classify/vnet_classify.c                 \
282   vnet/classify/ip_classify.c                   \
283   vnet/classify/input_acl.c                     \
284   vnet/classify/policer_classify.c              \
285   vnet/classify/flow_classify.c                 \
286   vnet/classify/flow_classify_node.c            \
287   vnet/classify/vnet_classify.h
288
289 nobase_include_HEADERS +=                       \
290   vnet/classify/vnet_classify.h                 \
291   vnet/classify/input_acl.h                     \
292   vnet/classify/policer_classify.h              \
293   vnet/classify/flow_classify.h
294
295 ########################################
296 # Layer 3 protocols go here
297 ########################################
298
299 ########################################
300 # Layer 3 protocol: IP v4/v6
301 ########################################
302 libvnet_la_SOURCES +=                           \
303  vnet/ip/format.c                               \
304  vnet/ip/icmp4.c                                \
305  vnet/ip/icmp6.c                                \
306  vnet/ip/ip46_cli.c                             \
307  vnet/ip/ip4_format.c                           \
308  vnet/ip/ip4_forward.c                          \
309  vnet/ip/ip4_input.c                            \
310  vnet/ip/ip4_mtrie.c                            \
311  vnet/ip/ip4_pg.c                               \
312  vnet/ip/ip4_source_and_port_range_check.c      \
313  vnet/ip/ip4_source_check.c                     \
314  vnet/ip/ip6_format.c                           \
315  vnet/ip/ip6_forward.c                          \
316  vnet/ip/ip6_hop_by_hop.c                       \
317  vnet/ip/ip6_input.c                            \
318  vnet/ip/ip6_neighbor.c                         \
319  vnet/ip/ip6_pg.c                               \
320  vnet/ip/ip_api.c                               \
321  vnet/ip/ip_checksum.c                          \
322  vnet/ip/ip_frag.c                              \
323  vnet/ip/ip.h                                   \
324  vnet/ip/ip_init.c                              \
325  vnet/ip/ip_input_acl.c                         \
326  vnet/ip/lookup.c                               \
327  vnet/ip/ping.c                                 \
328  vnet/ip/punt.c                                 \
329  vnet/ip/udp_format.c                           \
330  vnet/ip/udp_init.c                             \
331  vnet/ip/udp_local.c                            \
332  vnet/ip/udp_pg.c
333
334 nobase_include_HEADERS +=                       \
335  vnet/ip/format.h                               \
336  vnet/ip/icmp46_packet.h                        \
337  vnet/ip/icmp4.h                                \
338  vnet/ip/icmp6.h                                \
339  vnet/ip/igmp_packet.h                          \
340  vnet/ip/ip.api.h                               \
341  vnet/ip/ip4_error.h                            \
342  vnet/ip/ip4.h                                  \
343  vnet/ip/ip4_mtrie.h                            \
344  vnet/ip/ip4_packet.h                           \
345  vnet/ip/ip6_error.h                            \
346  vnet/ip/ip6.h                                  \
347  vnet/ip/ip6_hop_by_hop.h                       \
348  vnet/ip/ip6_hop_by_hop_packet.h                \
349  vnet/ip/ip6_packet.h                           \
350  vnet/ip/ip6_neighbor.h                         \
351  vnet/ip/ip.h                                   \
352  vnet/ip/ip_packet.h                            \
353  vnet/ip/ip_source_and_port_range_check.h       \
354  vnet/ip/lookup.h                               \
355  vnet/ip/ports.def                              \
356  vnet/ip/protocols.def                          \
357  vnet/ip/punt_error.def                         \
358  vnet/ip/punt.h                                 \
359  vnet/ip/tcp_packet.h                           \
360  vnet/ip/udp_error.def                          \
361  vnet/ip/udp.h                                  \
362  vnet/ip/udp_packet.h
363
364 ########################################
365 # Bidirectional Forwarding Detection
366 ########################################
367
368 nobase_include_HEADERS +=                       \
369  vnet/bfd/bfd_protocol.h                        \
370  vnet/bfd/bfd_main.h                            \
371  vnet/bfd/bfd_api.h                            \
372  vnet/bfd/bfd_udp.h
373
374 libvnet_la_SOURCES +=                           \
375  vnet/bfd/bfd_api.h                            \
376  vnet/bfd/bfd_udp.c                             \
377  vnet/bfd/bfd_main.c                            \
378  vnet/bfd/bfd_protocol.c
379
380 ########################################
381 # Layer 3 protocol: IPSec
382 ########################################
383 if WITH_IPSEC
384 libvnet_la_SOURCES +=                           \
385  vnet/ipsec/ipsec.c                             \
386  vnet/ipsec/ipsec_cli.c                         \
387  vnet/ipsec/ipsec_format.c                      \
388  vnet/ipsec/ipsec_input.c                       \
389  vnet/ipsec/ipsec_if.c                          \
390  vnet/ipsec/ipsec_if_in.c                       \
391  vnet/ipsec/ipsec_if_out.c                      \
392  vnet/ipsec/esp_encrypt.c                       \
393  vnet/ipsec/esp_decrypt.c                       \
394  vnet/ipsec/ikev2.c                             \
395  vnet/ipsec/ikev2_crypto.c                      \
396  vnet/ipsec/ikev2_cli.c                         \
397  vnet/ipsec/ikev2_payload.c                     \
398  vnet/ipsec/ikev2_format.c
399 if WITH_DPDK_CRYPTO
400 libvnet_la_SOURCES +=                           \
401  vnet/devices/dpdk/ipsec/esp_encrypt.c          \
402  vnet/devices/dpdk/ipsec/esp_decrypt.c          \
403  vnet/devices/dpdk/ipsec/crypto_node.c          \
404  vnet/devices/dpdk/ipsec/cli.c                  \
405  vnet/devices/dpdk/ipsec/ipsec.c
406 endif
407 endif
408
409 libvnet_la_SOURCES +=                           \
410  vnet/ipsec/ipsec_output.c
411
412 nobase_include_HEADERS +=                       \
413  vnet/ipsec/ipsec.h                             \
414  vnet/ipsec/esp.h                               \
415  vnet/ipsec/ikev2.h                             \
416  vnet/ipsec/ikev2_priv.h
417 if WITH_DPDK_CRYPTO
418 nobase_include_HEADERS +=                       \
419  vnet/devices/dpdk/ipsec/ipsec.h                \
420  vnet/devices/dpdk/ipsec/esp.h
421 endif
422
423 ########################################
424 # Layer 3 protocol: osi
425 ########################################
426 libvnet_la_SOURCES +=                           \
427  vnet/osi/node.c                                \
428  vnet/osi/osi.c                                 \
429  vnet/osi/pg.c
430
431 nobase_include_HEADERS +=                       \
432  vnet/osi/osi.h
433
434 ########################################
435 # Layer 3 protocol: MAP
436 ########################################
437 libvnet_la_SOURCES +=                           \
438  vnet/map/map.c                                 \
439  vnet/map/map_dpo.c                             \
440  vnet/map/ip4_map.c                             \
441  vnet/map/ip6_map.c                             \
442  vnet/map/ip4_map_t.c                           \
443  vnet/map/ip6_map_t.c                           \
444  vnet/map/map_api.c
445
446 nobase_include_HEADERS +=                       \
447  vnet/map/map.h                                 \
448  vnet/map/map_dpo.h                             \
449  vnet/map/map.api.h
450
451 if ENABLE_TESTS
452 TESTS += test_map
453 test_map_SOURCES =                             \
454  vnet/map/test.c
455 test_map_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
456
457 test_map_LDADD = libvnet.la -lvppinfra -lvlib   \
458   -lpthread -lvlibmemory -lvlibapi -lvlib_unix  \
459   -ldl -lsvm -lrt
460
461 test_map_LDFLAGS = -static
462 endif
463
464
465 ########################################
466 # Tunnel protocol: gre
467 ########################################
468 libvnet_la_SOURCES +=                           \
469  vnet/gre/gre.c                                 \
470  vnet/gre/node.c                                \
471  vnet/gre/interface.c                           \
472  vnet/gre/pg.c
473  
474 nobase_include_HEADERS +=                       \
475  vnet/gre/gre.h                                 \
476  vnet/gre/packet.h                              \
477  vnet/gre/error.def
478
479 ########################################
480 # Tunnel protocol: l2tpv3
481 ########################################
482 libvnet_la_SOURCES +=                           \
483  vnet/l2tp/l2tp.c                               \
484  vnet/l2tp/encap.c                              \
485  vnet/l2tp/decap.c                              \
486  vnet/l2tp/pg.c
487  
488 nobase_include_HEADERS +=                       \
489  vnet/l2tp/l2tp.h                               \
490  vnet/l2tp/packet.h                             
491
492 ########################################
493 # Tunnel protocol: gre+mpls
494 ########################################
495 libvnet_la_SOURCES +=                           \
496  vnet/mpls/mpls.c                               \
497  vnet/mpls/mpls_lookup.c                        \
498  vnet/mpls/mpls_output.c                        \
499  vnet/mpls/mpls_features.c                      \
500  vnet/mpls/node.c                               \
501  vnet/mpls/interface.c                          \
502  vnet/mpls/mpls_tunnel.c                        \
503  vnet/mpls/pg.c
504  
505 nobase_include_HEADERS +=                       \
506  vnet/mpls/mpls.h                               \
507  vnet/mpls/mpls_types.h                         \
508  vnet/mpls/mpls_tunnel.h                        \
509  vnet/mpls/packet.h                             \
510  vnet/mpls/error.def
511
512
513 ########################################
514 # Tunnel protocol: vxlan-gpe
515 ########################################
516
517 libvnet_la_SOURCES +=                           \
518  vnet/vxlan-gpe/vxlan_gpe.c                     \
519  vnet/vxlan-gpe/encap.c                         \
520  vnet/vxlan-gpe/decap.c                         \
521  vnet/vxlan-gpe/vxlan_gpe_api.c
522
523 nobase_include_HEADERS +=                       \
524  vnet/vxlan-gpe/vxlan_gpe.h                     \
525  vnet/vxlan-gpe/vxlan_gpe_packet.h              \
526  vnet/vxlan-gpe/vxlan_gpe_error.def     \
527  vnet/vxlan-gpe/vxlan_gpe.api.h
528
529 ########################################
530 # Tunnel protocol: ipsec+gre
531 ########################################
532 libvnet_la_SOURCES +=                           \
533  vnet/ipsec-gre/ipsec_gre.c                     \
534  vnet/ipsec-gre/node.c                          \
535  vnet/ipsec-gre/interface.c
536
537 nobase_include_HEADERS +=                       \
538  vnet/ipsec-gre/ipsec_gre.h                     \
539  vnet/ipsec-gre/error.def
540
541 ########################################
542 # LISP control plane: lisp-cp
543 ########################################
544
545 libvnet_la_SOURCES +=                           \
546  vnet/lisp-cp/lisp_types.c                      \
547  vnet/lisp-cp/lisp_cp_dpo.c                     \
548  vnet/lisp-cp/control.c                         \
549  vnet/lisp-cp/gid_dictionary.c                  \
550  vnet/lisp-cp/lisp_msg_serdes.c                 \
551  vnet/lisp-cp/packets.c                 
552
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
561
562 if ENABLE_TESTS
563 LDS = -lvppinfra -l:libvlib.a $(dpdk_libs) -l:libvlibmemory.a \
564         -l:libvlibapi.a -l:libsvm.a -lpthread -ldl -lrt -lm -l:libvlib_unix.a
565
566 TESTS += test_cp_serdes test_lisp_types
567
568 test_cp_serdes_SOURCES =                        \
569  test/lisp-cp/test_cp_serdes.c          \
570  vnet/lisp-cp/lisp_msg_serdes.c                 \
571  vnet/lisp-cp/lisp_types.c                      \
572  vnet/lisp-cp/packets.c                         \
573  vnet/ip/ip_checksum.c
574
575 test_lisp_types_SOURCES =                       \
576  test/lisp-cp/test_lisp_types.c         \
577  vnet/lisp-cp/lisp_types.c
578
579 test_cp_serdes_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
580 test_lisp_types_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
581
582 test_cp_serdes_LDADD = libvnet.la $(LDS)
583 test_lisp_types_LDADD = libvnet.la $(LDS)
584
585 test_cp_serdes_LDFLAGS = -static
586 test_lisp_types_LDFLAGS = -static
587 endif
588
589 ########################################
590 # Tunnel protocol: lisp-gpe
591 ########################################
592
593 libvnet_la_SOURCES +=                           \
594  vnet/lisp-gpe/lisp_gpe.c                       \
595  vnet/lisp-gpe/lisp_gpe_sub_interface.c         \
596  vnet/lisp-gpe/lisp_gpe_adjacency.c             \
597  vnet/lisp-gpe/lisp_gpe_tunnel.c                \
598  vnet/lisp-gpe/lisp_gpe_fwd_entry.c             \
599  vnet/lisp-gpe/lisp_gpe_tenant.c                \
600  vnet/lisp-gpe/interface.c                      \
601  vnet/lisp-gpe/decap.c                          
602
603 nobase_include_HEADERS +=                       \
604  vnet/lisp-gpe/lisp_gpe.h                       \
605  vnet/lisp-gpe/lisp_gpe_fwd_entry.h             \
606  vnet/lisp-gpe/lisp_gpe_tenant.h                \
607  vnet/lisp-gpe/lisp_gpe_packet.h                \
608  vnet/lisp-gpe/lisp_gpe_error.def               
609
610 if ENABLE_TESTS
611 TESTS += test_test
612
613 test_test_SOURCES = test/lisp-gpe/test.c
614
615 test_test_CPPFLAGS = $(AM_CPPFLAGS) -DCLIB_DEBUG
616
617 test_test_LDADD = $(LIBOBJS)
618
619 noinst_PROGRAMS += $(TESTS)
620 check_PROGRAMS = $(TESTS)
621 endif
622
623 ########################################
624 # DHCP client
625 ########################################
626 libvnet_la_SOURCES +=                           \
627  vnet/dhcp/client.c                             \
628  vnet/dhcp/client.h     
629
630 nobase_include_HEADERS +=                       \
631  vnet/dhcp/client.h     
632
633 ########################################
634 # DHCP proxy
635 ########################################
636 libvnet_la_SOURCES +=                           \
637  vnet/dhcp/proxy_node.c                         \
638  vnet/dhcp/proxy.h
639  
640 nobase_include_HEADERS +=                       \
641  vnet/dhcp/packet.h                             \
642  vnet/dhcp/proxy.h                              \
643  vnet/dhcp/proxy_error.def
644
645 ########################################
646 # ipv6 segment routing
647 ########################################
648
649 if WITH_IPV6SR
650 libvnet_la_SOURCES +=                           \
651  vnet/sr/sr.c                                   \
652  vnet/sr/sr_replicate.c
653 endif
654  
655 nobase_include_HEADERS +=                       \
656  vnet/sr/sr_packet.h                            \
657  vnet/sr/sr_error.def                           \
658  vnet/sr/sr.h
659
660 ########################################
661 # DHCPv6 proxy
662 ########################################
663 libvnet_la_SOURCES +=                           \
664  vnet/dhcpv6/proxy_node.c
665  
666 nobase_include_HEADERS +=                       \
667  vnet/dhcpv6/packet.h                           \
668  vnet/dhcpv6/proxy.h                            \
669  vnet/dhcpv6/proxy_error.def
670
671 ########################################
672 # IPFIX / netflow v10 
673 ########################################
674 libvnet_la_SOURCES +=                           \
675  vnet/flow/flow_report.c
676
677 nobase_include_HEADERS +=                       \
678  vnet/flow/flow_report.h                        \
679  vnet/flow/ipfix_info_elements.h                \
680  vnet/flow/ipfix_packet.h
681
682 ########################################
683 # IPFIX classify code
684 ########################################
685
686 libvnet_la_SOURCES +=                           \
687   vnet/flow/flow_report_classify.c
688
689 nobase_include_HEADERS +=                       \
690   vnet/flow/flow_report_classify.h
691
692 ########################################
693 # lawful intercept
694 ########################################
695
696 libvnet_la_SOURCES +=                           \
697   vnet/lawful-intercept/lawful_intercept.c      \
698   vnet/lawful-intercept/node.c
699
700 nobase_include_HEADERS +=                       \
701   vnet/lawful-intercept/lawful_intercept.h
702
703 ########################################
704 # SPAN (port mirroring)
705 ########################################
706
707 libvnet_la_SOURCES +=                           \
708   vnet/span/span_api.c  \
709   vnet/span/span.c          \
710   vnet/span/node.c
711
712 nobase_include_HEADERS +=                       \
713   vnet/span/span.api.h  \
714   vnet/span/span.h
715
716 ########################################
717 # Packet generator
718 ########################################
719
720 libvnet_la_SOURCES +=                           \
721   vnet/pg/cli.c                                 \
722   vnet/pg/edit.c                                \
723   vnet/pg/init.c                                \
724   vnet/pg/input.c                               \
725   vnet/pg/output.c                              \
726   vnet/pg/stream.c
727
728 nobase_include_HEADERS +=                       \
729   vnet/pg/pg.h                                  \
730   vnet/pg/edit.h
731
732 ########################################
733 # DPDK
734 ########################################
735 if WITH_DPDK
736 libvnet_la_SOURCES +=                           \
737   vnet/devices/dpdk/dpdk_priv.h         \
738   vnet/devices/dpdk/device.c            \
739   vnet/devices/dpdk/format.c            \
740   vnet/devices/dpdk/init.c                      \
741   vnet/devices/dpdk/node.c                      \
742   vnet/devices/dpdk/hqos.c                      \
743   vnet/devices/dpdk/cli.c
744
745 nobase_include_HEADERS +=                       \
746   vnet/devices/dpdk/dpdk.h
747 else
748 libvnet_la_SOURCES +=                           \
749   vnet/devices/nic/ixge.c                       \
750   vnet/devices/nic/ixge.h                       \
751   vnet/devices/nic/sfp.c                        \
752   vnet/devices/nic/sfp.h
753 endif
754
755 ########################################
756 # virtio
757 ########################################
758
759 libvnet_la_SOURCES +=       \
760   vnet/devices/virtio/vhost-user.c      \
761   vnet/devices/virtio/vhost_user_api.c
762
763 nobase_include_HEADERS +=     \
764   vnet/devices/virtio/vhost-user.h      \
765   vnet/devices/virtio/vhost_user.api.h
766
767 ########################################
768 # ssvm ethernet
769 ########################################
770 libvnet_la_SOURCES +=                           \
771   vnet/devices/ssvm/ssvm_eth.c                  \
772   vnet/devices/ssvm/node.c
773
774 nobase_include_HEADERS +=                       \
775   vnet/devices/ssvm/ssvm_eth.h
776
777 ########################################
778 # Linux packet interface
779 ########################################
780
781 libvnet_la_SOURCES +=                           \
782   vnet/devices/af_packet/af_packet.c            \
783   vnet/devices/af_packet/device.c               \
784   vnet/devices/af_packet/node.c                 \
785   vnet/devices/af_packet/cli.c                  \
786   vnet/devices/af_packet/af_packet_api.c
787
788 nobase_include_HEADERS +=                               \
789   vnet/devices/af_packet/af_packet.h    \
790   vnet/devices/af_packet/af_packet.api.h
791
792 ########################################
793 # NETMAP interface
794 ########################################
795
796 libvnet_la_SOURCES +=                           \
797   vnet/devices/netmap/netmap.c                  \
798   vnet/devices/netmap/device.c                  \
799   vnet/devices/netmap/node.c                    \
800   vnet/devices/netmap/cli.c                             \
801   vnet/devices/netmap/netmap_api.c
802
803 nobase_include_HEADERS +=                       \
804   vnet/devices/netmap/netmap.h          \
805   vnet/devices/netmap/netmap.api.h
806
807 ########################################
808 # Driver feature graph arc support
809 ########################################
810
811 libvnet_la_SOURCES +=                           \
812   vnet/feature/feature.c                        \
813   vnet/feature/registration.c
814
815 nobase_include_HEADERS +=                       \
816   vnet/feature/feature.h
817
818 ########################################
819 # Unix kernel related
820 ########################################
821
822 # FIXME: vnet/unix/hgshm.c 
823
824 libvnet_la_SOURCES +=                           \
825   vnet/unix/gdb_funcs.c                         \
826   vnet/unix/pcap.c                              \
827   vnet/unix/tap_api.c                           \
828   vnet/unix/tapcli.c                            \
829   vnet/unix/tuntap.c
830
831 nobase_include_HEADERS +=                       \
832   vnet/unix/pcap.h                              \
833   vnet/unix/tuntap.h                            \
834   vnet/unix/tap.api.h                           \
835   vnet/unix/tapcli.h
836
837 ########################################
838 # FIB
839 ########################################
840
841 libvnet_la_SOURCES +=                           \
842   vnet/fib/fib.c                                \
843   vnet/fib/fib_test.c                           \
844   vnet/fib/ip4_fib.c                            \
845   vnet/fib/ip6_fib.c                            \
846   vnet/fib/mpls_fib.c                           \
847   vnet/fib/fib_table.c                          \
848   vnet/fib/fib_walk.c                           \
849   vnet/fib/fib_types.c                          \
850   vnet/fib/fib_node.c                           \
851   vnet/fib/fib_node_list.c                      \
852   vnet/fib/fib_entry.c                          \
853   vnet/fib/fib_entry_src.c                      \
854   vnet/fib/fib_entry_src_rr.c                   \
855   vnet/fib/fib_entry_src_interface.c            \
856   vnet/fib/fib_entry_src_default_route.c        \
857   vnet/fib/fib_entry_src_special.c              \
858   vnet/fib/fib_entry_src_api.c                  \
859   vnet/fib/fib_entry_src_adj.c                  \
860   vnet/fib/fib_entry_src_mpls.c                 \
861   vnet/fib/fib_entry_src_lisp.c                 \
862   vnet/fib/fib_entry_cover.c                    \
863   vnet/fib/fib_entry_delegate.c                 \
864   vnet/fib/fib_path_list.c                      \
865   vnet/fib/fib_path.c                           \
866   vnet/fib/fib_path_ext.c                       \
867   vnet/fib/fib_urpf_list.c                      \
868   vnet/fib/fib_attached_export.c
869
870 nobase_include_HEADERS +=                       \
871   vnet/fib/fib.h                                \
872   vnet/fib/fib_api.h                            \
873   vnet/fib/ip4_fib.h                            \
874   vnet/fib/ip6_fib.h                            \
875   vnet/fib/fib_types.h                          \
876   vnet/fib/fib_table.h                          \
877   vnet/fib/fib_node.h                           \
878   vnet/fib/fib_node_list.h                      \
879   vnet/fib/fib_entry.h                          \
880   vnet/fib/fib_entry_delegate.h
881
882 ########################################
883 # ADJ
884 ########################################
885
886 libvnet_la_SOURCES +=                           \
887   vnet/adj/adj_nbr.c                            \
888   vnet/adj/adj_rewrite.c                        \
889   vnet/adj/adj_glean.c                          \
890   vnet/adj/adj_midchain.c                       \
891   vnet/adj/adj_l2.c                             \
892   vnet/adj/adj.c                            
893
894 nobase_include_HEADERS +=                       \
895   vnet/adj/adj.h                                \
896   vnet/adj/adj_types.h                          \
897   vnet/adj/adj_rewrite.h                        \
898   vnet/adj/adj_glean.h                          \
899   vnet/adj/adj_nbr.h                            
900
901 ########################################
902 # Data-Plane Objects
903 ########################################
904
905 libvnet_la_SOURCES +=                           \
906   vnet/dpo/dpo.c                                \
907   vnet/dpo/drop_dpo.c                           \
908   vnet/dpo/ip_null_dpo.c                        \
909   vnet/dpo/punt_dpo.c                           \
910   vnet/dpo/receive_dpo.c                        \
911   vnet/dpo/load_balance.c                       \
912   vnet/dpo/load_balance_map.c                   \
913   vnet/dpo/lookup_dpo.c                         \
914   vnet/dpo/classify_dpo.c                       \
915   vnet/dpo/mpls_label_dpo.c
916
917 nobase_include_HEADERS +=                       \
918   vnet/dpo/load_balance.h                       \
919   vnet/dpo/drop_dpo.h                           \
920   vnet/dpo/lookup_dpo.h                         \
921   vnet/dpo/punt_dpo.h                           \
922   vnet/dpo/classify_dpo.h                       \
923   vnet/dpo/receive_dpo.h                        \
924   vnet/dpo/ip_null_dpo.h                        \
925   vnet/dpo/dpo.h
926
927 ########################################
928 # Plugin client library
929 ########################################
930
931 libvnetplugin_la_SOURCES +=                    \
932   vnet/plugin/p1.c
933
934 nobase_include_HEADERS +=                      \
935   vnet/plugin/plugin.h
936
937 lib_LTLIBRARIES = libvnet.la libvnetplugin.la
938
939 pcap2pg_SOURCES =                               \
940   vnet/unix/pcap2pg.c                           \
941   vnet/unix/pcap.h
942
943 pcap2pg_LDFLAGS = -static
944 pcap2pg_LDADD = libvnet.la -l:libvppinfra.a -lpthread -lm -ldl
945
946 noinst_PROGRAMS += pcap2pg
947
948 # Set the suffix list
949 SUFFIXES = .api.h .api .api.json
950
951 # install the API definition, so we can produce java bindings, etc.
952
953 apidir = $(prefix)/vnet
954
955 api_DATA =                                      \
956  vnet/devices/af_packet/af_packet.api.json      \
957  vnet/devices/netmap/netmap.api.json            \
958  vnet/devices/virtio/vhost_user.api.json        \
959  vnet/interface.api.json                        \
960  vnet/ip/ip.api.json                            \
961  vnet/l2/l2.api.json                            \
962  vnet/map/map.api.json                          \
963  vnet/span/span.api.json                        \
964  vnet/unix/tap.api.json                         \
965  vnet/vxlan/vxlan.api.json                      \
966  vnet/vxlan-gpe/vxlan_gpe.api.json
967  
968 # The actual %.api.h rule is in .../build-data/packages/suffix-rules.mk
969 # and requires a symbolic link at the top of the vnet source tree
970
971 include $(top_srcdir)/suffix-rules.mk