Microchip® Advanced Software Framework

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"

Data Structures

struct  netif
 Generic data structure used for all lwIP network interfaces. More...
 

Macros

#define ENABLE_LOOPBACK   (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
 
#define NETIF_FLAG_BROADCAST   0x02U
 If set, the netif has broadcast capability. More...
 
#define NETIF_FLAG_DHCP   0x08U
 If set, the interface is configured using DHCP. More...
 
#define NETIF_FLAG_ETHARP   0x20U
 If set, the netif is an ethernet device using ARP. More...
 
#define NETIF_FLAG_ETHERNET   0x40U
 If set, the netif is an ethernet device. More...
 
#define NETIF_FLAG_IGMP   0x80U
 If set, the netif has IGMP capability. More...
 
#define NETIF_FLAG_LINK_UP   0x10U
 If set, the interface has an active link (set by the network interface driver). More...
 
#define NETIF_FLAG_POINTTOPOINT   0x04U
 If set, the netif is one end of a point-to-point connection. More...
 
#define NETIF_FLAG_UP   0x01U
 Whether the network interface is 'up'. More...
 
#define NETIF_INIT_SNMP(netif, type, speed)
 
#define netif_is_link_up(netif)   (((netif)->flags & NETIF_FLAG_LINK_UP) ? (u8_t)1 : (u8_t)0)
 Ask if a link is up. More...
 
#define netif_is_up(netif)   (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)
 Ask if an interface is up. More...
 
#define NETIF_MAX_HWADDR_LEN   6U
 must be the maximum of all used hardware address lengths across all types of interfaces in use More...
 
#define NETIF_SET_HWADDRHINT(netif, hint)
 

Typedefs

typedef err_t(* netif_igmp_mac_filter_fn )(struct netif *netif, ip_addr_t *group, u8_t action)
 Function prototype for netif igmp_mac_filter functions. More...
 
typedef err_t(* netif_init_fn )(struct netif *netif)
 Function prototype for netif init functions. More...
 
typedef err_t(* netif_input_fn )(struct pbuf *p, struct netif *inp)
 Function prototype for netif->input functions. More...
 
typedef err_t(* netif_linkoutput_fn )(struct netif *netif, struct pbuf *p)
 Function prototype for netif->linkoutput functions. More...
 
typedef err_t(* netif_output_fn )(struct netif *netif, struct pbuf *p, ip_addr_t *ipaddr)
 Function prototype for netif->output functions. More...
 
typedef void(* netif_status_callback_fn )(struct netif *netif)
 Function prototype for netif status- or link-callback functions. More...
 

Functions

struct netifnetif_add (struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input)
 Add a network interface to the list of lwIP netifs. More...
 
struct netifnetif_find (char *name)
 Find a network interface by searching for its name. More...
 
void netif_init (void)
 
void netif_remove (struct netif *netif)
 Remove a network interface from the list of lwIP netifs. More...
 
void netif_set_addr (struct netif *netif, ip_addr_t *ipaddr, ip_addr_t *netmask, ip_addr_t *gw)
 Change IP address configuration for a network interface (including netmask and default gateway). More...
 
void netif_set_default (struct netif *netif)
 Set a network interface as the default network interface (used to output all packets for which no specific route is found) More...
 
void netif_set_down (struct netif *netif)
 Bring an interface down, disabling any traffic processing. More...
 
void netif_set_gw (struct netif *netif, ip_addr_t *gw)
 Change the default gateway for a network interface. More...
 
void netif_set_ipaddr (struct netif *netif, ip_addr_t *ipaddr)
 Change the IP address of a network interface. More...
 
void netif_set_link_down (struct netif *netif)
 Called by a driver when its link goes down. More...
 
void netif_set_link_up (struct netif *netif)
 Called by a driver when its link goes up. More...
 
void netif_set_netmask (struct netif *netif, ip_addr_t *netmask)
 Change the netmask of a network interface. More...
 
void netif_set_status_callback (struct netif *netif, netif_status_callback_fn status_callback)
 Set callback to be called when interface is brought up/down. More...
 
void netif_set_up (struct netif *netif)
 Bring an interface up, available for processing traffic. More...
 

Variables

struct netifnetif_default
 The default network interface. More...
 
struct netifnetif_list
 The list of network interfaces. More...
 

#define ENABLE_LOOPBACK   (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
#define NETIF_FLAG_BROADCAST   0x02U

If set, the netif has broadcast capability.

Set by the netif driver in its init function.

Referenced by ip4_addr_isbroadcast(), and ksz8851snl_low_level_init().

#define NETIF_FLAG_DHCP   0x08U

If set, the interface is configured using DHCP.

Set by the DHCP code when starting or stopping DHCP.

Referenced by ksz8851snl_low_level_init().

