diff options
| author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2023-03-27 11:59:30 +0000 |
|---|---|---|
| committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2023-03-27 13:55:44 +0000 |
| commit | 19e43c163c64636d2590dca006e22f18d22f48b2 (patch) | |
| tree | 1f283c4b32998f82cf891a8924ca726cacf17daf /sys/netlink/netlink_module.c | |
| parent | 21af4e09f4e8b17eae6d617f6433e7116f6b17a3 (diff) | |
Diffstat (limited to 'sys/netlink/netlink_module.c')
| -rw-r--r-- | sys/netlink/netlink_module.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/sys/netlink/netlink_module.c b/sys/netlink/netlink_module.c index f820796a6028..a881a7540166 100644 --- a/sys/netlink/netlink_module.c +++ b/sys/netlink/netlink_module.c @@ -26,6 +26,8 @@ * SUCH DAMAGE. */ +#include "opt_netlink.h" + #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); #include <sys/param.h> @@ -44,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include <machine/atomic.h> -MALLOC_DEFINE(M_NETLINK, "netlink", "Memory used for netlink packets"); FEATURE(netlink, "Netlink support"); #define DEBUG_MOD_NAME nl_mod @@ -52,8 +53,6 @@ FEATURE(netlink, "Netlink support"); #include <netlink/netlink_debug.h> _DECLARE_DEBUG(LOG_DEBUG); -SYSCTL_NODE(_net, OID_AUTO, netlink, CTLFLAG_RD, 0, ""); -SYSCTL_NODE(_net_netlink, OID_AUTO, debug, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, ""); #define NL_MAX_HANDLERS 20 struct nl_proto_handler _nl_handlers[NL_MAX_HANDLERS]; @@ -175,6 +174,21 @@ netlink_unregister_proto(int proto) return (true); } +#if !defined(NETLINK) && defined(NETLINK_MODULE) +/* Non-stub function provider */ +const static struct nl_function_wrapper nl_module = { + .nlmsg_add = _nlmsg_add, + .nlmsg_refill_buffer = _nlmsg_refill_buffer, + .nlmsg_flush = _nlmsg_flush, + .nlmsg_end = _nlmsg_end, + .nlmsg_abort = _nlmsg_abort, + .nlmsg_get_unicast_writer = _nlmsg_get_unicast_writer, + .nlmsg_get_group_writer = _nlmsg_get_group_writer, + .nlmsg_get_chain_writer = _nlmsg_get_chain_writer, + .nlmsg_end_dump = _nlmsg_end_dump, +}; +#endif + static bool can_unload(void) { @@ -205,6 +219,9 @@ netlink_modevent(module_t mod __unused, int what, void *priv __unused) switch (what) { case MOD_LOAD: NL_LOG(LOG_DEBUG2, "Loading"); +#if !defined(NETLINK) && defined(NETLINK_MODULE) + nl_set_functions(&nl_module); +#endif break; case MOD_UNLOAD: @@ -212,6 +229,9 @@ netlink_modevent(module_t mod __unused, int what, void *priv __unused) if (can_unload()) { NL_LOG(LOG_WARNING, "unloading"); netlink_unloading = 1; +#if !defined(NETLINK) && defined(NETLINK_MODULE) + nl_set_functions(NULL); +#endif } else ret = EBUSY; break; |
