Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
net_if.h File Reference

Public API for network interface. More...

#include <zephyr/device.h>
#include <zephyr/sys/slist.h>
#include <zephyr/sys/iterable_sections.h>
#include <zephyr/net/net_core.h>
#include <zephyr/net/hostname.h>
#include <zephyr/net/net_linkaddr.h>
#include <zephyr/net/net_ip.h>
#include <zephyr/net/net_l2.h>
#include <zephyr/net/net_stats.h>
#include <zephyr/net/net_timeout.h>
#include <zephyr/net/prometheus/collector.h>
#include <zephyr/syscalls/net_if.h>

Go to the source code of this file.

Data Structures

struct  net_if_addr
 Network Interface unicast IP addresses. More...
 
struct  net_if_mcast_addr
 Network Interface multicast IP addresses. More...
 
struct  net_if_ipv6_prefix
 Network Interface IPv6 prefixes. More...
 
struct  net_if_router
 Information about routers in the system. More...
 
struct  net_if_ipv6
 IPv6 configuration. More...
 
struct  net_if_addr_ipv4
 Network Interface unicast IPv4 address and netmask. More...
 
struct  net_if_ipv4
 IPv4 configuration. More...
 
struct  net_if_ip
 Network interface IP address configuration. More...
 
struct  net_if_config
 IP and other configuration related data for network interface. More...
 
struct  net_traffic_class
 Network traffic class. More...
 
struct  net_if_dev
 Network Interface Device structure. More...
 
struct  net_if
 Network Interface structure. More...
 
struct  net_if_mcast_monitor
 Multicast monitor handler struct. More...
 
struct  net_if_link_cb
 Link callback handler struct. More...
 

Macros

#define NET_DEVICE_INIT(dev_id, name, init_fn, pm, data, config, prio, api, l2, l2_ctx_type, mtu)
 Create a network interface and bind it to network device.
 
#define NET_DEVICE_DT_DEFINE(node_id, init_fn, pm, data, config, prio, api, l2, l2_ctx_type, mtu)
 Like NET_DEVICE_INIT but taking metadata from a devicetree node.
 
#define NET_DEVICE_DT_INST_DEFINE(inst, ...)
 Like NET_DEVICE_DT_DEFINE for an instance of a DT_DRV_COMPAT compatible.
 
#define NET_DEVICE_INIT_INSTANCE(dev_id, name, instance, init_fn, pm, data, config, prio, api, l2, l2_ctx_type, mtu)
 Create multiple network interfaces and bind them to network device.
 
#define NET_DEVICE_DT_DEFINE_INSTANCE(node_id, instance, init_fn, pm, data, config, prio, api, l2, l2_ctx_type, mtu)
 Like NET_DEVICE_OFFLOAD_INIT but taking metadata from a devicetree.
 
#define NET_DEVICE_DT_INST_DEFINE_INSTANCE(inst, ...)
 Like NET_DEVICE_DT_DEFINE_INSTANCE for an instance of a DT_DRV_COMPAT compatible.
 
#define NET_DEVICE_OFFLOAD_INIT(dev_id, name, init_fn, pm, data, config, prio, api, mtu)
 Create a offloaded network interface and bind it to network device.
 
#define NET_DEVICE_DT_OFFLOAD_DEFINE(node_id, init_fn, pm, data, config, prio, api, mtu)
 Like NET_DEVICE_OFFLOAD_INIT but taking metadata from a devicetree node.
 
#define NET_DEVICE_DT_INST_OFFLOAD_DEFINE(inst, ...)
 Like NET_DEVICE_DT_OFFLOAD_DEFINE for an instance of a DT_DRV_COMPAT compatible.
 
#define NET_IFACE_COUNT(_dst)
 Count the number of network interfaces.
 

Typedefs

typedef int(* net_socket_create_t) (int, int, int)
 A function prototype to create an offloaded socket.
 
typedef void(* net_if_ip_addr_cb_t) (struct net_if *iface, struct net_if_addr *addr, void *user_data)
 Callback used while iterating over network interface IP addresses.
 
typedef void(* net_if_ip_maddr_cb_t) (struct net_if *iface, struct net_if_mcast_addr *maddr, void *user_data)
 Callback used while iterating over network interface multicast IP addresses.
 
