API refactoring : vxlan
[vpp.git] / vnet / Makefile.am
index d806785..60fcbf5 100644 (file)
@@ -15,6 +15,22 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
 
 AM_CFLAGS = -Wall -Werror @DPDK@ @DPDK_CRYPTO@ @IPSEC@ @IPV6SR@
 
+BUILT_SOURCES =                                \
+ vnet/interface.api.h                          \
+ vnet/interface.api.json                       \
+ vnet/ip/ip.api.h                              \
+ vnet/ip/ip.api.json                           \
+ vnet/l2/l2.api.h                              \
+ vnet/l2/l2.api.json                           \
+ vnet/map/map.api.h                            \
+ vnet/map/map.api.json                         \
+ vnet/span/span.api.h                          \
+ vnet/span/span.api.json                       \
+ vnet/unix/tap.api.h                           \
+ vnet/unix/tap.api.json             \
+ vnet/vxlan/vxlan.api.h                                \
+ vnet/vxlan/vxlan.api.json
+
 libvnet_la_SOURCES =
 libvnetplugin_la_SOURCES =
 nobase_include_HEADERS =
@@ -34,6 +50,7 @@ libvnet_la_SOURCES +=                                 \
   vnet/devices/devices.c                               \
   vnet/handoff.c                                       \
   vnet/interface.c                                     \
+  vnet/interface_api.c                                 \
   vnet/interface_cli.c                                 \
   vnet/interface_format.c                              \
   vnet/interface_output.c                              \
@@ -49,12 +66,15 @@ nobase_include_HEADERS +=                   \
   vnet/global_funcs.h                          \
   vnet/handoff.h                               \
   vnet/interface.h                             \
+  vnet/interface.api.h                         \
   vnet/interface_funcs.h                       \
   vnet/l3_types.h                              \
   vnet/pipeline.h                              \
   vnet/replication.h                           \
   vnet/rewrite.h                               \
-  vnet/vnet.h
+  vnet/vnet.h                                  \
+  vnet/vnet_all_api_h.h                                \
+  vnet/vnet_msg_enum.h
 
 ########################################
 # Policer infra
@@ -110,6 +130,7 @@ nobase_include_HEADERS +=                   \
 ########################################
 libvnet_la_SOURCES +=                          \
  vnet/l2/feat_bitmap.c                         \
+ vnet/l2/l2_api.c                                      \
  vnet/l2/l2_bd.c                               \
  vnet/l2/l2_bvi.c                              \
  vnet/l2/l2_input_classify.c                   \
@@ -143,7 +164,8 @@ nobase_include_HEADERS +=                   \
  vnet/l2/l2_fib.h                              \
  vnet/l2/l2_rw.h                                \
  vnet/l2/l2_xcrw.h                             \
- vnet/l2/l2_classify.h
+ vnet/l2/l2_classify.h                         \
+ vnet/l2/l2.api.h
 
 ########################################
 # Layer 2 protocol: SRP
@@ -212,12 +234,14 @@ nobase_include_HEADERS +=                 \
 libvnet_la_SOURCES +=                          \
   vnet/vxlan/vxlan.c                           \
   vnet/vxlan/encap.c                           \
-  vnet/vxlan/decap.c   
+  vnet/vxlan/decap.c                \
+  vnet/vxlan/vxlan_api.c       
 
 nobase_include_HEADERS +=                      \
   vnet/vxlan/vxlan.h                           \
   vnet/vxlan/vxlan_packet.h                    \
-  vnet/vxlan/vxlan_error.def
+  vnet/vxlan/vxlan_error.def        \
+  vnet/vxlan/vxlan.api.h
 
 ########################################
 # Layer 2 / CDP
@@ -285,6 +309,7 @@ libvnet_la_SOURCES +=                               \
  vnet/ip/ip6_input.c                           \
  vnet/ip/ip6_neighbor.c                                \
  vnet/ip/ip6_pg.c                              \
+ vnet/ip/ip_api.c                              \
  vnet/ip/ip_checksum.c                         \
  vnet/ip/ip_frag.c                             \
  vnet/ip/ip.h                                  \
@@ -304,6 +329,7 @@ nobase_include_HEADERS +=                   \
  vnet/ip/icmp4.h                               \
  vnet/ip/icmp6.h                               \
  vnet/ip/igmp_packet.h                         \
+ vnet/ip/ip.api.h                              \
  vnet/ip/ip4_error.h                           \
  vnet/ip/ip4.h                                 \
  vnet/ip/ip4_mtrie.h                           \
@@ -313,6 +339,7 @@ nobase_include_HEADERS +=                   \
  vnet/ip/ip6_hop_by_hop.h                      \
  vnet/ip/ip6_hop_by_hop_packet.h               \
  vnet/ip/ip6_packet.h                          \
+ vnet/ip/ip6_neighbor.h                                \
  vnet/ip/ip.h                                  \
  vnet/ip/ip_packet.h                           \
  vnet/ip/ip_source_and_port_range_check.h      \
@@ -326,6 +353,22 @@ nobase_include_HEADERS +=                  \
  vnet/ip/udp.h                                 \
  vnet/ip/udp_packet.h
 