#define NETIF_FLAG_ETHARP   0x20U

If set, the netif is an ethernet device using ARP.

Set by the netif driver in its init function. Used to check input packet types and use of DHCP.

Referenced by ethernet_input(), ksz8851snl_low_level_init(), netif_set_down(), netif_set_link_up(), and netif_set_up().

#define NETIF_FLAG_ETHERNET   0x40U

If set, the netif is an ethernet device.

It might not use ARP or TCP/IP if it is used for PPPoE only.

#define NETIF_FLAG_IGMP   0x80U

If set, the netif has IGMP capability.

Set by the netif driver in its init function.

Referenced by ip_input(), netif_add(), netif_remove(), netif_set_link_up(), and netif_set_up().

#define NETIF_FLAG_LINK_UP   0x10U

If set, the interface has an active link (set by the network interface driver).

Either set by the netif driver in its init function (if the link is up at that time) or at a later point once the link comes up (if link detection is supported by the hardware).

Referenced by netif_set_link_down(), netif_set_link_up(), and netif_set_up().

#define NETIF_FLAG_POINTTOPOINT   0x04U

If set, the netif is one end of a point-to-point connection.

Set by the netif driver in its init function.

#define NETIF_FLAG_UP   0x01U

Whether the network interface is 'up'.

This is a software flag used to control whether this network interface is enabled and processes traffic. It is set by the startup code (for static IP configuration) or by dhcp/autoip when an address has been assigned.

Referenced by netif_set_down(), netif_set_link_up(), and netif_set_up().

#define NETIF_INIT_SNMP (   netif,
  type,
  speed 
)

Referenced by ethernetif_init().

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

Ask if a link is up.

#define netif_is_up (   netif)    (((netif)->flags & NETIF_FLAG_UP) ? (u8_t)1 : (u8_t)0)

Ask if an interface is up.

Referenced by ip_input(), ip_route(), netif_remove(), and status_callback().

#define NETIF_MAX_HWADDR_LEN   6U

must be the maximum of all used hardware address lengths across all types of interfaces in use

#define NETIF_SET_HWADDRHINT (   netif,
  hint 
)

Referenced by netif_add().

typedef err_t(* netif_igmp_mac_filter_fn)(struct netif *netif, ip_addr_t *group, u8_t action)

Function prototype for netif igmp_mac_filter functions.

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 initialize
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
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)
typedef err_t(* netif_output_fn)(struct netif *netif, struct pbuf *p, ip_addr_t *ipaddr)

Function prototype for netif->output functions.

Called by lwIP when a packet shall be sent. For ethernet netif, set this to 'etharp_output' and set 'linkoutput'.

Parameters
netifThe netif which shall send a packet
pThe packet to send (p->payload points to IP header)
ipaddrThe IP address to which the packet shall be sent
typedef void(* netif_status_callback_fn)(struct netif *netif)

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

struct netif* netif_add ( struct netif netif,
ip_addr_t ipaddr,
ip_addr_t netmask,
ip_addr_t gw,
void state,
netif_init_fn  init,
netif_input_fn  input 
)

Add a network interface to the list of lwIP netifs.

Parameters
netifa pre-allocated netif structure
ipaddrIP address for the new netif
netmasknetwork mask for the new netif
gwdefault gateway IP address for the new netif
stateopaque data passed to the new netif
initcallback function that initializes the interface
inputcallback function that is called to pass ingress packets up in the protocol layer stack.
Returns
netif, or NULL if failed.

References ERR_OK, netif::flags, netif::gw, netif::input, netif::ip_addr, ip_addr_debug_print, ip_addr_set_zero, LWIP_ASSERT, LWIP_DEBUGF, netif::name, NETIF_DEBUG, NETIF_FLAG_IGMP, netif_list, netif_num, netif_set_addr(), NETIF_SET_HWADDRHINT, netif::netmask, netif::next, NULL, netif::num, snmp_inc_iflist, netif::state, and netif::status_callback.

Referenced by ethernet_configure_interface(), and netif_init().

struct netif* netif_find ( char *  name)

Find a network interface by searching for its name.

Parameters
namethe name of the netif (like netif->name) plus concatenated number in ascii representation (e.g. 'en0')

References LWIP_DEBUGF, netif::name, NETIF_DEBUG, netif::next, NULL, and netif::num.

void netif_init ( void  )

References IP4_ADDR, ip_input(), netif_add(), netif_set_up(), and NULL.

Referenced by lwip_init().

void netif_remove ( struct netif netif)

Remove a network interface from the list of lwIP netifs.

Parameters
netifthe network interface to remove

References netif::flags, LWIP_DEBUGF, NETIF_DEBUG, NETIF_FLAG_IGMP, netif_is_up, netif_set_default(), netif_set_down(), netif::next, NULL, snmp_dec_iflist, and snmp_delete_ipaddridx_tree.

