Pau Espin Pedrol | 9d0321d | 2023-01-24 17:33:06 +0100 | [diff] [blame] | 1 | /*! \file netdev.h |
| 2 | * network device (interface) convenience functions. */ |
| 3 | |
| 4 | #pragma once |
| 5 | #if (!EMBEDDED) |
| 6 | |
| 7 | #include <stddef.h> |
| 8 | #include <stdint.h> |
| 9 | |
| 10 | #include <osmocom/core/msgb.h> |
| 11 | #include <osmocom/core/socket.h> |
| 12 | |
| 13 | struct osmo_netdev; |
| 14 | |
| 15 | typedef int (*osmo_netdev_ifupdown_ind_cb_t)(struct osmo_netdev *netdev, bool ifupdown); |
| 16 | typedef int (*osmo_netdev_dev_name_chg_cb_t)(struct osmo_netdev *netdev, const char *new_dev_name); |
| 17 | typedef int (*osmo_netdev_mtu_chg_cb_t)(struct osmo_netdev *netdev, unsigned int new_mtu); |
| 18 | |
| 19 | struct osmo_netdev *osmo_netdev_alloc(void *ctx, const char *name); |
| 20 | void osmo_netdev_free(struct osmo_netdev *netdev); |
| 21 | |
| 22 | int osmo_netdev_register(struct osmo_netdev *netdev); |
| 23 | int osmo_netdev_unregister(struct osmo_netdev *netdev); |
| 24 | bool osmo_netdev_is_registered(struct osmo_netdev *netdev); |
| 25 | |
| 26 | const char *osmo_netdev_get_name(const struct osmo_netdev *netdev); |
| 27 | |
| 28 | void osmo_netdev_set_priv_data(struct osmo_netdev *netdev, void *priv_data); |
| 29 | void *osmo_netdev_get_priv_data(struct osmo_netdev *netdev); |
| 30 | |
| 31 | int osmo_netdev_set_ifindex(struct osmo_netdev *netdev, unsigned int ifindex); |
| 32 | unsigned int osmo_netdev_get_ifindex(const struct osmo_netdev *netdev); |
| 33 | |
| 34 | const char *osmo_netdev_get_dev_name(const struct osmo_netdev *netdev); |
| 35 | |
| 36 | int osmo_netdev_set_netns_name(struct osmo_netdev *netdev, const char *netns); |
| 37 | const char *osmo_netdev_get_netns_name(const struct osmo_netdev *netdev); |
| 38 | |
| 39 | void osmo_netdev_set_ifupdown_ind_cb(struct osmo_netdev *netdev, osmo_netdev_ifupdown_ind_cb_t ifupdown_ind_cb); |
| 40 | void osmo_netdev_set_dev_name_chg_cb(struct osmo_netdev *netdev, osmo_netdev_dev_name_chg_cb_t dev_name_chg_cb); |
| 41 | void osmo_netdev_set_mtu_chg_cb(struct osmo_netdev *netdev, osmo_netdev_mtu_chg_cb_t mtu_chg_cb); |
| 42 | |
| 43 | int osmo_netdev_add_addr(struct osmo_netdev *netdev, const struct osmo_sockaddr *addr, uint8_t prefixlen); |
| 44 | int osmo_netdev_add_route(struct osmo_netdev *netdev, const struct osmo_sockaddr *dst_addr, |
| 45 | uint8_t dst_prefixlen, const struct osmo_sockaddr *gw_addr); |
| 46 | int osmo_netdev_ifupdown(struct osmo_netdev *netdev, bool ifupdown); |
| 47 | |
| 48 | #endif /* (!EMBEDDED) */ |
| 49 | /*! @} */ |