typedef void(* net_if_mcast_callback_t) (struct net_if *iface, const struct net_addr *addr, bool is_joined)
 Define a callback that is called whenever a IPv6 or IPv4 multicast address group is joined or left.
 
typedef void(* net_if_link_callback_t) (struct net_if *iface, struct net_linkaddr *dst, int status)
 Define callback that is called after a network packet has been sent.
 
typedef void(* net_if_cb_t) (struct net_if *iface, void *user_data)
 Callback used while iterating over network interfaces.
 

Enumerations

enum  net_if_flag {
  NET_IF_UP , NET_IF_POINTOPOINT , NET_IF_PROMISC , NET_IF_NO_AUTO_START ,
  NET_IF_SUSPENDED , NET_IF_FORWARD_MULTICASTS , NET_IF_IPV4 , NET_IF_IPV6 ,
  NET_IF_RUNNING , NET_IF_LOWER_UP , NET_IF_DORMANT , NET_IF_IPV6_NO_ND ,
  NET_IF_IPV6_NO_MLD , NET_IF_NO_TX_LOCK
}
 Network interface flags. More...
 
enum  net_if_oper_state {
  NET_IF_OPER_UNKNOWN , NET_IF_OPER_NOTPRESENT , NET_IF_OPER_DOWN , NET_IF_OPER_LOWERLAYERDOWN ,
  NET_IF_OPER_TESTING , NET_IF_OPER_DORMANT , NET_IF_OPER_UP
}
 Network interface operational status (RFC 2863). More...
 
enum  net_if_checksum_type {
  NET_IF_CHECKSUM_IPV4_HEADER = NET_IF_CHECKSUM_IPV4_HEADER_BIT , NET_IF_CHECKSUM_IPV4_TCP , NET_IF_CHECKSUM_IPV4_UDP , NET_IF_CHECKSUM_IPV4_ICMP = NET_IF_CHECKSUM_IPV4_ICMP_BIT ,
  NET_IF_CHECKSUM_IPV6_HEADER = NET_IF_CHECKSUM_IPV6_HEADER_BIT , NET_IF_CHECKSUM_IPV6_TCP , NET_IF_CHECKSUM_IPV6_UDP , NET_IF_CHECKSUM_IPV6_ICMP = NET_IF_CHECKSUM_IPV6_ICMP_BIT
}
 Type of checksum for which support in the interface will be queried. More...
 

Functions

static void net_if_flag_set (struct net_if *iface, enum net_if_flag value)
 Set a value in network interface flags.
 
static bool net_if_flag_test_and_set (struct net_if *iface, enum net_if_flag value)
 Test and set a value in network interface flags.
 
static void net_if_flag_clear (struct net_if *iface, enum net_if_flag value)
 Clear a value in network interface flags.
 
static bool net_if_flag_test_and_clear (struct net_if *iface, enum net_if_flag value)
 Test and clear a value in network interface flags.
 
static bool net_if_flag_is_set (struct net_if *iface, enum net_if_flag value)
 Check if a value in network interface flags is set.
 
static enum net_if_oper_state net_if_oper_state_set (struct net_if *iface, enum net_if_oper_state oper_state)
 Set an operational state on an interface.
 
static enum net_if_oper_state net_if_oper_state (struct net_if *iface)
 Get an operational state of an interface.
 
enum net_verdict net_if_send_data (struct net_if *iface, struct net_pkt *pkt)
 Send a packet through a net iface.
 
static const struct net_l2net_if_l2 (struct net_if *iface)
 Get a pointer to the interface L2.
 
enum net_verdict net_if_recv_data (struct net_if *iface, struct net_pkt *pkt)
 Input a packet through a net iface.
 
static void * net_if_l2_data (struct net_if *iface)
 Get a pointer to the interface L2 private data.
 
static const struct devicenet_if_get_device (struct net_if *iface)
 Get an network interface's device.
 
void net_if_queue_tx (struct net_if *iface, struct net_pkt *pkt)
 Queue a packet to the net interface TX queue.
 
static bool net_if_is_ip_offloaded (struct net_if *iface)
 Return the IP offload status.
 