void netif_set_addr ( struct netif netif,
ip_addr_t ipaddr,
ip_addr_t netmask,
ip_addr_t gw 
)

Change IP address configuration for a network interface (including netmask and default gateway).

Parameters
netifthe network interface to change
ipaddrthe new IP address
netmaskthe new netmask
gwthe new default gateway

References netif_set_gw(), netif_set_ipaddr(), and netif_set_netmask().

Referenced by netif_add().

void netif_set_default ( struct netif netif)

Set a network interface as the default network interface (used to output all packets for which no specific route is found)

Parameters
netifthe default network interface

References LWIP_DEBUGF, netif::name, NETIF_DEBUG, NULL, snmp_delete_iprteidx_tree, and snmp_insert_iprteidx_tree.

Referenced by ethernet_configure_interface(), and netif_remove().

void netif_set_down ( struct netif netif)

Bring an interface down, disabling any traffic processing.

Note
: Enabling DHCP on a down interface will make it come up once configured.
See Also
dhcp_start()

References etharp_cleanup_netif(), netif::flags, NETIF_FLAG_ETHARP, NETIF_FLAG_UP, NETIF_STATUS_CALLBACK, and snmp_get_sysuptime.

Referenced by netif_remove().

void netif_set_gw ( struct netif netif,
ip_addr_t gw 
)

Change the default gateway for a network interface.

Parameters
netifthe network interface to change
gwthe new default gateway
Note
call netif_set_addr() if you also want to change ip address and netmask

References netif::gw, ip4_addr1_16, ip4_addr2_16, ip4_addr3_16, ip4_addr4_16, ip_addr_set, LWIP_DBG_STATE, LWIP_DBG_TRACE, LWIP_DEBUGF, netif::name, NETIF_DEBUG, and U16_F.

Referenced by netif_set_addr().

void netif_set_ipaddr ( struct netif netif,
ip_addr_t ipaddr 
)

Change the IP address of a network interface.

Parameters
netifthe network interface to change
ipaddrthe new IP address
Note
call netif_set_addr() if you also want to change netmask and default gateway

References ip4_addr1_16, ip4_addr2_16, ip4_addr3_16, ip4_addr4_16, netif::ip_addr, ip_addr_cmp, ip_addr_isany, ip_addr_islinklocal, ip_addr_set, tcp_listen_pcbs_t::listen_pcbs, LWIP_DBG_STATE, LWIP_DBG_TRACE, LWIP_DEBUGF, netif::name, NETIF_DEBUG, next, NULL, snmp_delete_ipaddridx_tree, snmp_delete_iprteidx_tree, snmp_insert_ipaddridx_tree, snmp_insert_iprteidx_tree, tcp_abort(), tcp_active_pcbs, tcp_listen_pcbs, and U16_F.

Referenced by netif_set_addr().

void netif_set_link_down ( struct netif netif)

Called by a driver when its link goes down.

References netif::flags, NETIF_FLAG_LINK_UP, and NETIF_LINK_CALLBACK.

void netif_set_link_up ( struct netif netif)
void netif_set_netmask ( struct netif netif,
ip_addr_t netmask 
)

Change the netmask of a network interface.

Parameters
netifthe network interface to change
netmaskthe new netmask
Note
call netif_set_addr() if you also want to change ip address and default gateway

References ip4_addr1_16, ip4_addr2_16, ip4_addr3_16, ip4_addr4_16, ip_addr_set, LWIP_DBG_STATE, LWIP_DBG_TRACE, LWIP_DEBUGF, netif::name, NETIF_DEBUG, netif::netmask, snmp_delete_iprteidx_tree, snmp_insert_iprteidx_tree, and U16_F.

Referenced by netif_set_addr().

void netif_set_status_callback ( struct netif netif,
netif_status_callback_fn  status_callback 
)

Set callback to be called when interface is brought up/down.

References netif::status_callback, and status_callback().

Referenced by ethernet_configure_interface().

void netif_set_up ( struct netif netif)

Bring an interface up, available for processing traffic.

Note
: Enabling DHCP on a down interface will make it come up once configured.
See Also
dhcp_start()

References etharp_gratuitous, netif::flags, NETIF_FLAG_ETHARP, NETIF_FLAG_IGMP, NETIF_FLAG_LINK_UP, NETIF_FLAG_UP, NETIF_STATUS_CALLBACK, and snmp_get_sysuptime.

Referenced by ethernet_configure_interface(), and netif_init().

struct netif* netif_default

The default network interface.

Referenced by ip_route().

struct netif* netif_list

The list of network interfaces.

Referenced by ip_input(), ip_route(), and netif_add().