Loading...
Searching...
No Matches
netdev.h
Go to the documentation of this file.
#pragma once
#include <stddef.h>
#include <stdint.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/socket.h>
struct osmo_netdev;
typedef int (*osmo_netdev_ifupdown_ind_cb_t)(struct osmo_netdev *netdev, bool ifupdown);
typedef int (*osmo_netdev_dev_name_chg_cb_t)(struct osmo_netdev *netdev, const char *new_dev_name);
typedef int (*osmo_netdev_mtu_chg_cb_t)(struct osmo_netdev *netdev, unsigned int new_mtu);
struct osmo_netdev *osmo_netdev_alloc(void *ctx, const char *name);
void osmo_netdev_free(struct osmo_netdev *netdev);
int osmo_netdev_register(struct osmo_netdev *netdev);
int osmo_netdev_unregister(struct osmo_netdev *netdev);
bool osmo_netdev_is_registered(struct osmo_netdev *netdev);
const char *osmo_netdev_get_name(const struct osmo_netdev *netdev);
void osmo_netdev_set_priv_data(struct osmo_netdev *netdev, void *priv_data);
void *osmo_netdev_get_priv_data(struct osmo_netdev *netdev);
int osmo_netdev_set_ifindex(struct osmo_netdev *netdev, unsigned int ifindex);
unsigned int osmo_netdev_get_ifindex(const struct osmo_netdev *netdev);
const char *osmo_netdev_get_dev_name(const struct osmo_netdev *netdev);
int osmo_netdev_set_netns_name(struct osmo_netdev *netdev, const char *netns);
const char *osmo_netdev_get_netns_name(const struct osmo_netdev *netdev);
int osmo_netdev_set_mtu(struct osmo_netdev *netdev, uint32_t mtu);
void osmo_netdev_set_ifupdown_ind_cb(struct osmo_netdev *netdev, osmo_netdev_ifupdown_ind_cb_t ifupdown_ind_cb);
void osmo_netdev_set_dev_name_chg_cb(struct osmo_netdev *netdev, osmo_netdev_dev_name_chg_cb_t dev_name_chg_cb);
void osmo_netdev_set_mtu_chg_cb(struct osmo_netdev *netdev, osmo_netdev_mtu_chg_cb_t mtu_chg_cb);
int osmo_netdev_add_addr(struct osmo_netdev *netdev, const struct osmo_sockaddr *addr, uint8_t prefixlen);
int osmo_netdev_del_addr(struct osmo_netdev *netdev, const struct osmo_sockaddr *addr, uint8_t prefixlen);
int osmo_netdev_add_route(struct osmo_netdev *netdev, const struct osmo_sockaddr *dst_addr,
uint8_t dst_prefixlen, const struct osmo_sockaddr *gw_addr);
int osmo_netdev_ifupdown(struct osmo_netdev *netdev, bool ifupdown);
osmo_netdev_set_netns_name
int osmo_netdev_set_netns_name(struct osmo_netdev *netdev, const char *netns)
Set (specify) name of the network namespace where the network interface to manage is located.
Definition netdev.c:906
osmo_netdev_get_ifindex
unsigned int osmo_netdev_get_ifindex(const struct osmo_netdev *netdev)
Get interface index identifying the interface managed by netdev.
Definition netdev.c:888
osmo_netdev_alloc
struct osmo_netdev * osmo_netdev_alloc(void *ctx, const char *name)
Allocate a new netdev object.
Definition netdev.c:718
osmo_netdev_is_registered
bool osmo_netdev_is_registered(struct osmo_netdev *netdev)
Retrieve whether the netdev object is in "registered" state.
Definition netdev.c:806
osmo_netdev_set_priv_data
void osmo_netdev_set_priv_data(struct osmo_netdev *netdev, void *priv_data)
Set private user data pointer on the netdev object.
Definition netdev.c:814
osmo_netdev_del_addr
int osmo_netdev_del_addr(struct osmo_netdev *netdev, const struct osmo_sockaddr *addr, uint8_t prefixlen)
Remove IP address from netdev interface.
Definition netdev.c:1036
osmo_netdev_set_ifindex
int osmo_netdev_set_ifindex(struct osmo_netdev *netdev, unsigned int ifindex)
Set (specify) interface index identifying the network interface to manage.
Definition netdev.c:876
osmo_netdev_get_priv_data
void * osmo_netdev_get_priv_data(struct osmo_netdev *netdev)
Get private user data pointer from the netdev object.
Definition netdev.c:823
osmo_netdev_add_route
int osmo_netdev_add_route(struct osmo_netdev *netdev, const struct osmo_sockaddr *dst_addr, uint8_t dst_prefixlen, const struct osmo_sockaddr *gw_addr)
Add IP route to netdev interface.
Definition netdev.c:1069
osmo_netdev_set_mtu_chg_cb
void osmo_netdev_set_mtu_chg_cb(struct osmo_netdev *netdev, osmo_netdev_mtu_chg_cb_t mtu_chg_cb)
Set mtu_chg_cb callback, called when a change in the network name is detected.
Definition netdev.c:850
osmo_netdev_get_dev_name
const char * osmo_netdev_get_dev_name(const struct osmo_netdev *netdev)
Get name used to name the network interface created by the netdev object.
Definition netdev.c:930
osmo_netdev_add_addr
int osmo_netdev_add_addr(struct osmo_netdev *netdev, const struct osmo_sockaddr *addr, uint8_t prefixlen)
Add IP address to netdev interface.
Definition netdev.c:1004
osmo_netdev_unregister
int osmo_netdev_unregister(struct osmo_netdev *netdev)
Unregister the netdev object (stop managing /moniutoring the interface).
Definition netdev.c:789
osmo_netdev_set_ifupdown_ind_cb
void osmo_netdev_set_ifupdown_ind_cb(struct osmo_netdev *netdev, osmo_netdev_ifupdown_ind_cb_t ifupdown_ind_cb)
Set ifupdown_ind_cb callback, called when the link status (UP/DOWN) changes.
Definition netdev.c:832
osmo_netdev_get_netns_name
const char * osmo_netdev_get_netns_name(const struct osmo_netdev *netdev)
Get name of network namespace used when opening the netdev interface.
Definition netdev.c:918
osmo_netdev_set_dev_name_chg_cb
void osmo_netdev_set_dev_name_chg_cb(struct osmo_netdev *netdev, osmo_netdev_dev_name_chg_cb_t dev_name_chg_cb)
Set dev_name_chg_cb callback, called when a change in the network name is detected.
Definition netdev.c:841
osmo_netdev_set_mtu
int osmo_netdev_set_mtu(struct osmo_netdev *netdev, uint32_t mtu)
Set the MTU of the network interface.
Definition netdev.c:941
osmo_netdev_get_name
const char * osmo_netdev_get_name(const struct osmo_netdev *netdev)
Get name used to identify the netdev object.
Definition netdev.c:859
osmo_netdev_register
int osmo_netdev_register(struct osmo_netdev *netdev)
Start managing the network device referenced by the netdev object.
Definition netdev.c:749
osmo_netdev_free
void osmo_netdev_free(struct osmo_netdev *netdev)
Free an allocated netdev object.
Definition netdev.c:735
osmo_netdev_ifupdown
int osmo_netdev_ifupdown(struct osmo_netdev *netdev, bool ifupdown)
Bring netdev interface UP or DOWN.
Definition netdev.c:972
name
char name[32]
source file name
Definition gsmtap.h:11
msgb.h
osmo_netdev_ifupdown_ind_cb_t
int(* osmo_netdev_ifupdown_ind_cb_t)(struct osmo_netdev *netdev, bool ifupdown)
Definition netdev.h:14
osmo_netdev_mtu_chg_cb_t
int(* osmo_netdev_mtu_chg_cb_t)(struct osmo_netdev *netdev, unsigned int new_mtu)
Definition netdev.h:16
osmo_netdev_dev_name_chg_cb_t
int(* osmo_netdev_dev_name_chg_cb_t)(struct osmo_netdev *netdev, const char *new_dev_name)
Definition netdev.h:15
socket.h
Osmocom socket convenience functions.
osmo_netdev
Definition netdev.c:259
osmo_netdev::dev_name_chg_cb
osmo_netdev_dev_name_chg_cb_t dev_name_chg_cb
Definition netdev.c:288
osmo_netdev::mtu_chg_cb
osmo_netdev_mtu_chg_cb_t mtu_chg_cb
Definition netdev.c:291
osmo_netdev::ifindex
unsigned int ifindex
Definition netdev.c:270
osmo_netdev::priv_data
void * priv_data
Definition netdev.c:279
osmo_netdev::ifupdown_ind_cb
osmo_netdev_ifupdown_ind_cb_t ifupdown_ind_cb
Definition netdev.c:285
osmo_sockaddr
Definition socket.h:33