bool net_if_is_offloaded (struct net_if *iface)
 Return offload status of a given network interface.
 
static struct net_offload * net_if_offload (struct net_if *iface)
 Return the IP offload plugin.
 
static bool net_if_is_socket_offloaded (struct net_if *iface)
 Return the socket offload status.
 
static void net_if_socket_offload_set (struct net_if *iface, net_socket_create_t socket_offload)
 Set the function to create an offloaded socket.
 
static net_socket_create_t net_if_socket_offload (struct net_if *iface)
 Return the function to create an offloaded socket.
 
static struct net_linkaddrnet_if_get_link_addr (struct net_if *iface)
 Get an network interface's link address.
 
static struct net_if_confignet_if_get_config (struct net_if *iface)
 Return network configuration for this network interface.
 
static void net_if_start_dad (struct net_if *iface)
 Start duplicate address detection procedure.
 
void net_if_start_rs (struct net_if *iface)
 Start neighbor discovery and send router solicitation message.
 
static void net_if_stop_rs (struct net_if *iface)
 Stop neighbor discovery.
 
static void net_if_nbr_reachability_hint (struct net_if *iface, const struct in6_addr *ipv6_addr)
 Provide a reachability hint for IPv6 Neighbor Discovery.
 
static int net_if_set_link_addr (struct net_if *iface, uint8_t *addr, uint8_t len, enum net_link_type type)
 Set a network interface's link address.
 
static uint16_t net_if_get_mtu (struct net_if *iface)
 Get an network interface's MTU.
 
static void net_if_set_mtu (struct net_if *iface, uint16_t mtu)
 Set an network interface's MTU.
 
static void net_if_addr_set_lf (struct net_if_addr *ifaddr, bool is_infinite)
 Set the infinite status of the network interface address.
 
struct net_ifnet_if_get_by_link_addr (struct net_linkaddr *ll_addr)
 Get an interface according to link layer address.
 
struct net_ifnet_if_lookup_by_dev (const struct device *dev)
 Find an interface from it's related device.
 
static struct net_if_confignet_if_config_get (struct net_if *iface)
 Get network interface IP config.
 
void net_if_router_rm (struct net_if_router *router)
 Remove a router from the system.
 
void net_if_set_default (struct net_if *iface)
 Set the default network interface.
 
struct net_ifnet_if_get_default (void)
 Get the default network interface.
 
struct net_ifnet_if_get_first_by_type (const struct net_l2 *l2)
 Get the first network interface according to its type.
 
struct net_ifnet_if_get_first_up (void)
 Get the first network interface which is up.
 
int net_if_config_ipv6_get (struct net_if *iface, struct net_if_ipv6 **ipv6)
 Allocate network interface IPv6 config.
 
int net_if_config_ipv6_put (struct net_if *iface)
 Release network interface IPv6 config.
 
struct net_if_addrnet_if_ipv6_addr_lookup (const struct in6_addr *addr, struct net_if **iface)
 Check if this IPv6 address belongs to one of the interfaces.
 
struct net_if_addrnet_if_ipv6_addr_lookup_by_iface (struct net_if *iface, struct in6_addr *addr)
 Check if this IPv6 address belongs to this specific interfaces.
 
int net_if_ipv6_addr_lookup_by_index (const struct in6_addr *addr)
 Check if this IPv6 address belongs to one of the interface indices.
 
struct net_if_addrnet_if_ipv6_addr_add (struct net_if *iface, struct in6_addr *addr, enum net_addr_type addr_type, uint32_t vlifetime)
 Add a IPv6 address to an interface.
 
bool net_if_ipv6_addr_add_by_index (int index, struct in6_addr *addr, enum net_addr_type addr_type, uint32_t vlifetime)
 Add a IPv6 address to an interface by index.
 
void net_if_ipv6_addr_update_lifetime (struct net_if_addr *ifaddr, uint32_t vlifetime)
 Update validity lifetime time of an IPv6 address.
 
bool net_if_ipv6_addr_rm (struct net_if *iface, const struct in6_addr *addr)
 Remove an IPv6 address from an interface.
 
bool net_if_ipv6_addr_rm_by_index (int index, const struct in6_addr *addr)
 Remove an IPv6 address from an interface by index.
 
