ConOpSys V2970  P004.07
ANVILEX control operating system
Classes | Macros | Typedefs | Enumerations | Functions | Variables
netif.h File Reference
#include "lwip/opt.h"
#include "lwip/err.h"
#include "lwip/ip_addr.h"
#include "lwip/def.h"
#include "lwip/pbuf.h"
#include "lwip/stats.h"
Include dependency graph for netif.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  netif
 
union  netif_ext_callback_args_t
 
struct  netif_ext_callback_args_t::link_changed_s
 
struct  netif_ext_callback_args_t::status_changed_s
 
struct  netif_ext_callback_args_t::ipv4_changed_s
 
struct  netif_ext_callback_args_t::ipv6_set_s
 
struct  netif_ext_callback_args_t::ipv6_addr_state_changed_s
 

Macros

#define ENABLE_LOOPBACK   (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
 
#define NETIF_MAX_HWADDR_LEN   6U
 
#define NETIF_NAMESIZE   6
 
#define NETIF_FLAG_UP   0x01U
 
#define NETIF_FLAG_BROADCAST   0x02U
 
#define NETIF_FLAG_LINK_UP   0x04U
 
#define NETIF_FLAG_ETHARP   0x08U
 
#define NETIF_FLAG_ETHERNET   0x10U
 
#define NETIF_FLAG_IGMP   0x20U
 
#define NETIF_FLAG_MLD6   0x40U
 
#define NETIF_ADDR_IDX_MAX   0x7F
 
#define LWIP_NETIF_USE_HINTS   0
 
#define NETIF_SET_CHECKSUM_CTRL(netif, chksumflags)
 
#define IF__NETIF_CHECKSUM_ENABLED(netif, chksumflag)
 
#define NETIF_FOREACH(netif)   for ((netif) = netif_list; (netif) != NULL; (netif) = (netif)->next)
 
#define netif_set_flags(netif, set_flags)   do { (netif)->flags = (u8_t)((netif)->flags | (set_flags)); } while(0)
 
#define netif_clear_flags(netif, clr_flags)   do { (netif)->flags = (u8_t)((netif)->flags & (u8_t)(~(clr_flags) & 0xff)); } while(0)
 
#define netif_is_flag_set(nefif, flag)   (((netif)->flags & (flag)) != 0)
 
#define netif_is_up(netif)   (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)
 
#define netif_is_link_up(netif)   (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)
 
#define NETIF_SET_HINTS(netif, netifhint)
 
#define NETIF_RESET_HINTS(netif)
 
#define netif_get_index(netif)   ((u8_t)((netif)->num + 1))
 
#define NETIF_NO_INDEX   (0)
 
#define LWIP_NSC_NONE   0x0000
 
#define LWIP_NSC_NETIF_ADDED   0x0001
 
#define LWIP_NSC_NETIF_REMOVED   0x0002
 
#define LWIP_NSC_LINK_CHANGED   0x0004
 
#define LWIP_NSC_STATUS_CHANGED   0x0008
 
#define LWIP_NSC_IPV4_ADDRESS_CHANGED   0x0010
 
#define LWIP_NSC_IPV4_GATEWAY_CHANGED   0x0020
 
#define LWIP_NSC_IPV4_NETMASK_CHANGED   0x0040
 
#define LWIP_NSC_IPV4_SETTINGS_CHANGED   0x0080
 
#define LWIP_NSC_IPV6_SET   0x0100
 
#define LWIP_NSC_IPV6_ADDR_STATE_CHANGED   0x0200
 
#define NETIF_DECLARE_EXT_CALLBACK(name)
 
#define netif_add_ext_callback(callback, fn)
 
#define netif_remove_ext_callback(callback)
 
#define netif_invoke_ext_callback(netif, reason, args)
 

Typedefs

typedef err_t(* netif_init_fn) (struct netif *netif)
 
typedef err_t(* netif_input_fn) (struct pbuf *p, struct netif *inp)
 
typedef err_t(* netif_linkoutput_fn) (struct netif *netif, struct pbuf *p)
 
typedef void(* netif_status_callback_fn) (struct netif *netif)
 
typedef u8_t netif_addr_idx_t
 
typedef u16_t netif_nsc_reason_t
 
typedef void(* netif_ext_callback_fn) (struct netif *netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t *args)
 

Enumerations

