VPP Object Model (VOM)

The VOM is a C++ library for use by clients/agents of VPP for programming
state. It uses the binary APIs to do so. Various other common client side
functions are also provided. Please see om.hpp for a more detailed description.

Change-Id: Ib756bfe99817093815a9e26ccf464aa5583fc523
Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
Co-authored-by: Mohsin Kazmi <sykazmi@cisco.com>
diff --git a/src/vpp-api/vom/Makefile.am b/src/vpp-api/vom/Makefile.am
new file mode 100644
index 0000000..17b846f
--- /dev/null
+++ b/src/vpp-api/vom/Makefile.am
@@ -0,0 +1,151 @@
+# Copyright (c) 2017 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.
+
+AUTOMAKE_OPTIONS = foreign
+ACLOCAL_AMFLAGS = -I m4
+AM_LIBTOOLFLAGS = --quiet
+
+AM_CXXFLAGS = -Wall -std=gnu++11 -I${top_srcdir} -I${top_builddir}/vpp-api/vapi/ -I$(top_srcdir)/vpp-api/ -I${libdir}/../include
+AM_LDFLAGS = -shared -avoid-version -no-undefined
+
+bin_PROGRAMS =
+noinst_LTLIBRARIES =
+CLEANDIRS =
+
+lib_LTLIBRARIES = libvom.la
+
+libvom_la_DEPENDENCIES =
+libvom_la_LIBADD = 					\
+	$(top_builddir)/vpp-api/vapi/libvapiclient.la	\
+	-lpthread					\
+	-lboost_thread					\
+	$(BOOST_SYSTEM_LIB) 				\
+	$(BOOST_FILESYSTEM_LIB) 			\
+	$(BOOST_ASIO_LIB) 				\
+	-lm -lrt
+
+libvom_la_SOURCES = 			\
+	acl_binding_cmds.cpp		\
+	acl_binding.cpp			\
+	acl_l2_rule.cpp			\
+	acl_l3_rule.cpp			\
+	acl_list_cmds.cpp		\
+	acl_list.cpp			\
+	acl_types.cpp			\
+	arp_proxy_binding_cmds.cpp 	\
+	arp_proxy_binding.cpp		\
+	arp_proxy_config_cmds.cpp	\
+	arp_proxy_config.cpp		\
+	bridge_domain_cmds.cpp		\
+	bridge_domain.cpp		\
+	bridge_domain_arp_entry.cpp	\
+	bridge_domain_arp_entry_cmds.cpp \
+	bridge_domain_entry_cmds.cpp	\
+	bridge_domain_entry.cpp		\
+	client_db.cpp			\
+	cmd.cpp				\
+	connection.cpp			\
+	dhcp_config_cmds.cpp		\
+	dhcp_config.cpp			\
+	hw.cpp				\
+	inspect.cpp			\
+	interface_cmds.cpp		\
+	interface.cpp			\
+	interface_factory.cpp		\
+	interface_ip6_nd_cmds.cpp	\
+	interface_span_cmds.cpp		\
+	interface_span.cpp		\
+	interface_types.cpp		\
+	ip_unnumbered_cmds.cpp		\
+	ip_unnumbered.cpp		\
+	l2_binding_cmds.cpp		\
+	l2_binding.cpp			\
+	l3_binding_cmds.cpp		\
+	l3_binding.cpp			\
+	lldp_binding_cmds.cpp		\
+	lldp_binding.cpp		\
+	lldp_global_cmds.cpp		\
+	lldp_global.cpp			\
+	logger.cpp			\
+	nat_static.cpp			\
+	nat_static_cmds.cpp		\
+	nat_binding.cpp			\
+	nat_binding_cmds.cpp		\
+	neighbour.cpp			\
+	neighbour_cmds.cpp		\
+	object_base.cpp			\
+	om.cpp				\
+	prefix.cpp			\
+	ra_config.cpp			\
+	ra_prefix.cpp			\
+	route.cpp			\
+	route_cmds.cpp			\
+	route_domain.cpp		\
+	route_domain_cmds.cpp		\
+	sub_interface_cmds.cpp		\
+	sub_interface.cpp		\
+	tap_interface.cpp		\
+	tap_interface_cmds.cpp		\
+	types.cpp			\
+	vxlan_tunnel_cmds.cpp 		\
+	vxlan_tunnel.cpp
+
+vomincludedir = $(includedir)/vom
+
+vominclude_HEADERS =			\
+	acl_binding.hpp			\
+	acl_l2_rule.hpp			\
+	acl_l3_rule.hpp			\
+	acl_list.hpp			\
+	acl_types.hpp			\
+	arp_proxy_binding.hpp		\
+	arp_proxy_config.hpp		\
+	bridge_domain.hpp		\
+	bridge_domain_arp_entry.hpp	\
+	bridge_domain_entry.hpp		\
+	client_db.hpp			\
+	cmd.hpp				\
+	connection.hpp			\
+	dhcp_config.hpp			\
+	dump_cmd.hpp			\
+	enum_base.hpp			\
+	event_cmd.hpp			\
+	hw.hpp				\
+	inspect.hpp			\
+	interface.hpp			\
+	interface_ip6_nd.hpp		\
+	interface_span.hpp		\
+	ip_unnumbered.hpp		\
+	l2_binding.hpp			\
+	l3_binding.hpp			\
+	lldp_binding.hpp		\
+	lldp_global.hpp			\
+	logger.hpp			\
+	nat_static.hpp			\
+	nat_binding.hpp			\
+	neighbour.hpp			\
+	object_base.hpp			\
+	om.hpp				\
+	prefix.hpp			\
+	ra_config.hpp			\
+	ra_prefix.hpp			\
+	route.hpp			\
+	route_domain.hpp		\
+	rpc_cmd.hpp			\
+	singular_db.hpp			\
+	sub_interface.hpp		\
+	tap_interface.hpp		\
+	types.hpp			\
+	vxlan_tunnel.hpp
+
+# vi:syntax=automake