void net_if_ipv6_addr_foreach (struct net_if *iface, net_if_ip_addr_cb_t cb, void *user_data)
 Go through all IPv6 addresses on a network interface and call callback for each used address.
 
struct net_if_mcast_addrnet_if_ipv6_maddr_add (struct net_if *iface, const struct in6_addr *addr)
 Add a IPv6 multicast address to an interface.
 
bool net_if_ipv6_maddr_rm (struct net_if *iface, const struct in6_addr *addr)
 Remove an IPv6 multicast address from an interface.
 
void net_if_ipv6_maddr_foreach (struct net_if *iface, net_if_ip_maddr_cb_t cb, void *user_data)
 Go through all IPv6 multicast addresses on a network interface and call callback for each used address.
 
struct net_if_mcast_addrnet_if_ipv6_maddr_lookup (const struct in6_addr *addr, struct net_if **iface)
 Check if this IPv6 multicast address belongs to a specific interface or one of the interfaces.
 
void net_if_mcast_mon_register (struct net_if_mcast_monitor *mon, struct net_if *iface, net_if_mcast_callback_t cb)
 Register a multicast monitor.
 
void net_if_mcast_mon_unregister (struct net_if_mcast_monitor *mon)
 Unregister a multicast monitor.
 
void net_if_mcast_monitor (struct net_if *iface, const struct net_addr *addr, bool is_joined)
 Call registered multicast monitors.
 
void net_if_ipv6_maddr_join (struct net_if *iface, struct net_if_mcast_addr *addr)
 Mark a given multicast address to be joined.
 
static bool net_if_ipv6_maddr_is_joined (struct net_if_mcast_addr *addr)
 Check if given multicast address is joined or not.
 
void net_if_ipv6_maddr_leave (struct net_if *iface, struct net_if_mcast_addr *addr)
 Mark a given multicast address to be left.
 
struct net_if_ipv6_prefixnet_if_ipv6_prefix_get (struct net_if *iface, const struct in6_addr *addr)
 Return prefix that corresponds to this IPv6 address.
 
struct net_if_ipv6_prefixnet_if_ipv6_prefix_lookup (struct net_if *iface, struct in6_addr *addr, uint8_t len)
 Check if this IPv6 prefix belongs to this interface.
 
struct net_if_ipv6_prefixnet_if_ipv6_prefix_add (struct net_if *iface, struct in6_addr *prefix, uint8_t len, uint32_t lifetime)
 Add a IPv6 prefix to an network interface.
 
bool net_if_ipv6_prefix_rm (struct net_if *iface, struct in6_addr *addr, uint8_t len)
 Remove an IPv6 prefix from an interface.
 
static void net_if_ipv6_prefix_set_lf (struct net_if_ipv6_prefix *prefix, bool is_infinite)
 Set the infinite status of the prefix.
 
void net_if_ipv6_prefix_set_timer (struct net_if_ipv6_prefix *prefix, uint32_t lifetime)
 Set the prefix lifetime timer.
 
void net_if_ipv6_prefix_unset_timer (struct net_if_ipv6_prefix *prefix)
 Unset the prefix lifetime timer.
 
bool net_if_ipv6_addr_onlink (struct net_if **iface, struct in6_addr *addr)
 Check if this IPv6 address is part of the subnet of our network interface.
 
static struct in6_addrnet_if_router_ipv6 (struct net_if_router *router)
 Get the IPv6 address of the given router.
 
struct net_if_routernet_if_ipv6_router_lookup (struct net_if *iface, struct in6_addr *addr)
 Check if IPv6 address is one of the routers configured in the system.
 
struct net_if_routernet_if_ipv6_router_find_default (struct net_if *iface, struct in6_addr *addr)
 Find default router for this IPv6 address.
 
void net_if_ipv6_router_update_lifetime (struct net_if_router *router, uint16_t lifetime)
 Update validity lifetime time of a router.
 
struct net_if_routernet_if_ipv6_router_add (struct net_if *iface, struct in6_addr *addr, uint16_t router_lifetime)
 Add IPv6 router to the system.
 
bool net_if_ipv6_router_rm (struct net_if_router *router)
 Remove IPv6 router from the system.
 
