Go to the documentation of this file.
36 #define NetInterface struct _NetInterface
40 #include "net_config.h"
91 #ifndef GPL_LICENSE_TERMS_ACCEPTED
92 #error Before compiling CycloneTCP Open, you must accept the terms of the GPL license
96 #define CYCLONE_TCP_VERSION_STRING "2.2.4"
98 #define CYCLONE_TCP_MAJOR_VERSION 2
100 #define CYCLONE_TCP_MINOR_VERSION 2
102 #define CYCLONE_TCP_REV_NUMBER 4
105 #ifndef NET_RTOS_SUPPORT
106 #define NET_RTOS_SUPPORT ENABLED
107 #elif (NET_RTOS_SUPPORT != ENABLED && NET_RTOS_SUPPORT != DISABLED)
108 #error NET_RTOS_SUPPORT parameter is not valid
112 #ifndef NET_INTERFACE_COUNT
113 #define NET_INTERFACE_COUNT 1
114 #elif (NET_INTERFACE_COUNT < 1)
115 #error NET_INTERFACE_COUNT parameter is not valid
119 #ifndef NET_LOOPBACK_IF_SUPPORT
120 #define NET_LOOPBACK_IF_SUPPORT DISABLED
121 #elif (NET_LOOPBACK_IF_SUPPORT != ENABLED && NET_LOOPBACK_IF_SUPPORT != DISABLED)
122 #error NET_LOOPBACK_IF_SUPPORT parameter is not valid
126 #ifndef NET_MAX_LINK_CHANGE_CALLBACKS
127 #define NET_MAX_LINK_CHANGE_CALLBACKS (6 * NET_INTERFACE_COUNT)
128 #elif (NET_MAX_LINK_CHANGE_CALLBACKS < 1)
129 #error NET_MAX_LINK_CHANGE_CALLBACKS parameter is not valid
133 #ifndef NET_MAX_TIMER_CALLBACKS
134 #define NET_MAX_TIMER_CALLBACKS (6 * NET_INTERFACE_COUNT)
135 #elif (NET_MAX_TIMER_CALLBACKS < 1)
136 #error NET_MAX_TIMER_CALLBACKS parameter is not valid
140 #ifndef NET_MAX_IF_NAME_LEN
141 #define NET_MAX_IF_NAME_LEN 8
142 #elif (NET_MAX_IF_NAME_LEN < 1)
143 #error NET_MAX_IF_NAME_LEN parameter is not valid
147 #ifndef NET_MAX_HOSTNAME_LEN
148 #define NET_MAX_HOSTNAME_LEN 24
149 #elif (NET_MAX_HOSTNAME_LEN < 1)
150 #error NET_MAX_HOSTNAME_LEN parameter is not valid
154 #ifndef NET_RAND_SEED_SIZE
155 #define NET_RAND_SEED_SIZE 16
156 #elif (NET_RAND_SEED_SIZE < 10)
157 #error NET_RAND_SEED_SIZE parameter is not valid
161 #ifndef NET_TASK_STACK_SIZE
162 #define NET_TASK_STACK_SIZE 650
163 #elif (NET_TASK_STACK_SIZE < 1)
164 #error NET_TASK_STACK_SIZE parameter is not valid
168 #ifndef NET_TASK_PRIORITY
169 #define NET_TASK_PRIORITY OS_TASK_PRIORITY_HIGH
173 #ifndef NET_TICK_INTERVAL
174 #define NET_TICK_INTERVAL 100
175 #elif (NET_TICK_INTERVAL < 10)
176 #error NET_TICK_INTERVAL parameter is not valid
180 #ifndef netGetSystemTickCount
181 #define netGetSystemTickCount() osGetSystemTime()
214 #if (ETH_SUPPORT == ENABLED)
225 #if (ETH_VLAN_SUPPORT == ENABLED)
228 #if (ETH_VMAN_SUPPORT == ENABLED)
231 #if (ETH_LLC_SUPPORT == ENABLED)
235 #if (ETH_PORT_TAGGING_SUPPORT == ENABLED)
238 #if (ETH_VIRTUAL_IF_SUPPORT == ENABLED || ETH_VLAN_SUPPORT == ENABLED || \
239 ETH_PORT_TAGGING_SUPPORT == ENABLED)
243 #if (IPV4_SUPPORT == ENABLED)
245 #if (ETH_SUPPORT == ENABLED)
248 #if (IGMP_HOST_SUPPORT == ENABLED)
251 #if (IGMP_ROUTER_SUPPORT == ENABLED)
254 #if (IGMP_SNOOPING_SUPPORT == ENABLED)
257 #if (AUTO_IP_SUPPORT == ENABLED)
260 #if (DHCP_CLIENT_SUPPORT == ENABLED)
263 #if (DHCP_SERVER_SUPPORT == ENABLED)
268 #if (IPV6_SUPPORT == ENABLED)
270 #if (NDP_SUPPORT == ENABLED)
273 #if (NDP_ROUTER_ADV_SUPPORT == ENABLED)
276 #if (SLAAC_SUPPORT == ENABLED)
279 #if (DHCPV6_CLIENT_SUPPORT == ENABLED)
284 #if (MDNS_RESPONDER_SUPPORT == ENABLED)
288 #if (DNS_SD_SUPPORT == ENABLED)
292 #if (PPP_SUPPORT == ENABLED)
308 #if (OS_STATIC_TASK_SUPPORT == ENABLED)
319 #if (IPV4_IPSEC_SUPPORT == ENABLED)
__start_packed struct @1 Eui64
EUI-64 identifier.
#define MdnsResponderContext
IPv6 (Internet Protocol Version 6)
const NicDriver * nicDriver
NIC driver.
error_t netSetEui64(NetInterface *interface, const Eui64 *eui64)
Set EUI-64 interface identifier.
uint32_t netGetRandRange(uint32_t min, uint32_t max)
Generate a random value in the specified range.
error_t netStartInterface(NetInterface *interface)
Start network interface.
error_t netSetExtIntDriver(NetInterface *interface, const ExtIntDriver *driver)
Set external interrupt line driver.
error_t netSetLinkState(NetInterface *interface, NicLinkState linkState)
Set administrative link state.
MacAddr macAddr
Link-layer address.
error_t netSetInterfaceName(NetInterface *interface, const char_t *name)
Set interface name.
error_t netSetUartDriver(NetInterface *interface, const UartDriver *driver)
Set UART driver.
DhcpServerContext * dhcpServerContext
DHCP server context.
uint_t netGetLinkSpeed(NetInterface *interface)
Get link speed.
DHCP client (Dynamic Host Configuration Protocol)
error_t netGetEui64(NetInterface *interface, Eui64 *eui64)
Retrieve EUI-64 interface identifier.
NdpContext ndpContext
NDP context.
Eui64 eui64
EUI-64 interface identifier.
bool_t running
The TCP/IP stack is currently running.
error_t netGetMacAddr(NetInterface *interface, MacAddr *macAddr)
Retrieve MAC address.
MdnsResponderContext * mdnsResponderContext
mDNS responder context
error_t netSetParentInterface(NetInterface *interface, NetInterface *physicalInterface)
Attach a virtual interface to a given physical interface.
error_t netSetSpiDriver(NetInterface *interface, const SpiDriver *driver)
Set SPI driver.
uint16_t vlanId
VLAN identifier (802.1Q)
const UartDriver * uartDriver
Underlying UART driver.
uint8_t nicContext[NIC_CONTEXT_SIZE]
Driver specific context.
#define MAC_ADDR_FILTER_SIZE
void netGetRandData(uint8_t *data, size_t length)
Get a string of random data.
OsMutex mutex
Mutex preventing simultaneous access to the TCP/IP stack.
External interrupt line driver.
error_t netSetSwitchDriver(NetInterface *interface, const SwitchDriver *driver)
Set Ethernet switch driver.
char_t name[NET_MAX_IF_NAME_LEN+1]
A unique name identifying the interface.
error_t netStopInterface(NetInterface *interface)
Stop network interface.
#define NET_INTERFACE_COUNT
DhcpClientContext * dhcpClientContext
DHCP client context.
SlaacContext * slaacContext
SLAAC context.
error_t netSetInterfaceId(NetInterface *interface, uint32_t id)
Set interface identifier.
#define NET_TASK_STACK_SIZE
error_t netSetMacAddr(NetInterface *interface, const MacAddr *macAddr)
Set MAC address.
Pseudo-random number generator state.
IPv6 Stateless Address Autoconfiguration.
#define NET_MAX_LINK_CHANGE_CALLBACKS
#define DhcpClientContext
Router advertisement service.
Definitions common to mDNS client and mDNS responder.
bool_t phyEvent
A PHY event is pending.
DNS-SD (DNS-Based Service Discovery)
ArpCacheEntry arpCache[ARP_CACHE_SIZE]
ARP cache.
error_t netSetVmanId(NetInterface *interface, uint16_t vmanId)
Specify VMAN identifier (802.1ad)
IgmpRouterContext * igmpRouterContext
IGMP router context.
bool_t netGetLinkState(NetInterface *interface)
Get link state.
__start_packed struct @0 MacAddr
MAC address.
OsTaskTcb taskTcb
Task control block.
error_t netSetPhyAddr(NetInterface *interface, uint8_t phyAddr)
Specify Ethernet PHY address.
error_t netSetHostname(NetInterface *interface, const char_t *name)
Set host name.
void(* LlcRxCallback)(NetInterface *interface, EthHeader *header, const uint8_t *data, size_t length, NetRxAncillary *ancillary, void *param)
LLC frame received callback.
bool_t promiscuous
Promiscuous mode.
DHCPv6 client (Dynamic Host Configuration Protocol for IPv6)
error_t netInit(void)
TCP/IP stack initialization.
NetInterface * netGetDefaultInterface(void)
Get default network interface.
char_t hostname[NET_MAX_HOSTNAME_LEN+1]
Host name.
IgmpHostContext igmpHostContext
IGMP host context.
Ipv6Context ipv6Context
IPv6 context.
OsTaskId taskId
Task identifier.
uint8_t port
Switch port identifier.
uint32_t OsStackType
Stack data type.
#define Dhcpv6ClientContext
uint16_t vmanId
VMAN identifier (802.1ad)
LlcRxCallback llcRxCallback
LLC frame received callback (802.2)
uint_t index
Zero-based index.
const SwitchDriver * switchDriver
Ethernet switch driver.
NicLinkState adminLinkState
Administrative link state.
void * ipsecContext
IPsec context.
NDP (Neighbor Discovery Protocol)
DNS client (Domain Name System)
error_t netSetSmiDriver(NetInterface *interface, const SmiDriver *driver)
Set SMI driver.
uint32_t systime_t
System time.
NdpRouterAdvContext * ndpRouterAdvContext
RA service context.
#define NET_MAX_TIMER_CALLBACKS
error_t netSetVlanId(NetInterface *interface, uint16_t vlanId)
Specify VLAN identifier (802.1Q)
error_t netSetPhyDriver(NetInterface *interface, const PhyDriver *driver)
Set Ethernet PHY driver.
uint32_t netGetRand(void)
Generate a random 32-bit value.
AutoIpContext * autoIpContext
Auto-IP context.
error_t netSetDriver(NetInterface *interface, const NicDriver *driver)
Set Ethernet MAC driver.
const ExtIntDriver * extIntDriver
External interrupt line driver.
bool_t linkState
Link state.
uint32_t linkSpeed
Link speed.
IPv4 fragmentation and reassembly.
#define NET_MAX_IF_NAME_LEN
PppContext * pppContext
DNS-SD context.
Link change callback entry.
NicDuplexMode
Duplex mode.
Network interface controller abstraction layer.
const SpiDriver * spiDriver
Underlying SPI driver.
uint8_t phyAddr
PHY address.
OsEvent nicTxEvent
Network controller TX event.
void netTask(void)
TCP/IP events handling.
PPP (Point-to-Point Protocol)
bool_t acceptAllMulticast
Accept all frames with a multicast destination address.
#define IgmpRouterContext
IgmpSnoopingContext * igmpSnoopingContext
IGMP snooping switch context.
void * llcRxParam
Callback parameter.
NetRandState randState
Pseudo-random number generator state.
error_t netSetSwitchPort(NetInterface *interface, uint8_t port)
Specify switch port.
Dhcpv6ClientContext * dhcpv6ClientContext
DHCPv6 client context.
#define NET_RAND_SEED_SIZE
Ipv4Context ipv4Context
IPv4 context.
error_t netEnablePromiscuousMode(NetInterface *interface, bool_t enable)
Enable promiscuous mode.
const PhyDriver * phyDriver
Ethernet PHY driver.
error_t netConfigInterface(NetInterface *interface)
Configure network interface.
IPv4 (Internet Protocol Version 4)
thread_t * OsTaskId
Task identifier.
NicDuplexMode duplexMode
Duplex mode.
const SmiDriver * smiDriver
SMI driver.
IGMP snooping switch context.
uint32_t id
A unique number identifying the interface.
bool_t nicEvent
A NIC event is pending.
NicDuplexMode netGetDuplexMode(NetInterface *interface)
Get duplex mode.
bool_t configured
Configuration done.
OsEvent event
Event object to receive notifications from drivers.
void * ikeContext
IKE context.
DHCP server (Dynamic Host Configuration Protocol)
ARP (Address Resolution Protocol)
DnsSdContext * dnsSdContext
Helper functions for TCP/IP stack.
NetInterface * parent
Interface on top of which the virtual interface runs.
#define NET_MAX_HOSTNAME_LEN
Structure describing a network interface.
mDNS responder (Multicast DNS)
error_t netSeedRand(const uint8_t *seed, size_t length)
Seed the pseudo-random number generator.
Auto-IP (Dynamic Configuration of IPv4 Link-Local Addresses)
MacFilterEntry macAddrFilter[MAC_ADDR_FILTER_SIZE]
MAC filter table.