+########################################
+# Bidirectional Forwarding Detection
+########################################
+
+nobase_include_HEADERS +=                       \
+ vnet/bfd/bfd_protocol.h                       \
+ vnet/bfd/bfd_main.h                            \
+ vnet/bfd/bfd_api.h                            \
+ vnet/bfd/bfd_udp.h
+
+libvnet_la_SOURCES +=                          \
+ vnet/bfd/bfd_api.h                            \
+ vnet/bfd/bfd_udp.c                             \
+ vnet/bfd/bfd_main.c                            \
+ vnet/bfd/bfd_protocol.c
+
 ########################################
 # Layer 3 protocol: IPSec
 ########################################
@@ -383,17 +426,19 @@ nobase_include_HEADERS +=                 \
 ########################################
 # Layer 3 protocol: MAP
 ########################################
-libvnet_la_SOURCES +=                           \
- vnet/map/map.c                                 \
- vnet/map/map_dpo.c                             \
- vnet/map/ip4_map.c                             \
- vnet/map/ip6_map.c                             \
- vnet/map/ip4_map_t.c                           \
- vnet/map/ip6_map_t.c
+libvnet_la_SOURCES +=                          \
+ vnet/map/map.c                                        \
+ vnet/map/map_dpo.c                            \
+ vnet/map/ip4_map.c                            \
+ vnet/map/ip6_map.c                            \
+ vnet/map/ip4_map_t.c                          \
+ vnet/map/ip6_map_t.c                          \
+ vnet/map/map_api.c
 
-nobase_include_HEADERS +=                       \
- vnet/map/map.h                                 \
- vnet/map/map_dpo.h
+nobase_include_HEADERS +=                      \
+ vnet/map/map.h                                        \
+ vnet/map/map_dpo.h                            \
+ vnet/map/map.api.h
 
 if ENABLE_TESTS
 TESTS += test_map
@@ -446,12 +491,13 @@ libvnet_la_SOURCES +=                             \
  vnet/mpls/mpls_features.c                     \
  vnet/mpls/node.c                              \
  vnet/mpls/interface.c                         \
- vnet/mpls/policy_encap.c                      \
+ vnet/mpls/mpls_tunnel.c                       \
  vnet/mpls/pg.c
  
 nobase_include_HEADERS +=                      \
  vnet/mpls/mpls.h                              \
  vnet/mpls/mpls_types.h                                \
+ vnet/mpls/mpls_tunnel.h                       \
  vnet/mpls/packet.h                            \
  vnet/mpls/error.def
 
@@ -649,10 +695,12 @@ nobase_include_HEADERS +=                         \
 ########################################
 
 libvnet_la_SOURCES +=                          \
-  vnet/span/span.c     \
+  vnet/span/span_api.c  \
+  vnet/span/span.c         \
   vnet/span/node.c
 
 nobase_include_HEADERS +=                      \
+  vnet/span/span.api.h  \
   vnet/span/span.h
 
 ########################################
@@ -761,12 +809,14 @@ nobase_include_HEADERS +=                 \
 libvnet_la_SOURCES +=                          \
   vnet/unix/gdb_funcs.c                                \
   vnet/unix/pcap.c                             \
+  vnet/unix/tap_api.c                          \
   vnet/unix/tapcli.c                           \
   vnet/unix/tuntap.c
 
 nobase_include_HEADERS +=                      \
   vnet/unix/pcap.h                             \
   vnet/unix/tuntap.h                           \
+  vnet/unix/tap.api.h                          \
   vnet/unix/tapcli.h
 
 ########################################
@@ -795,6 +845,7 @@ libvnet_la_SOURCES +=                               \
   vnet/fib/fib_entry_src_mpls.c                 \
   vnet/fib/fib_entry_src_lisp.c                 \
   vnet/fib/fib_entry_cover.c                    \
+  vnet/fib/fib_entry_delegate.c                 \
   vnet/fib/fib_path_list.c                      \
   vnet/fib/fib_path.c                          \
   vnet/fib/fib_path_ext.c                      \
@@ -803,13 +854,15 @@ libvnet_la_SOURCES +=                             \
 
 nobase_include_HEADERS +=                      \
   vnet/fib/fib.h                               \
+  vnet/fib/fib_api.h                           \
   vnet/fib/ip4_fib.h                           \
   vnet/fib/ip6_fib.h                           \
   vnet/fib/fib_types.h                         \
   vnet/fib/fib_table.h                         \
   vnet/fib/fib_node.h                          \
   vnet/fib/fib_node_list.h                     \
-  vnet/fib/fib_entry.h                         
+  vnet/fib/fib_entry.h                         \
+  vnet/fib/fib_entry_delegate.h
 
 ########################################
 # ADJ
@@ -876,3 +929,24 @@ pcap2pg_LDFLAGS = -static
 pcap2pg_LDADD = libvnet.la -l:libvppinfra.a -lpthread -lm -ldl
 
 noinst_PROGRAMS += pcap2pg
+
+# Set the suffix list
+SUFFIXES = .api.h .api .api.json
+
+# install the API definition, so we can produce java bindings, etc.
+
+apidir = $(prefix)/vnet
+
+api_DATA =                                     \
+ vnet/interface.api.json                       \
+ vnet/ip/ip.api.json                           \
+ vnet/l2/l2.api.json                           \
+ vnet/map/map.api.json                         \
+ vnet/span/span.api.json                       \
+ vnet/unix/tap.api.json             \
+ vnet/vxlan/vxlan.api.json
+
+# The actual %.api.h rule is in .../build-data/packages/suffix-rules.mk
+# and requires a symbolic link at the top of the vnet source tree
+
+include $(top_srcdir)/suffix-rules.mk