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