static uint8_t net_if_ipv6_get_hop_limit (struct net_if *iface)
 Get IPv6 hop limit specified for a given interface.
 
static void net_if_ipv6_set_hop_limit (struct net_if *iface, uint8_t hop_limit)
 Set the default IPv6 hop limit of a given interface.
 
static uint8_t net_if_ipv6_get_mcast_hop_limit (struct net_if *iface)
 Get IPv6 multicast hop limit specified for a given interface.
 
static void net_if_ipv6_set_mcast_hop_limit (struct net_if *iface, uint8_t hop_limit)
 Set the default IPv6 multicast hop limit of a given interface.
 
static void net_if_ipv6_set_base_reachable_time (struct net_if *iface, uint32_t reachable_time)
 Set IPv6 reachable time for a given interface.
 
static uint32_t net_if_ipv6_get_reachable_time (struct net_if *iface)
 Get IPv6 reachable timeout specified for a given interface.
 
uint32_t net_if_ipv6_calc_reachable_time (struct net_if_ipv6 *ipv6)
 Calculate next reachable time value for IPv6 reachable time.
 
static void net_if_ipv6_set_reachable_time (struct net_if_ipv6 *ipv6)
 Set IPv6 reachable time for a given interface.
 
static void net_if_ipv6_set_retrans_timer (struct net_if *iface, uint32_t retrans_timer)
 Set IPv6 retransmit timer for a given interface.
 
static uint32_t net_if_ipv6_get_retrans_timer (struct net_if *iface)
 Get IPv6 retransmit timer specified for a given interface.
 
static const struct in6_addrnet_if_ipv6_select_src_addr (struct net_if *iface, const struct in6_addr *dst)
 Get a IPv6 source address that should be used when sending network data to destination.
 
static const struct in6_addrnet_if_ipv6_select_src_addr_hint (struct net_if *iface, const struct in6_addr *dst, int flags)
 Get a IPv6 source address that should be used when sending network data to destination.
 
static struct net_ifnet_if_ipv6_select_src_iface (const struct in6_addr *dst)
 Get a network interface that should be used when sending IPv6 network data to destination.
 
struct in6_addrnet_if_ipv6_get_ll (struct net_if *iface, enum net_addr_state addr_state)
 Get a IPv6 link local address in a given state.
 
struct in6_addrnet_if_ipv6_get_ll_addr (enum net_addr_state state, struct net_if **iface)
 Return link local IPv6 address from the first interface that has a link local address matching give state.
 
void net_if_ipv6_dad_failed (struct net_if *iface, const struct in6_addr *addr)
 Stop IPv6 Duplicate Address Detection (DAD) procedure if we find out that our IPv6 address is already in use.
 
struct in6_addrnet_if_ipv6_get_global_addr (enum net_addr_state state, struct net_if **iface)
 Return global IPv6 address from the first interface that has a global IPv6 address matching the given state.
 
int net_if_config_ipv4_get (struct net_if *iface, struct net_if_ipv4 **ipv4)
 Allocate network interface IPv4 config.
 
int net_if_config_ipv4_put (struct net_if *iface)
 Release network interface IPv4 config.
 
uint8_t net_if_ipv4_get_ttl (struct net_if *iface)
 Get IPv4 time-to-live value specified for a given interface.
 
void net_if_ipv4_set_ttl (struct net_if *iface, uint8_t ttl)
 Set IPv4 time-to-live value specified to a given interface.
 
uint8_t net_if_ipv4_get_mcast_ttl (struct net_if *iface)
 Get IPv4 multicast time-to-live value specified for a given interface.
 
void net_if_ipv4_set_mcast_ttl (struct net_if *iface, uint8_t ttl)
 Set IPv4 multicast time-to-live value specified to a given interface.
 
struct net_if_addrnet_if_ipv4_addr_lookup (const struct in_addr *addr, struct net_if **iface)
 Check if this IPv4 address belongs to one of the interfaces.
 
struct net_if_addrnet_if_ipv4_addr_add (struct net_if *iface, struct in_addr *addr, enum net_addr_type addr_type, uint32_t vlifetime)
 Add a IPv4 address to an interface.
 
bool net_if_ipv4_addr_rm (struct net_if *iface, const struct in_addr *addr)
 Remove a IPv4 address from an interface.
 
