# Copyright (c) 2015 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


########################################
# iOAM Proof of Transit
########################################

IOAM_POT_SRC =					\
	ioam/lib-pot/pot_util.c			\
	ioam/encap/ip6_ioam_pot.c		\
	ioam/lib-pot/pot_util.h			\
	ioam/lib-pot/math64.h			\
	ioam/lib-pot/pot_api.c

IOAM_POT_NOINST_HDR =				\
  ioam/lib-pot/pot_all_api_h.h			\
  ioam/lib-pot/pot_msg_enum.h			\
  ioam/lib-pot/pot.api.h			\
  ioam/lib-pot/pot_util.h			\
  ioam/lib-pot/math64.h

IOAM_POT_API = ioam/lib-pot/pot.api

ioam_pot_test_plugin_la_SOURCES =		\
	ioam/lib-pot/pot_test.c			\
	ioam/lib-pot/pot_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_pot_test_plugin.la

########################################
# iOAM trace export for IPv6
########################################

IOAM_EXPORT_SRC =		  \
ioam/export/ioam_export.c         \
ioam/export/node.c                \
ioam/export/ioam_export.api.h     \
ioam/export/ioam_export_thread.c

IOAM_EXPORT_NOINST_HDR =                \
  ioam/export/ioam_export_all_api_h.h   \
  ioam/export/ioam_export_msg_enum.h    \
  ioam/export/ioam_export.api.h

IOAM_EXPORT_API = ioam/export/ioam_export.api

ioam_export_test_plugin_la_SOURCES =  \
  ioam/export/ioam_export_test.c      \
  ioam/export/ioam_export_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_export_test_plugin.la

########################################
# iOAM Trace
########################################
IOAM_TRACE_SRC =				\
	ioam/lib-trace/trace_util.c		\
	ioam/encap/ip6_ioam_trace.c		\
	ioam/lib-trace/trace_api.c

IOAM_TRACE_NOINST_HDR =                 \
  ioam/lib-trace/trace_all_api_h.h	\
  ioam/lib-trace/trace_msg_enum.h	\
  ioam/lib-trace/trace.api.h		\
  ioam/lib-trace/trace_util.h		\
  ioam/encap/ip6_ioam_trace.h		\
  ioam/lib-trace/trace_config.h

IOAM_TRACE_API = ioam/lib-trace/trace.api

ioam_trace_test_plugin_la_SOURCES =		\
	ioam/lib-trace/trace_test.c		\
	ioam/lib-trace/trace_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_trace_test_plugin.la

nobase_include_HEADERS +=                       \
       ioam/lib-trace/trace_util.h		\
       ioam/export-common/ioam_export.h

########################################
# VxLAN-GPE
########################################
IOAM_VXLAN_GPE_SRC =					\
	ioam/lib-vxlan-gpe/ioam_encap.c			\
	ioam/lib-vxlan-gpe/ioam_decap.c			\
	ioam/lib-vxlan-gpe/ioam_transit.c		\
	ioam/lib-vxlan-gpe/ioam_pop.c			\
	ioam/lib-vxlan-gpe/vxlan_gpe_api.c		\
	ioam/lib-vxlan-gpe/vxlan_gpe_ioam_trace.c	\
	ioam/lib-vxlan-gpe/vxlan_gpe_ioam.c		\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c	\
	ioam/export-vxlan-gpe/vxlan_gpe_node.c		\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_thread.c

IOAM_VXLAN_GPE_NOINST_HDR =                       		\
  ioam/lib-vxlan-gpe/vxlan_gpe_all_api_h.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_msg_enum.h			\
  ioam/lib-vxlan-gpe/ioam_vxlan_gpe.api.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam_util.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam_packet.h                    \
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam.h				\
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_all_api_h.h       \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_msg_enum.h        \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h

IOAM_VXLAN_GPE_API  = ioam/lib-vxlan-gpe/ioam_vxlan_gpe.api
IOAM_VXLAN_GPE_API += ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api

ioam_vxlan_gpe_test_plugin_la_SOURCES =		\
	ioam/lib-vxlan-gpe/vxlan_gpe_test.c			\
	ioam/lib-vxlan-gpe/vxlan_gpe_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_vxlan_gpe_test_plugin.la

vxlan_gpe_ioam_export_test_plugin_la_SOURCES =          \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_test.c      \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_plugin.api.h

vppapitestplugins_LTLIBRARIES += vxlan_gpe_ioam_export_test_plugin.la

