mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-26 04:23:58 +00:00

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>
262 lines
6.2 KiB
Plaintext
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)
|