int net_if_ipv4_addr_lookup_by_index (const struct in_addr *addr)
 Check if this IPv4 address belongs to one of the interface indices.
 
bool net_if_ipv4_addr_add_by_index (int index, struct in_addr *addr, enum net_addr_type addr_type, uint32_t vlifetime)
 Add a IPv4 address to an interface by network interface index.
 
bool net_if_ipv4_addr_rm_by_index (int index, const struct in_addr *addr)
 Remove a IPv4 address from an interface by interface index.
 
void net_if_ipv4_addr_foreach (struct net_if *iface, net_if_ip_addr_cb_t cb, void *user_data)
 Go through all IPv4 addresses on a network interface and call callback for each used address.
 
struct net_if_mcast_addrnet_if_ipv4_maddr_add (struct net_if *iface, const struct in_addr *addr)
 Add a IPv4 multicast address to an interface.
 
bool net_if_ipv4_maddr_rm (struct net_if *iface, const struct in_addr *addr)
 Remove an IPv4 multicast address from an interface.
 
void net_if_ipv4_maddr_foreach (struct net_if *iface, net_if_ip_maddr_cb_t cb, void *user_data)
 Go through all IPv4 multicast addresses on a network interface and call callback for each used address.
 
struct net_if_mcast_addrnet_if_ipv4_maddr_lookup (const struct in_addr *addr, struct net_if **iface)
 Check if this IPv4 multicast address belongs to a specific interface or one of the interfaces.
 
void net_if_ipv4_maddr_join (struct net_if *iface, struct net_if_mcast_addr *addr)
 Mark a given multicast address to be joined.
 
static bool net_if_ipv4_maddr_is_joined (struct net_if_mcast_addr *addr)
 Check if given multicast address is joined or not.
 
void net_if_ipv4_maddr_leave (struct net_if *iface, struct net_if_mcast_addr *addr)
 Mark a given multicast address to be left.
 
static struct in_addrnet_if_router_ipv4 (struct net_if_router *router)
 Get the IPv4 address of the given router.
 
struct net_if_routernet_if_ipv4_router_lookup (struct net_if *iface, struct in_addr *addr)
 Check if IPv4 address is one of the routers configured in the system.
 
struct net_if_routernet_if_ipv4_router_find_default (struct net_if *iface, struct in_addr *addr)
 Find default router for this IPv4 address.
 
struct net_if_routernet_if_ipv4_router_add (struct net_if *iface, struct in_addr *addr, bool is_default, uint16_t router_lifetime)
 Add IPv4 router to the system.
 
bool net_if_ipv4_router_rm (struct net_if_router *router)
 Remove IPv4 router from the system.
 
bool net_if_ipv4_addr_mask_cmp (struct net_if *iface, const struct in_addr *addr)
 Check if the given IPv4 address belongs to local subnet.
 
bool net_if_ipv4_is_addr_bcast (struct net_if *iface, const struct in_addr *addr)
 Check if the given IPv4 address is a broadcast address.
 
static struct net_ifnet_if_ipv4_select_src_iface (const struct in_addr *dst)
 Get a network interface that should be used when sending IPv4 network data to destination.
 
static const struct in_addrnet_if_ipv4_select_src_addr (struct net_if *iface, const struct in_addr *dst)
 Get a IPv4 source address that should be used when sending network data to destination.
 
struct in_addrnet_if_ipv4_get_ll (struct net_if *iface, enum net_addr_state addr_state)
 Get a IPv4 link local address in a given state.
 
struct in_addrnet_if_ipv4_get_global_addr (struct net_if *iface, enum net_addr_state addr_state)
 Get a IPv4 global address in a given state.
 
struct in_addr net_if_ipv4_get_netmask_by_addr (struct net_if *iface, const struct in_addr *addr)
 Get IPv4 netmask related to an address of an interface.
 
struct in_addr net_if_ipv4_get_netmask (struct net_if *iface)
 Get IPv4 netmask of an interface.
 
void net_if_ipv4_set_netmask (struct net_if *iface, const struct in_addr *netmask)
 Set IPv4 netmask for an interface.
 
