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