libosmocore 1.9.0.192-1c24
Osmocom core library
mnl.c File Reference

This code integrates libmnl (minimal netlink library) into the osmocom select loop abstraction. More...

#include <osmocom/core/select.h>
#include <osmocom/core/talloc.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/mnl.h>
#include <libmnl/libmnl.h>
#include <errno.h>
#include <string.h>

Functions

static int osmo_mnl_fd_cb (struct osmo_fd *ofd, unsigned int what)
 
struct osmo_mnlosmo_mnl_init (void *ctx, int bus, unsigned int groups, mnl_cb_t mnl_cb, void *priv)
 create an osmocom-wrapped limnl netlink socket. More...
 
void osmo_mnl_destroy (struct osmo_mnl *omnl)
 destroy an existing osmocom-wrapped mnl netlink socket: Unregister + close + free. More...
 

Detailed Description

This code integrates libmnl (minimal netlink library) into the osmocom select loop abstraction.

It allows other osmocom libraries or application code to create netlink sockets and subscribe to netlink events via libmnl. The completion handler / callbacks are dispatched via libosmocore select loop handling.

Function Documentation

◆ osmo_mnl_destroy()

void osmo_mnl_destroy ( struct osmo_mnl omnl)

destroy an existing osmocom-wrapped mnl netlink socket: Unregister + close + free.

Parameters
[in]omnlosmo_mnl socket previously returned by osmo_mnl_init()

References osmo_mnl::mnls, osmo_mnl::ofd, and osmo_fd_unregister().

Referenced by netdev_netns_ctx_free().

◆ osmo_mnl_fd_cb()

static int osmo_mnl_fd_cb ( struct osmo_fd ofd,
unsigned int  what 
)
static

◆ osmo_mnl_init()

struct osmo_mnl * osmo_mnl_init ( void *  ctx,
int  bus,
unsigned int  groups,
mnl_cb_t  mnl_cb,
void *  priv 
)

create an osmocom-wrapped limnl netlink socket.

Parameters
[in]ctxtalloc context from which to allocate
[in]busnetlink socket bus ID (see NETLINK_* constants)
[in]groupsgroups of messages to bind/subscribe to
[in]mnl_cbcallback function called for each incoming message
[in]privopaque private user data
Returns
newly-allocated osmo_mnl or NULL in case of error.

References DLGLOBAL, LOGL_ERROR, LOGP, osmo_mnl::mnl_cb, osmo_mnl::mnls, osmo_mnl::ofd, OSMO_FD_READ, osmo_fd_register(), osmo_fd_setup(), osmo_mnl_fd_cb(), and osmo_mnl::priv.

Referenced by netdev_netns_ctx_init().