########################################
# iOAM E2E
########################################

IOAM_E2E_SRC =                			\
	ioam/encap/ip6_ioam_e2e.c               \
	ioam/encap/ip6_ioam_seqno.c		\
	ioam/lib-e2e/ioam_seqno_lib.c

IOAM_E2E_NOINST_HDR =                    \
	ioam/encap/ip6_ioam_e2e.h        \
	ioam/encap/ip6_ioam_seqno.h	 \
	ioam/lib-e2e/ioam_seqno_lib.h

########################################
# ipfix collector
########################################

IPFIX_COLLECTOR_SRC =				\
	ioam/ipfixcollector/ipfixcollector.c	\
	ioam/ipfixcollector/node.c		\
	ioam/ipfixcollector/ipfixcollector.h

########################################
# iOAM Analyse
########################################

IOAM_ANALYSE_SRC = 				\
	ioam/analyse/ip6/ip6_ioam_analyse.c	\
	ioam/analyse/ip6/node.c			\
	ioam/analyse/ip6/ip6_ioam_analyse.h	\
	ioam/analyse/ioam_summary_export.c	\
	ioam/analyse/ioam_analyse.h		\
	ioam/analyse/ioam_summary_export.h

########################################
# iOAM record cache and rewrite
########################################

IOAM_IP6_MANYCAST_SRC =        \
ioam/ip6/ioam_cache.c                     \
ioam/ip6/ioam_cache_node.c                \
ioam/ip6/ioam_cache_tunnel_select_node.c  \
ioam/ip6/ioam_cache.api.h

IOAM_IP6_MANYCAST_API = ioam/ip6/ioam_cache.api

IOAM_IP6_MANYCAST_NOINST_HDR =      \
  ioam/ip6/ioam_cache_all_api_h.h   \
  ioam/ip6/ioam_cache_msg_enum.h    \
  ioam/ip6/ioam_cache.api.h

# udp ping
########################################

UDP_PING_SRC = 					        \
	ioam/udp-ping/udp_ping_node.c	    \
	ioam/udp-ping/udp_ping_util.c		\
	ioam/udp-ping/udp_ping_export.c		\
	ioam/udp-ping/udp_ping_api.c

UDP_PING_NOINST_HDR = 				    \
	ioam/udp-ping/udp_ping_packet.h		\
	ioam/udp-ping/udp_ping.h		    \
	ioam/udp-ping/udp_ping_util.h		\
	ioam/udp-ping/udp_ping_all_api_h.h	\
	ioam/udp-ping/udp_ping_msg_enum.h	\
	ioam/udp-ping/udp_ping.api.h

UDP_PING_API = ioam/udp-ping/udp_ping.api

udp_ping_test_plugin_la_SOURCES =          	\
	ioam/udp-ping/udp_ping_test.c			\
	ioam/udp-ping/udp_ping_plugin.api.h  

vppapitestplugins_LTLIBRARIES += udp_ping_test_plugin.la
 
########################################
# iOAM plugins
########################################

ioam_plugin_la_SOURCES =		    \
        $(IOAM_POT_SRC)             \
        $(IOAM_EXPORT_SRC)          \
        $(IOAM_TRACE_SRC)           \
        $(IOAM_VXLAN_GPE_SRC)   	\
        $(IOAM_E2E_SRC)			    \
		$(IPFIX_COLLECTOR_SRC)		\
		$(IOAM_ANALYSE_SRC)		    \
        $(IOAM_IP6_MANYCAST_SRC)    \
		$(UDP_PING_SRC)

API_FILES +=				            \
        $(IOAM_POT_API)                 \
        $(IOAM_EXPORT_API)              \
        $(IOAM_TRACE_API)               \
        $(IOAM_VXLAN_GPE_API)		    \
        $(IOAM_IP6_MANYCAST_API)        \
		$(UDP_PING_API)

nobase_apiinclude_HEADERS +=                               \
        $(IOAM_POT_NOINST_HDR)                  \
        $(IOAM_EXPORT_NOINST_HDR)               \
        $(IOAM_TRACE_NOINST_HDR)                \
        $(IOAM_VXLAN_GPE_NOINST_HDR)            \
        $(IOAM_E2E_NOINST_HDR)			        \
        $(IOAM_IP6_MANYCAST_NOINST_HDR)         \
		$(UDP_PING_NOINST_HDR)

vppplugins_LTLIBRARIES += ioam_plugin.la

# vi:syntax=automake