mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-28 17:01:51 +00:00

This commit introduces the MGMT Backend Interface which can be used by back-end management client daemons like BGPd, Staticd, Zebra to connect with new FRR Management daemon (MGMTd) and utilize the new FRR Management Framework to let any Frontend clients to retrieve any operational data or manipulate any configuration data owned by the individual Backend daemon component. This commit includes the following functionalities in the changeset: 1. Add new Backend server for Backend daemons connect to. 2. Add a C-based Backend client library which can be used by daemons to communicate with MGMTd via the Backend interface. 3. Maintain a backend adapter for each connection from an appropriate Backend client to facilitate client requests and track one or more transactions initiated from Frontend client sessions that involves the backend client component. 4. Add the following commands to inspect various Backend client related information a. show mgmt backend-adapter all b. show mgmt backend-yang-xpath-registry c. show mgmt yang-xpath-subscription Co-authored-by: Pushpasis Sarkar <pushpasis@gmail.com> Co-authored-by: Abhinay Ramesh <rabhinay@vmware.com> Co-authored-by: Ujwal P <ujwalp@vmware.com> Signed-off-by: Yash Ranjan <ranjany@vmware.com>
630 lines
13 KiB
Plaintext
630 lines
13 KiB
Plaintext
#
|
|
# libfrr
|
|
#
|
|
|
|
lib_LTLIBRARIES += lib/libfrr.la
|
|
lib_libfrr_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0 -Xlinker -e_libfrr_version
|
|
lib_libfrr_la_LIBADD = $(LIBCAP) $(UNWIND_LIBS) $(LIBYANG_LIBS) $(LUA_LIB) $(UST_LIBS) $(LIBCRYPT) $(LIBDL) $(LIBM)
|
|
|
|
lib_libfrr_la_SOURCES = \
|
|
lib/admin_group.c \
|
|
lib/affinitymap.c \
|
|
lib/affinitymap_cli.c \
|
|
lib/affinitymap_northbound.c \
|
|
lib/agg_table.c \
|
|
lib/atomlist.c \
|
|
lib/asn.c \
|
|
lib/base64.c \
|
|
lib/bfd.c \
|
|
lib/buffer.c \
|
|
lib/checksum.c \
|
|
lib/command.c \
|
|
lib/command_graph.c \
|
|
lib/command_lex.l \
|
|
lib/command_match.c \
|
|
lib/command_parse.y \
|
|
lib/cspf.c \
|
|
lib/csv.c \
|
|
lib/debug.c \
|
|
lib/defaults.c \
|
|
lib/distribute.c \
|
|
lib/explicit_bzero.c \
|
|
lib/ferr.c \
|
|
lib/filter.c \
|
|
lib/filter_cli.c \
|
|
lib/filter_nb.c \
|
|
lib/frrcu.c \
|
|
lib/frrlua.c \
|
|
lib/frrscript.c \
|
|
lib/frr_pthread.c \
|
|
lib/frrstr.c \
|
|
lib/getopt.c \
|
|
lib/getopt1.c \
|
|
lib/grammar_sandbox.c \
|
|
lib/graph.c \
|
|
lib/hash.c \
|
|
lib/hook.c \
|
|
lib/id_alloc.c \
|
|
lib/if.c \
|
|
lib/if_rmap.c \
|
|
lib/imsg-buffer.c \
|
|
lib/imsg.c \
|
|
lib/jhash.c \
|
|
lib/json.c \
|
|
lib/keychain.c \
|
|
lib/ldp_sync.c \
|
|
lib/lib_errors.c \
|
|
lib/lib_vty.c \
|
|
lib/libfrr.c \
|
|
lib/libfrr_trace.c \
|
|
lib/linklist.c \
|
|
lib/link_state.c \
|
|
lib/log.c \
|
|
lib/log_filter.c \
|
|
lib/log_vty.c \
|
|
lib/md5.c \
|
|
lib/memory.c \
|
|
lib/mgmt_be_client.c \
|
|
lib/mgmt_fe_client.c \
|
|
lib/mlag.c \
|
|
lib/module.c \
|
|
lib/mpls.c \
|
|
lib/srv6.c \
|
|
lib/network.c \
|
|
lib/nexthop.c \
|
|
lib/netns_linux.c \
|
|
lib/netns_other.c \
|
|
lib/nexthop_group.c \
|
|
lib/northbound.c \
|
|
lib/northbound_cli.c \
|
|
lib/northbound_db.c \
|
|
lib/ntop.c \
|
|
lib/openbsd-tree.c \
|
|
lib/pid_output.c \
|
|
lib/plist.c \
|
|
lib/prefix.c \
|
|
lib/privs.c \
|
|
lib/ptm_lib.c \
|
|
lib/pullwr.c \
|
|
lib/qobj.c \
|
|
lib/ringbuf.c \
|
|
lib/routemap.c \
|
|
lib/routemap_cli.c \
|
|
lib/routemap_northbound.c \
|
|
lib/sbuf.c \
|
|
lib/seqlock.c \
|
|
lib/sha256.c \
|
|
lib/sigevent.c \
|
|
lib/skiplist.c \
|
|
lib/sockopt.c \
|
|
lib/sockunion.c \
|
|
lib/spf_backoff.c \
|
|
lib/srcdest_table.c \
|
|
lib/stream.c \
|
|
lib/strformat.c \
|
|
lib/strlcat.c \
|
|
lib/strlcpy.c \
|
|
lib/systemd.c \
|
|
lib/table.c \
|
|
lib/termtable.c \
|
|
lib/thread.c \
|
|
lib/typerb.c \
|
|
lib/typesafe.c \
|
|
lib/vector.c \
|
|
lib/vrf.c \
|
|
lib/vty.c \
|
|
lib/wheel.c \
|
|
lib/workqueue.c \
|
|
lib/xref.c \
|
|
lib/yang.c \
|
|
lib/yang_translator.c \
|
|
lib/yang_wrappers.c \
|
|
lib/zclient.c \
|
|
lib/zlog.c \
|
|
lib/zlog_5424.c \
|
|
lib/zlog_5424_cli.c \
|
|
lib/zlog_live.c \
|
|
lib/zlog_targets.c \
|
|
lib/printf/printf-pos.c \
|
|
lib/printf/vfprintf.c \
|
|
lib/printf/glue.c \
|
|
lib/routing_nb.c \
|
|
lib/routing_nb_config.c \
|
|
lib/tc.c \
|
|
# end
|
|
|
|
nodist_lib_libfrr_la_SOURCES = \
|
|
yang/frr-affinity-map.yang.c \
|
|
yang/frr-filter.yang.c \
|
|
yang/frr-interface.yang.c \
|
|
yang/frr-route-map.yang.c \
|
|
yang/frr-route-types.yang.c \
|
|
yang/frr-vrf.yang.c \
|
|
yang/frr-routing.yang.c \
|
|
yang/frr-nexthop.yang.c \
|
|
yang/ietf/ietf-routing-types.yang.c \
|
|
yang/ietf/ietf-interfaces.yang.c \
|
|
yang/ietf/ietf-bgp-types.yang.c \
|
|
yang/frr-module-translator.yang.c \
|
|
# end
|
|
|
|
# Add logic to build mgmt.proto
|
|
lib_libfrr_la_LIBADD += $(PROTOBUF_C_LIBS)
|
|
|
|
BUILT_SOURCES += \
|
|
lib/mgmt.pb-c.c \
|
|
lib/mgmt.pb-c.h \
|
|
# end
|
|
|
|
CLEANFILES += \
|
|
lib/mgmt.pb-c.h \
|
|
lib/mgmt.pb-c.c \
|
|
# end
|
|
|
|
lib_libfrr_la_SOURCES += \
|
|
lib/mgmt.pb-c.c \
|
|
#end
|
|
|
|
if SQLITE3
|
|
lib_libfrr_la_LIBADD += $(SQLITE3_LIBS)
|
|
lib_libfrr_la_SOURCES += lib/db.c
|
|
endif
|
|
|
|
clippy_scan += \
|
|
lib/affinitymap_cli.c \
|
|
lib/if.c \
|
|
lib/filter_cli.c \
|
|
lib/log_vty.c \
|
|
lib/nexthop_group.c \
|
|
lib/northbound_cli.c \
|
|
lib/plist.c \
|
|
lib/routemap.c \
|
|
lib/routemap_cli.c \
|
|
lib/thread.c \
|
|
lib/vty.c \
|
|
lib/zlog_5424_cli.c \
|
|
# end
|
|
|
|
pkginclude_HEADERS += \
|
|
lib/admin_group.h \
|
|
lib/affinitymap.h \
|
|
lib/agg_table.h \
|
|
lib/asn.h \
|
|
lib/atomlist.h \
|
|
lib/base64.h \
|
|
lib/bfd.h \
|
|
lib/bitfield.h \
|
|
lib/buffer.h \
|
|
lib/checksum.h \
|
|
lib/mlag.h \
|
|
lib/command.h \
|
|
lib/command_graph.h \
|
|
lib/command_match.h \
|
|
lib/compiler.h \
|
|
lib/cspf.h \
|
|
lib/csv.h \
|
|
lib/db.h \
|
|
lib/debug.h \
|
|
lib/defaults.h \
|
|
lib/distribute.h \
|
|
lib/ferr.h \
|
|
lib/filter.h \
|
|
lib/freebsd-queue.h \
|
|
lib/frrlua.h \
|
|
lib/frrscript.h \
|
|
lib/frr_pthread.h \
|
|
lib/frratomic.h \
|
|
lib/frrcu.h \
|
|
lib/frrstr.h \
|
|
lib/getopt.h \
|
|
lib/graph.h \
|
|
lib/hash.h \
|
|
lib/hook.h \
|
|
lib/iana_afi.h \
|
|
lib/id_alloc.h \
|
|
lib/if.h \
|
|
lib/if_rmap.h \
|
|
lib/imsg.h \
|
|
lib/ipaddr.h \
|
|
lib/jhash.h \
|
|
lib/json.h \
|
|
lib/keychain.h \
|
|
lib/ldp_sync.h \
|
|
lib/lib_errors.h \
|
|
lib/lib_vty.h \
|
|
lib/libfrr.h \
|
|
lib/libfrr_trace.h \
|
|
lib/libospf.h \
|
|
lib/linklist.h \
|
|
lib/link_state.h \
|
|
lib/log.h \
|
|
lib/log_vty.h \
|
|
lib/md5.h \
|
|
lib/memory.h \
|
|
lib/mgmt.pb-c.h \
|
|
lib/mgmt_be_client.h \
|
|
lib/mgmt_fe_client.h \
|
|
lib/mgmt_pb.h \
|
|
lib/module.h \
|
|
lib/monotime.h \
|
|
lib/mpls.h \
|
|
lib/srv6.h \
|
|
lib/network.h \
|
|
lib/nexthop.h \
|
|
lib/nexthop_group.h \
|
|
lib/nexthop_group_private.h \
|
|
lib/northbound.h \
|
|
lib/northbound_cli.h \
|
|
lib/northbound_db.h \
|
|
lib/ns.h \
|
|
lib/openbsd-queue.h \
|
|
lib/openbsd-tree.h \
|
|
lib/plist.h \
|
|
lib/prefix.h \
|
|
lib/printfrr.h \
|
|
lib/privs.h \
|
|
lib/ptm_lib.h \
|
|
lib/pullwr.h \
|
|
lib/pw.h \
|
|
lib/qobj.h \
|
|
lib/queue.h \
|
|
lib/ringbuf.h \
|
|
lib/routemap.h \
|
|
lib/route_opaque.h \
|
|
lib/sbuf.h \
|
|
lib/seqlock.h \
|
|
lib/sha256.h \
|
|
lib/sigevent.h \
|
|
lib/skiplist.h \
|
|
lib/smux.h \
|
|
lib/sockopt.h \
|
|
lib/sockunion.h \
|
|
lib/spf_backoff.h \
|
|
lib/srcdest_table.h \
|
|
lib/srte.h \
|
|
lib/stream.h \
|
|
lib/systemd.h \
|
|
lib/table.h \
|
|
lib/termtable.h \
|
|
lib/thread.h \
|
|
lib/trace.h \
|
|
lib/typerb.h \
|
|
lib/typesafe.h \
|
|
lib/vector.h \
|
|
lib/vlan.h \
|
|
lib/vrf.h \
|
|
lib/vrf_int.h \
|
|
lib/vty.h \
|
|
lib/vxlan.h \
|
|
lib/wheel.h \
|
|
lib/workqueue.h \
|
|
lib/xref.h \
|
|
lib/yang.h \
|
|
lib/yang_translator.h \
|
|
lib/yang_wrappers.h \
|
|
lib/zclient.h \
|
|
lib/zebra.h \
|
|
lib/zlog.h \
|
|
lib/zlog_5424.h \
|
|
lib/zlog_live.h \
|
|
lib/zlog_targets.h \
|
|
lib/pbr.h \
|
|
lib/tc.h \
|
|
lib/routing_nb.h \
|
|
\
|
|
lib/assert/assert.h \
|
|
# end
|
|
|
|
|
|
nodist_pkginclude_HEADERS += \
|
|
lib/route_types.h \
|
|
lib/version.h \
|
|
# end
|
|
|
|
noinst_HEADERS += \
|
|
lib/clippy.h \
|
|
lib/plist_int.h \
|
|
lib/printf/printfcommon.h \
|
|
lib/printf/printflocal.h \
|
|
#end
|
|
|
|
# General note about module and module helper library (libfrrsnmp, libfrrzmq)
|
|
# linking: If we're linking libfrr statically into daemons, we *must* remove
|
|
# libfrr from modules because modules will always link it in dynamically and
|
|
# thus 2 copies of libfrr will be loaded... hilarity ensues.
|
|
#
|
|
# Not linking libfrr into modules should generally work fine because the
|
|
# executable refers to libfrr either way and the dynamic linker should make
|
|
# libfrr available to modules. If some OS platform has a dynamic linker that
|
|
# doesn't do that, libfrr needs to be readded to modules, but _only_ _if_
|
|
# it's not linked into daemons statically.
|
|
|
|
#
|
|
# SNMP support
|
|
#
|
|
if SNMP
|
|
lib_LTLIBRARIES += lib/libfrrsnmp.la
|
|
endif
|
|
|
|
lib_libfrrsnmp_la_CFLAGS = $(AM_CFLAGS) $(SNMP_CFLAGS) -std=gnu11
|
|
lib_libfrrsnmp_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0
|
|
lib_libfrrsnmp_la_LIBADD = $(SNMP_LIBS)
|
|
lib_libfrrsnmp_la_SOURCES = \
|
|
lib/agentx.c \
|
|
lib/snmp.c \
|
|
# end
|
|
|
|
|
|
#
|
|
# c-ares support
|
|
#
|
|
if CARES
|
|
lib_LTLIBRARIES += lib/libfrrcares.la
|
|
pkginclude_HEADERS += lib/resolver.h
|
|
endif
|
|
|
|
lib_libfrrcares_la_CFLAGS = $(AM_CFLAGS) $(CARES_CFLAGS)
|
|
lib_libfrrcares_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0
|
|
lib_libfrrcares_la_LIBADD = $(CARES_LIBS)
|
|
lib_libfrrcares_la_SOURCES = \
|
|
lib/resolver.c \
|
|
#end
|
|
|
|
#
|
|
# ZeroMQ support
|
|
#
|
|
if ZEROMQ
|
|
lib_LTLIBRARIES += lib/libfrrzmq.la
|
|
pkginclude_HEADERS += lib/frr_zmq.h
|
|
endif
|
|
|
|
lib_libfrrzmq_la_CFLAGS = $(AM_CFLAGS) $(ZEROMQ_CFLAGS)
|
|
lib_libfrrzmq_la_LDFLAGS = $(LIB_LDFLAGS) -version-info 0:0:0
|
|
lib_libfrrzmq_la_LIBADD = $(ZEROMQ_LIBS)
|
|
lib_libfrrzmq_la_SOURCES = \
|
|
lib/frr_zmq.c \
|
|
#end
|
|
|
|
#
|
|
# Tail-f's ConfD support
|
|
#
|
|
if CONFD
|
|
module_LTLIBRARIES += lib/confd.la
|
|
endif
|
|
|
|
lib_confd_la_CFLAGS = $(AM_CFLAGS) $(CONFD_CFLAGS)
|
|
lib_confd_la_LDFLAGS = $(MODULE_LDFLAGS)
|
|
lib_confd_la_LIBADD = lib/libfrr.la $(CONFD_LIBS)
|
|
lib_confd_la_SOURCES = lib/northbound_confd.c
|
|
|
|
#
|
|
# Sysrepo support
|
|
#
|
|
if SYSREPO
|
|
module_LTLIBRARIES += lib/sysrepo.la
|
|
endif
|
|
|
|
lib_sysrepo_la_CFLAGS = $(AM_CFLAGS) $(SYSREPO_CFLAGS)
|
|
lib_sysrepo_la_LDFLAGS = $(MODULE_LDFLAGS)
|
|
lib_sysrepo_la_LIBADD = lib/libfrr.la $(SYSREPO_LIBS)
|
|
lib_sysrepo_la_SOURCES = lib/northbound_sysrepo.c
|
|
|
|
#
|
|
# gRPC northbound plugin
|
|
#
|
|
if GRPC
|
|
module_LTLIBRARIES += lib/grpc.la
|
|
endif
|
|
|
|
lib_grpc_la_CXXFLAGS = $(WERROR) $(GRPC_CFLAGS)
|
|
lib_grpc_la_LDFLAGS = $(MODULE_LDFLAGS)
|
|
lib_grpc_la_LIBADD = lib/libfrr.la grpc/libfrrgrpc_pb.la $(GRPC_LIBS)
|
|
lib_grpc_la_SOURCES = lib/northbound_grpc.cpp
|
|
|
|
#
|
|
# CLI utilities
|
|
#
|
|
noinst_PROGRAMS += \
|
|
lib/grammar_sandbox \
|
|
# end
|
|
|
|
if BUILD_CLIPPY
|
|
noinst_PROGRAMS += lib/clippy
|
|
else
|
|
if HOSTTOOLS_CLIPPY
|
|
$(CLIPPY):
|
|
@$(MAKE) -C $(top_builddir)/hosttools lib/route_types.h lib/clippy
|
|
endif
|
|
endif
|
|
|
|
lib_grammar_sandbox_SOURCES = \
|
|
lib/grammar_sandbox_main.c
|
|
lib_grammar_sandbox_LDADD = \
|
|
lib/libfrr.la
|
|
|
|
lib_clippy_CPPFLAGS = $(CPPFLAGS_BASE) -D_GNU_SOURCE -DBUILDING_CLIPPY
|
|
lib_clippy_CFLAGS = $(AC_CFLAGS) $(PYTHON_CFLAGS)
|
|
lib_clippy_LDADD = $(PYTHON_LIBS) $(UST_LIBS) -lelf
|
|
# no $(SAN_FLAGS) here
|
|
lib_clippy_LDFLAGS = -export-dynamic $(AC_LDFLAGS) $(AC_LDFLAGS_EXEC)
|
|
lib_clippy_SOURCES = \
|
|
lib/jhash.c \
|
|
lib/clippy.c \
|
|
lib/command_graph.c \
|
|
lib/command_lex.l \
|
|
lib/command_parse.y \
|
|
lib/command_py.c \
|
|
lib/defun_lex.l \
|
|
lib/elf_py.c \
|
|
lib/graph.c \
|
|
lib/libfrr_trace.c \
|
|
lib/memory.c \
|
|
lib/typesafe.c \
|
|
lib/vector.c \
|
|
# end
|
|
|
|
# (global) clippy rules for all directories
|
|
|
|
AM_V_CLIPPY = $(am__v_CLIPPY_$(V))
|
|
am__v_CLIPPY_ = $(am__v_CLIPPY_$(AM_DEFAULT_VERBOSITY))
|
|
am__v_CLIPPY_0 = @echo " CLIPPY " $@;
|
|
am__v_CLIPPY_1 =
|
|
|
|
CLIPPY_DEPS = $(CLIPPY) $(top_srcdir)/python/clidef.py
|
|
|
|
SUFFIXES += _clippy.c
|
|
.c_clippy.c:
|
|
$(AM_V_CLIPPY) $(CLIPPY) $(top_srcdir)/python/clidef.py -o $@ $<
|
|
|
|
# xrelfo, the ELF xref extractor
|
|
|
|
AM_V_XRELFO = $(am__v_XRELFO_$(V))
|
|
am__v_XRELFO_ = $(am__v_XRELFO_$(AM_DEFAULT_VERBOSITY))
|
|
am__v_XRELFO_0 = @echo " XRELFO " $@;
|
|
am__v_XRELFO_1 =
|
|
|
|
XRELFO_FLAGS = -Wlog-format -Wlog-args
|
|
|
|
SUFFIXES += .xref
|
|
%.xref: % $(CLIPPY)
|
|
$(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py $(WERROR) $(XRELFO_FLAGS) -o $@ $<
|
|
|
|
# dependencies added in python/makefile.py
|
|
frr.xref:
|
|
$(AM_V_XRELFO) $(CLIPPY) $(top_srcdir)/python/xrelfo.py -o $@ -c vtysh/vtysh_cmd.c $^
|
|
all-am: frr.xref
|
|
|
|
clean-xref:
|
|
-rm -rf $(xrefs) frr.xref
|
|
clean-local: clean-xref
|
|
|
|
CLEANFILES += vtysh/vtysh_cmd.c
|
|
vtysh/vtysh_cmd.c: frr.xref
|
|
@test -f $@ || rm -f frr.xref || true
|
|
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) frr.xref
|
|
|
|
## automake's "ylwrap" is a great piece of GNU software... not.
|
|
.l.c:
|
|
$(AM_V_LEX)$(am__skiplex) $(LEXCOMPILE) $<
|
|
.y.c:
|
|
$(AM_V_YACC)$(am__skipyacc) $(YACCCOMPILE) $<
|
|
|
|
#
|
|
# generated sources & extra foo
|
|
#
|
|
EXTRA_DIST += \
|
|
lib/command_lex.h \
|
|
lib/command_parse.h \
|
|
lib/gitversion.pl \
|
|
lib/route_types.pl \
|
|
lib/route_types.txt \
|
|
# end
|
|
|
|
BUILT_SOURCES += \
|
|
lib/gitversion.h \
|
|
lib/route_types.h \
|
|
# end
|
|
|
|
## force route_types.h
|
|
$(lib_clippy_OBJECTS): lib/route_types.h
|
|
$(lib_libfrr_la_OBJECTS): lib/route_types.h
|
|
|
|
AM_YFLAGS = -d -Dapi.prefix=@BISON_OPENBRACE@cmd_yy@BISON_CLOSEBRACE@ @BISON_VERBOSE@
|
|
|
|
lib/command_lex.h: lib/command_lex.c
|
|
@if test ! -f $@; then rm -f "lib/command_lex.c"; else :; fi
|
|
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) "lib/command_lex.c"; else :; fi
|
|
lib/command_lex.lo: lib/command_parse.h
|
|
lib/command_parse.lo: lib/command_lex.h
|
|
lib/clippy-command_lex.$(OBJEXT): lib/command_parse.h
|
|
lib/clippy-command_parse.$(OBJEXT): lib/command_lex.h
|
|
lib/lib_clippy-command_lex.$(OBJEXT): lib/command_parse.h
|
|
lib/lib_clippy-command_parse.$(OBJEXT): lib/command_lex.h
|
|
|
|
DISTCLEANFILES += lib/command_lex.h \
|
|
lib/command_lex.c \
|
|
lib/command_parse.h \
|
|
lib/command_parse.c
|
|
|
|
rt_enabled =
|
|
|
|
if BABELD
|
|
rt_enabled += --enabled babeld
|
|
endif
|
|
if BFDD
|
|
rt_enabled += --enabled bfdd
|
|
endif
|
|
if BGPD
|
|
rt_enabled += --enabled bgpd
|
|
if ENABLE_BGP_VNC
|
|
rt_enabled += --enabled bgpd-vnc
|
|
endif
|
|
endif
|
|
if EIGRPD
|
|
rt_enabled += --enabled eigrpd
|
|
endif
|
|
if ISISD
|
|
rt_enabled += --enabled isisd
|
|
endif
|
|
if FABRICD
|
|
rt_enabled += --enabled fabricd
|
|
endif
|
|
if LDPD
|
|
rt_enabled += --enabled ldpd
|
|
endif
|
|
if NHRPD
|
|
rt_enabled += --enabled nhrpd
|
|
endif
|
|
if OSPFD
|
|
rt_enabled += --enabled ospfd
|
|
endif
|
|
if OSPF6D
|
|
rt_enabled += --enabled ospf6d
|
|
endif
|
|
if PBRD
|
|
rt_enabled += --enabled pbrd
|
|
endif
|
|
if PIMD
|
|
rt_enabled += --enabled pimd
|
|
endif
|
|
if RIPD
|
|
rt_enabled += --enabled ripd
|
|
endif
|
|
if RIPNGD
|
|
rt_enabled += --enabled ripngd
|
|
endif
|
|
if SHARPD
|
|
rt_enabled += --enabled sharpd
|
|
endif
|
|
if ZEBRA
|
|
rt_enabled += --enabled zebra
|
|
endif
|
|
|
|
lib/route_types.h: $(top_srcdir)/lib/route_types.txt $(top_srcdir)/lib/route_types.pl
|
|
@$(MKDIR_P) lib
|
|
$(PERL) $(top_srcdir)/lib/route_types.pl $(rt_enabled) < $(top_srcdir)/lib/route_types.txt > $@
|
|
DISTCLEANFILES += lib/route_types.h
|
|
|
|
if GIT_VERSION
|
|
# bit of a trick here to always have up-to-date git stamps without triggering
|
|
# unnecessary rebuilds. .PHONY causes the .tmp file to be rebuilt always,
|
|
# but if we use that on gitversion.h it'll ripple through the .c file deps.
|
|
# (even if gitversion.h's file timestamp doesn't change, make will think it
|
|
# did, because of .PHONY...)
|
|
|
|
PHONY_GITVERSION=lib/gitversion.h.tmp
|
|
.SILENT: lib/gitversion.h lib/gitversion.h.tmp
|
|
GITH=lib/gitversion.h
|
|
lib/gitversion.h.tmp: $(top_srcdir)/.git
|
|
@$(MKDIR_P) lib
|
|
$(PERL) $(top_srcdir)/lib/gitversion.pl $(top_srcdir) > ${GITH}.tmp
|
|
lib/gitversion.h: lib/gitversion.h.tmp
|
|
{ test -f ${GITH} && diff -s -q ${GITH}.tmp ${GITH}; } || cp ${GITH}.tmp ${GITH}
|
|
|
|
else
|
|
PHONY_GITVERSION=lib/gitversion.h
|
|
lib/gitversion.h:
|
|
true
|
|
endif
|
|
.PHONY: $(PHONY_GITVERSION)
|