enum  lwip_internal_netif_client_data_index { LWIP_NETIF_CLIENT_DATA_INDEX_MAX }
 
enum  netif_mac_filter_action { NETIF_DEL_MAC_FILTER = 0 , NETIF_ADD_MAC_FILTER = 1 }
 

Functions

void netif_init (void)
 
struct netifnetif_add_noaddr (struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
 
struct netifnetif_add (struct netif *netif, void *state, netif_init_fn init, netif_input_fn input)
 
void netif_remove (struct netif *netif)
 
struct netifnetif_find (const char *name)
 
void netif_set_default (struct netif *netif)
 
void netif_set_up (struct netif *netif)
 
void netif_set_down (struct netif *netif)
 
void netif_set_link_up (struct netif *netif)
 
void netif_set_link_down (struct netif *netif)
 
err_t netif_input (struct pbuf *p, struct netif *inp)
 
u8_t netif_name_to_index (const char *name)
 
char * netif_index_to_name (u8_t idx, char *name)
 
struct netifnetif_get_by_index (u8_t idx)
 

Variables

struct netifnetif_list
 
struct netifnetif_default
 

Detailed Description

netif API (to be used from TCPIP thread)

Macro Definition Documentation

◆ ENABLE_LOOPBACK

#define ENABLE_LOOPBACK   (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)

◆ IF__NETIF_CHECKSUM_ENABLED

#define IF__NETIF_CHECKSUM_ENABLED (   netif,
  chksumflag 
)

◆ LWIP_NETIF_USE_HINTS

#define LWIP_NETIF_USE_HINTS   0

◆ LWIP_NSC_IPV4_ADDRESS_CHANGED

#define LWIP_NSC_IPV4_ADDRESS_CHANGED   0x0010

IPv4 address has changed

◆ LWIP_NSC_IPV4_GATEWAY_CHANGED

#define LWIP_NSC_IPV4_GATEWAY_CHANGED   0x0020

IPv4 gateway has changed

◆ LWIP_NSC_IPV4_NETMASK_CHANGED

#define LWIP_NSC_IPV4_NETMASK_CHANGED   0x0040

IPv4 netmask has changed

◆ LWIP_NSC_IPV4_SETTINGS_CHANGED

#define LWIP_NSC_IPV4_SETTINGS_CHANGED   0x0080

called AFTER IPv4 address/gateway/netmask changes have been applied

◆ LWIP_NSC_IPV6_ADDR_STATE_CHANGED

#define LWIP_NSC_IPV6_ADDR_STATE_CHANGED   0x0200

IPv6 address state has changed

◆ LWIP_NSC_IPV6_SET

#define LWIP_NSC_IPV6_SET   0x0100

IPv6 address was added

◆ LWIP_NSC_LINK_CHANGED

#define LWIP_NSC_LINK_CHANGED   0x0004

link changed

◆ LWIP_NSC_NETIF_ADDED

#define LWIP_NSC_NETIF_ADDED   0x0001

netif was added. arg: NULL. Called AFTER netif was added.

◆ LWIP_NSC_NETIF_REMOVED

#define LWIP_NSC_NETIF_REMOVED   0x0002

netif was removed. arg: NULL. Called BEFORE netif is removed.

◆ LWIP_NSC_NONE

#define LWIP_NSC_NONE   0x0000

◆ LWIP_NSC_STATUS_CHANGED

#define LWIP_NSC_STATUS_CHANGED   0x0008

netif administrative status changed.
up is called AFTER netif is set up.
down is called BEFORE the netif is actually set down.

◆ netif_add_ext_callback

#define netif_add_ext_callback (   callback,
  fn 
)

◆ NETIF_ADDR_IDX_MAX

#define NETIF_ADDR_IDX_MAX   0x7F

◆ netif_clear_flags

#define netif_clear_flags (   netif,
  clr_flags 
)    do { (netif)->flags = (u8_t)((netif)->flags & (u8_t)(~(clr_flags) & 0xff)); } while(0)

◆ NETIF_DECLARE_EXT_CALLBACK

#define NETIF_DECLARE_EXT_CALLBACK (   name)

◆ NETIF_FOREACH

#define NETIF_FOREACH (   netif)    for ((netif) = netif_list; (netif) != NULL; (netif) = (netif)->next)

◆ netif_get_index

