mirror_frr/zebra/subdir.am
Carmine Scarpitta 959267f7c2 zebra: Add function to resolve Generic Netlink family
Generic Netlink is an extension of Netlink meant for kernel-user space
communications. It supports the dynamic allocation of communication
channels. Kernel and user space applications register their services
with a Generic Netlink controller. The Generic Netlink controller is
responsible for assigning a unique channel number with each service.
Clients who want to use a service query the controller to see if
the service exists and to determine the correct channel number. The
channel number is used to access the requested service.

This commit adds the base functionality to get the channel number
assigned to a specific service. More precisely, this commit adds a
function `genl_resolve_family()` that takes the service name (called
family in the Generic Netlink terminology) as an input parameter and
queries the Generic Netlink controller to get the channel number
assigned with the requested service.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2023-12-14 14:56:44 +01:00

262 lines
6.2 KiB
Plaintext

#
# zebra
#
if ZEBRA
sbin_PROGRAMS += zebra/zebra
vtysh_daemons += zebra
if IRDP
module_LTLIBRARIES += zebra/zebra_irdp.la
endif
if SNMP
module_LTLIBRARIES += zebra/zebra_snmp.la
endif
if FPM
module_LTLIBRARIES += zebra/zebra_fpm.la
endif
if LINUX
module_LTLIBRARIES += zebra/zebra_cumulus_mlag.la
endif
# Dataplane sample plugin
if DEV_BUILD
module_LTLIBRARIES += zebra/dplane_sample_plugin.la
endif
man8 += $(MANBUILD)/frr-zebra.8
## endif ZEBRA
endif
zebra_zebra_LDADD = lib/libfrr.la $(LIBCAP) $(UST_LIBS)
if HAVE_PROTOBUF3
zebra_zebra_LDADD += mlag/libmlag_pb.la $(PROTOBUF_C_LIBS)
zebra/zebra_mlag.$(OBJEXT): mlag/mlag.pb-c.h
endif
zebra_zebra_SOURCES = \
zebra/connected.c \
zebra/debug.c \
zebra/if_ioctl.c \
zebra/if_netlink.c \
zebra/if_socket.c \
zebra/if_sysctl.c \
zebra/interface.c \
zebra/ioctl.c \
zebra/ipforward_proc.c \
zebra/ipforward_sysctl.c \
zebra/kernel_netlink.c \
zebra/kernel_socket.c \
zebra/label_manager.c \
zebra/main.c \
zebra/netconf_netlink.c \
zebra/redistribute.c \
zebra/router-id.c \
zebra/rt_netlink.c \
zebra/ge_netlink.c \
zebra/rt_socket.c \
zebra/rtadv.c \
zebra/rtread_netlink.c \
zebra/rtread_sysctl.c \
zebra/rule_netlink.c \
zebra/rule_socket.c \
zebra/table_manager.c \
zebra/tc_netlink.c \
zebra/tc_socket.c \
zebra/zapi_msg.c \
zebra/zebra_affinitymap.c \
zebra/zebra_dplane.c \
zebra/zebra_errors.c \
zebra/zebra_gr.c \
zebra/zebra_l2.c \
zebra/zebra_l2_bridge_if.c \
zebra/zebra_evpn.c \
zebra/zebra_evpn_mac.c \
zebra/zebra_evpn_neigh.c \
zebra/zebra_mlag.c \
zebra/zebra_mlag_vty.c \
zebra/zebra_mpls.c \
zebra/zebra_mpls_netlink.c \
zebra/zebra_mpls_openbsd.c \
zebra/zebra_mpls_null.c \
zebra/zebra_mpls_vty.c \
zebra/zebra_srv6.c \
zebra/zebra_srv6_vty.c \
zebra/zebra_mroute.c \
zebra/zebra_nb.c \
zebra/zebra_nb_config.c \
zebra/zebra_nb_rpcs.c \
zebra/zebra_nb_state.c \
zebra/zebra_netns_id.c \
zebra/zebra_netns_notify.c \
zebra/zebra_nhg.c \
zebra/zebra_ns.c \
zebra/zebra_opaque.c \
zebra/zebra_pbr.c \
zebra/zebra_ptm.c \
zebra/zebra_ptm_redistribute.c \
zebra/zebra_pw.c \
zebra/zebra_rib.c \
zebra/zebra_router.c \
zebra/zebra_rnh.c \
zebra/zebra_routemap.c \
zebra/zebra_routemap_nb.c \
zebra/zebra_routemap_nb_config.c \
zebra/zebra_script.c \
zebra/zebra_srte.c \
zebra/zebra_tc.c \
zebra/zebra_trace.c \
zebra/zebra_vrf.c \
zebra/zebra_vty.c \
zebra/zebra_vxlan.c \
zebra/zebra_vxlan_if.c \
zebra/zebra_evpn_mh.c \
zebra/zebra_neigh.c \
zebra/zserv.c \
# end
clippy_scan += \
zebra/debug.c \
zebra/interface.c \
zebra/rtadv.c \
zebra/zebra_evpn_mh.c \
zebra/zebra_mlag_vty.c \
zebra/zebra_routemap.c \
zebra/zebra_vty.c \
zebra/zebra_srv6_vty.c \
zebra/zebra_vrf.c \
zebra/dpdk/zebra_dplane_dpdk_vty.c \
zebra/label_manager.c \
# end
noinst_HEADERS += \
zebra/connected.h \
zebra/debug.h \
zebra/if_netlink.h \
zebra/interface.h \
zebra/ioctl.h \
zebra/ipforward.h \
zebra/irdp.h \
zebra/kernel_netlink.h \
zebra/kernel_socket.h \
zebra/label_manager.h \
zebra/netconf_netlink.h \
zebra/redistribute.h \
zebra/rib.h \
zebra/router-id.h \
zebra/rt.h \
zebra/rt_netlink.h \
zebra/ge_netlink.h \
zebra/rtadv.h \
zebra/rule_netlink.h \
zebra/table_manager.h \
zebra/tc_netlink.h \
zebra/zapi_msg.h \
zebra/zebra_affinitymap.h \
zebra/zebra_dplane.h \
zebra/zebra_errors.h \
zebra/zebra_evpn.h \
zebra/zebra_evpn_mac.h \
zebra/zebra_evpn_neigh.h \
zebra/zebra_evpn_vxlan.h \
zebra/zebra_fpm_private.h \
zebra/zebra_l2.h \
zebra/zebra_mlag.h \
zebra/zebra_mlag_vty.h \
zebra/zebra_mpls.h \
zebra/zebra_srv6.h \
zebra/zebra_srv6_vty.h \
zebra/zebra_mroute.h \
zebra/zebra_nb.h \
zebra/zebra_netns_id.h \
zebra/zebra_netns_notify.h \
zebra/zebra_nhg.h \
zebra/zebra_nhg_private.h \
zebra/zebra_ns.h \
zebra/zebra_opaque.h \
zebra/zebra_pbr.h \
zebra/zebra_ptm.h \
zebra/zebra_ptm_redistribute.h \
zebra/zebra_pw.h \
zebra/zebra_rnh.h \
zebra/zebra_routemap.h \
zebra/zebra_routemap_nb.h \
zebra/zebra_router.h \
zebra/zebra_script.h \
zebra/zebra_srte.h \
zebra/zebra_tc.h \
zebra/zebra_trace.h \
zebra/zebra_vrf.h \
zebra/zebra_vxlan.h \
zebra/zebra_vxlan_private.h \
zebra/zebra_evpn_mh.h \
zebra/zebra_neigh.h \
zebra/zebra_l2_bridge_if.h \
zebra/zebra_vxlan_if.h \
zebra/zserv.h \
zebra/dpdk/zebra_dplane_dpdk.h \
zebra/dpdk/zebra_dplane_dpdk_private.h \
# end
zebra_zebra_irdp_la_SOURCES = \
zebra/irdp_interface.c \
zebra/irdp_main.c \
zebra/irdp_packet.c \
# end
zebra_zebra_irdp_la_LDFLAGS = $(MODULE_LDFLAGS)
zebra_zebra_snmp_la_SOURCES = zebra/zebra_snmp.c
zebra_zebra_snmp_la_CFLAGS = $(AM_CFLAGS) $(SNMP_CFLAGS) -std=gnu11
zebra_zebra_snmp_la_LDFLAGS = $(MODULE_LDFLAGS)
zebra_zebra_snmp_la_LIBADD = lib/libfrrsnmp.la
zebra_zebra_fpm_la_LDFLAGS = $(MODULE_LDFLAGS)
zebra_zebra_fpm_la_LIBADD =
zebra_zebra_fpm_la_SOURCES = zebra/zebra_fpm.c
zebra_zebra_fpm_la_SOURCES += zebra/zebra_fpm_netlink.c
if HAVE_PROTOBUF
zebra_zebra_fpm_la_LIBADD += fpm/libfrrfpm_pb.la qpb/libfrr_pb.la $(PROTOBUF_C_LIBS)
zebra_zebra_fpm_la_SOURCES += zebra/zebra_fpm_protobuf.c
zebra/zebra_fpm_protobuf.lo: fpm/fpm.pb-c.h qpb/qpb.pb-c.h
if DEV_BUILD
zebra_zebra_fpm_la_SOURCES += zebra/zebra_fpm_dt.c
zebra/zebra_fpm_dt.lo: fpm/fpm.pb-c.h qpb/qpb.pb-c.h
endif
endif
# Sample dataplane plugin
if DEV_BUILD
zebra_dplane_sample_plugin_la_SOURCES = zebra/sample_plugin.c
zebra_dplane_sample_plugin_la_LDFLAGS = $(MODULE_LDFLAGS)
endif
nodist_zebra_zebra_SOURCES = \
yang/frr-zebra.yang.c \
yang/frr-zebra-route-map.yang.c \
# end
zebra_zebra_cumulus_mlag_la_SOURCES = zebra/zebra_mlag_private.c
zebra_zebra_cumulus_mlag_la_LDFLAGS = $(MODULE_LDFLAGS)
if LINUX
module_LTLIBRARIES += zebra/dplane_fpm_nl.la
zebra_dplane_fpm_nl_la_SOURCES = zebra/dplane_fpm_nl.c
zebra_dplane_fpm_nl_la_LDFLAGS = $(MODULE_LDFLAGS)
zebra_dplane_fpm_nl_la_LIBADD =
endif
if NETLINK_DEBUG
zebra_zebra_SOURCES += \
zebra/debug_nl.c \
# end
endif
if DP_DPDK
module_LTLIBRARIES += zebra/zebra_dplane_dpdk.la
endif
zebra_zebra_dplane_dpdk_la_SOURCES = zebra/dpdk/zebra_dplane_dpdk.c zebra/dpdk/zebra_dplane_dpdk_vty.c
zebra_zebra_dplane_dpdk_la_LDFLAGS = -avoid-version -module -shared -export-dynamic -L/usr/local/lib -v
zebra_zebra_dplane_dpdk_la_CFLAGS = $(DPDK_CFLAGS)
zebra_zebra_dplane_dpdk_la_LIBADD = $(DPDK_LIBS)