bool net_if_ipv4_set_netmask_by_index (int index, const struct in_addr *netmask)
 Set IPv4 netmask for an interface index.
 
bool net_if_ipv4_set_netmask_by_addr_by_index (int index, const struct in_addr *addr, const struct in_addr *netmask)
 Set IPv4 netmask for an interface index for a given address.
 
bool net_if_ipv4_set_netmask_by_addr (struct net_if *iface, const struct in_addr *addr, const struct in_addr *netmask)
 Set IPv4 netmask for an interface index for a given address.
 
struct in_addr net_if_ipv4_get_gw (struct net_if *iface)
 Get IPv4 gateway of an interface.
 
void net_if_ipv4_set_gw (struct net_if *iface, const struct in_addr *gw)
 Set IPv4 gateway for an interface.
 
bool net_if_ipv4_set_gw_by_index (int index, const struct in_addr *gw)
 Set IPv4 gateway for an interface index.
 
struct net_ifnet_if_select_src_iface (const struct sockaddr *dst)
 Get a network interface that should be used when sending IPv6 or IPv4 network data to destination.
 
void net_if_register_link_cb (struct net_if_link_cb *link, net_if_link_callback_t cb)
 Register a link callback.
 
void net_if_unregister_link_cb (struct net_if_link_cb *link)
 Unregister a link callback.
 
void net_if_call_link_cb (struct net_if *iface, struct net_linkaddr *lladdr, int status)
 Call a link callback function.
 
bool net_if_need_calc_rx_checksum (struct net_if *iface, enum net_if_checksum_type chksum_type)
 Check if received network packet checksum calculation can be avoided or not.
 
bool net_if_need_calc_tx_checksum (struct net_if *iface, enum net_if_checksum_type chksum_type)
 Check if network packet checksum calculation can be avoided or not when sending the packet.
 
struct net_ifnet_if_get_by_index (int index)
 Get interface according to index.
 
int net_if_get_by_iface (struct net_if *iface)
 Get interface index according to pointer.
 
void net_if_foreach (net_if_cb_t cb, void *user_data)
 Go through all the network interfaces and call callback for each interface.
 
int net_if_up (struct net_if *iface)
 Bring interface up.
 
static bool net_if_is_up (struct net_if *iface)
 Check if interface is up and running.
 
int net_if_down (struct net_if *iface)
 Bring interface down.
 
static bool net_if_is_admin_up (struct net_if *iface)
 Check if interface was brought up by the administrator.
 
void net_if_carrier_on (struct net_if *iface)
 Underlying network device has detected the carrier (cable connected).
 
void net_if_carrier_off (struct net_if *iface)
 Underlying network device has lost the carrier (cable disconnected).
 
static bool net_if_is_carrier_ok (struct net_if *iface)
 Check if carrier is present on network device.
 
void net_if_dormant_on (struct net_if *iface)
 Mark interface as dormant.
 
void net_if_dormant_off (struct net_if *iface)
 Mark interface as not dormant.
 
static bool net_if_is_dormant (struct net_if *iface)
 Check if the interface is dormant.
 
static int net_if_set_promisc (struct net_if *iface)
 Set network interface into promiscuous mode.
 
static void net_if_unset_promisc (struct net_if *iface)
 Set network interface into normal mode.
 
static bool net_if_is_promisc (struct net_if *iface)
 Check if promiscuous mode is set or not.
 
static bool net_if_are_pending_tx_packets (struct net_if *iface)
 Check if there are any pending TX network data for a given network interface.
 
bool net_if_is_wifi (struct net_if *iface)
 Check if the network interface supports Wi-Fi.
 
struct net_ifnet_if_get_first_wifi (void)
 Get first Wi-Fi network interface.
 
struct net_ifnet_if_get_wifi_sta (void)
 Get Wi-Fi network station interface.
 
struct net_ifnet_if_get_wifi_sap (void)
 Get first Wi-Fi network Soft-AP interface.
 
int net_if_get_name (struct net_if *iface, char *buf, int len)
 Get network interface name.
 
int net_if_set_name (struct net_if *iface, const char *buf)
 Set network interface name.
 
int net_if_get_by_name (const char *name)
 Get interface index according to its name.
 

Detailed Description

Public API for network interface.