#define netif_get_index (   netif)    ((u8_t)((netif)->num + 1))

◆ netif_invoke_ext_callback

#define netif_invoke_ext_callback (   netif,
  reason,
  args 
)

◆ netif_is_flag_set

#define netif_is_flag_set (   nefif,
  flag 
)    (((netif)->flags & (flag)) != 0)

◆ netif_is_link_up

#define netif_is_link_up (   netif)    (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)

Ask if a link is up

◆ NETIF_MAX_HWADDR_LEN

#define NETIF_MAX_HWADDR_LEN   6U

Must be the maximum of all used hardware address lengths across all types of interfaces in use. This does not have to be changed, normally.

◆ NETIF_NAMESIZE

#define NETIF_NAMESIZE   6

The size of a fully constructed netif name which the netif can be identified by in APIs. Composed of 2 chars, 3 (max) digits, and 1 \0

◆ NETIF_NO_INDEX

#define NETIF_NO_INDEX   (0)

◆ netif_remove_ext_callback

#define netif_remove_ext_callback (   callback)

◆ NETIF_RESET_HINTS

#define NETIF_RESET_HINTS (   netif)

◆ NETIF_SET_CHECKSUM_CTRL

#define NETIF_SET_CHECKSUM_CTRL (   netif,
  chksumflags 
)

◆ netif_set_flags

#define netif_set_flags (   netif,
  set_flags 
)    do { (netif)->flags = (u8_t)((netif)->flags | (set_flags)); } while(0)

◆ NETIF_SET_HINTS

#define NETIF_SET_HINTS (   netif,
  netifhint 
)

Typedef Documentation

◆ netif_addr_idx_t

◆ netif_init_fn

typedef err_t(* netif_init_fn) (struct netif *netif)

Function prototype for netif init functions. Set up flags and output/linkoutput callback functions in this function.

Parameters
netifThe netif to initialise

◆ netif_input_fn

typedef err_t(* netif_input_fn) (struct pbuf *p, struct netif *inp)

Function prototype for netif->input functions. This function is saved as 'input' callback function in the netif struct. Call it when a packet has been received.

Parameters
pThe received packet, copied into a pbuf
inpThe netif which received the packet
Returns
ERR_OK if the packet was handled != ERR_OK is the packet was NOT handled, in this case, the caller has to free the pbuf

◆ netif_linkoutput_fn

typedef err_t(* netif_linkoutput_fn) (struct netif *netif, struct pbuf *p)

Function prototype for netif->linkoutput functions. Only used for ethernet netifs. This function is called by ARP when a packet shall be sent.

Parameters
netifThe netif which shall send a packet
pThe packet to send (raw ethernet packet)

◆ netif_status_callback_fn

typedef void(* netif_status_callback_fn) (struct netif *netif)

Function prototype for netif status- or link-callback functions.

Enumeration Type Documentation

◆ lwip_internal_netif_client_data_index

Enumerator
LWIP_NETIF_CLIENT_DATA_INDEX_MAX 

◆ netif_mac_filter_action

MAC Filter Actions, these are passed to a netif's igmp_mac_filter or mld_mac_filter callback function.

Enumerator
NETIF_DEL_MAC_FILTER 

Delete a filter entry

NETIF_ADD_MAC_FILTER 

Add a filter entry

Function Documentation

◆ netif_init()

void netif_init ( void  )

References IP_ADDR6_HOST, netif_add(), netif_set_link_up(), netif_set_up(), NULL, and tcpip_input().

Referenced by lwip_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ netif_input()

err_t netif_input ( struct pbuf p,
struct netif inp 
)

Forwards a received packet for input processing with ethernet_input() or ip_input() depending on netif flags. Don't call directly, pass to netif_add() and call netif->input(). Only works if the netif driver correctly sets NETIF_FLAG_ETHARP and/or NETIF_FLAG_ETHERNET flag!

References netif::flags, LWIP_ASSERT, LWIP_ASSERT_CORE_LOCKED, NETIF_FLAG_ETHARP, NETIF_FLAG_ETHERNET, and NULL.

Variable Documentation

◆ netif_default

struct netif* netif_default
extern

The default network interface.

Referenced by netif_add(), netif_remove(), and netif_set_default().

◆ netif_list

struct netif* netif_list
extern

The list of network interfaces.

Referenced by netif_add(), and netif_remove().