Go to the documentation of this file.
32 #define TRACE_LEVEL NIC_TRACE_LEVEL
74 #if (UDP_SUPPORT == ENABLED)
82 #if (ETH_SUPPORT == ENABLED)
86 #if (ETH_VLAN_SUPPORT == ENABLED)
90 #if (ETH_VMAN_SUPPORT == ENABLED)
94 #if (ETH_PORT_TAGGING_SUPPORT == ENABLED)
99 #if (ETH_TIMESTAMP_SUPPORT == ENABLED)
109 #if (ETH_SUPPORT == ENABLED)
114 #if (ETH_PORT_TAGGING_SUPPORT == ENABLED)
117 #if (ETH_TIMESTAMP_SUPPORT == ENABLED)
149 entry->
param = param;
183 entry->
param == param)
208 if(interface->linkState)
211 TRACE_INFO(
"Link is up (%s)...\r\n", interface->name);
232 TRACE_INFO(
" Link speed = %" PRIu32
" bps\r\n",
233 interface->linkSpeed);
251 TRACE_INFO(
"Link is down (%s)...\r\n", interface->name);
260 #if (IPV4_SUPPORT == ENABLED)
265 #if (IPV6_SUPPORT == ENABLED)
270 #if (DNS_CLIENT_SUPPORT == ENABLED || MDNS_CLIENT_SUPPORT == ENABLED || \
271 NBNS_CLIENT_SUPPORT == ENABLED)
276 #if (MDNS_RESPONDER_SUPPORT == ENABLED)
281 #if (DNS_SD_RESPONDER_SUPPORT == ENABLED)
301 entry->
callback(interface, interface->linkState, entry->
param);
312 #if (TCP_SUPPORT == ENABLED)
320 #if (UDP_SUPPORT == ENABLED)
328 #if (RAW_SOCKET_SUPPORT == ENABLED)
367 entry->
param = param;
440 #if (PPP_SUPPORT == ENABLED)
460 #if (IPV4_SUPPORT == ENABLED && ETH_SUPPORT == ENABLED)
480 #if (IPV4_SUPPORT == ENABLED && IPV4_FRAG_SUPPORT == ENABLED)
500 #if (IPV4_SUPPORT == ENABLED && (IGMP_HOST_SUPPORT == ENABLED || \
501 IGMP_ROUTER_SUPPORT == ENABLED || IGMP_SNOOPING_SUPPORT == ENABLED))
521 #if (IPV4_SUPPORT == ENABLED && AUTO_IP_SUPPORT == ENABLED)
539 #if (IPV4_SUPPORT == ENABLED && DHCP_CLIENT_SUPPORT == ENABLED)
557 #if (IPV4_SUPPORT == ENABLED && DHCP_SERVER_SUPPORT == ENABLED)
575 #if (IPV4_SUPPORT == ENABLED && NAT_SUPPORT == ENABLED)
589 #if (IPV6_SUPPORT == ENABLED && IPV6_FRAG_SUPPORT == ENABLED)
609 #if (IPV6_SUPPORT == ENABLED && MLD_NODE_SUPPORT == ENABLED)
629 #if (IPV6_SUPPORT == ENABLED && NDP_SUPPORT == ENABLED)
649 #if (IPV6_SUPPORT == ENABLED && NDP_ROUTER_ADV_SUPPORT == ENABLED)
667 #if (IPV6_SUPPORT == ENABLED && DHCPV6_CLIENT_SUPPORT == ENABLED)
685 #if (TCP_SUPPORT == ENABLED)
699 #if (DNS_CLIENT_SUPPORT == ENABLED || MDNS_CLIENT_SUPPORT == ENABLED || \
700 NBNS_CLIENT_SUPPORT == ENABLED || LLMNR_CLIENT_SUPPORT == ENABLED)
714 #if (MDNS_RESPONDER_SUPPORT == ENABLED)
732 #if (DNS_SD_RESPONDER_SUPPORT == ENABLED)
902 for(i = 0; i < 10; i++)
908 for(i = 0; i < 10; i++)
910 state->
s[12 + i] =
iv[i];
914 for(i = 11; i < 22; i++)
916 state->
s[i] = (state->
s[i + 1] << 5) | (state->
s[i] >> 3);
925 for(i = 0; i < (4 * 288); i++)
946 for(i = 0; i < 32; i++)
996 for(i = 0; i <
length; i++)
1002 for(j = 0; j < 8; j++)
1054 for(i = 35; i > 0; i--)
1056 state->
s[i] = (state->
s[i] << 1) | (state->
s[i - 1] >> 7);
1059 state->
s[0] = state->
s[0] << 1;
IPv6 (Internet Protocol Version 6)
NetTimerCallback callback
systime_t ipv4FragTickCounter
void netStartTimer(NetTimer *timer, systime_t interval)
Start timer.
void ipv6FragTick(NetInterface *interface)
Fragment reassembly timeout handler.
#define IF_MIB_SET_TIME_TICKS(name, value)
void ipv4FragTick(NetInterface *interface)
Fragment reassembly timeout handler.
const NetTxAncillary NET_DEFAULT_TX_ANCILLARY
bool_t netTimerRunning(NetTimer *timer)
Check whether the timer is running.
systime_t netGetRemainingTime(NetTimer *timer)
Get the remaining value of the running timer.
#define NET_RAND_STATE_SET_BIT(s, n, v)
void udpUpdateEvents(Socket *socket)
Update UDP related events.
void ndpTick(NetInterface *interface)
NDP timer handler.
error_t netAttachLinkChangeCallback(NetInterface *interface, NetLinkChangeCallback callback, void *param)
Register link change callback.
#define DNS_TICK_INTERVAL
#define IPV4_FRAG_TICK_INTERVAL
error_t netAttachTimerCallback(systime_t period, NetTimerCallback callback, void *param)
Register timer callback.
NetTimerCallbackEntry timerCallbacks[NET_MAX_TIMER_CALLBACKS]
void ipv4LinkChangeEvent(NetInterface *interface)
Callback function for link change event.
void ndpRouterAdvTick(NdpRouterAdvContext *context)
RA service timer handler.
systime_t dnsSdResponderTickCounter
#define ARP_TICK_INTERVAL
#define NET_INTERFACE_COUNT
#define NET_TICK_INTERVAL
void mldTick(NetInterface *interface)
MLD node timer handler.
void pppTick(NetInterface *interface)
PPP timer handler.
Helper functions for DHCPv6 client.
void dnsFlushCache(NetInterface *interface)
Flush DNS cache.
Helper functions for DHCP client.
void arpTick(NetInterface *interface)
ARP timer handler.
Pseudo-random number generator state.
systime_t ipv6FragTickCounter
Helper functions for DHCP server.
#define NET_MAX_LINK_CHANGE_CALLBACKS
error_t netDetachTimerCallback(NetTimerCallback callback, void *param)
Unregister timer callback.
Definitions common to mDNS client and mDNS responder.
uint32_t netGenerateRand(void)
Generate a random 32-bit value.
void dnsSdResponderTick(DnsSdResponderContext *context)
DNS-SD responder timer handler.
systime_t igmpTickCounter
#define MIB2_IF_SET_TIME_TICKS(name, value)
void(* NetLinkChangeCallback)(NetInterface *interface, bool_t linkState, void *param)
Link change callback.
uint32_t netGenerateRandBit(NetRandState *state)
Generate one random bit.
systime_t dhcpServerTickCounter
Helper functions for TCP.
uint32_t netGenerateRandRange(uint32_t min, uint32_t max)
Generate a random value in the specified range.
#define IPV6_FRAG_TICK_INTERVAL
void dhcpv6ClientTick(Dhcpv6ClientContext *context)
DHCPv6 client timer handler.
#define eui64CopyAddr(destEui64Addr, srcEui64Addr)
void netStopTimer(NetTimer *timer)
Stop timer.
Definitions common to NBNS client and NBNS responder.
DNS-SD responder (DNS-Based Service Discovery)
NetLinkChangeCallbackEntry linkChangeCallbacks[NET_MAX_LINK_CHANGE_CALLBACKS]
int_t socket(int_t family, int_t type, int_t protocol)
Create a socket that is bound to a specific transport service provider.
NBNS client (NetBIOS Name Service)
#define IGMP_TICK_INTERVAL
const NetRxAncillary NET_DEFAULT_RX_ANCILLARY
systime_t dhcpv6ClientTickCounter
#define DHCP_SERVER_TICK_INTERVAL
void netGenerateRandData(uint8_t *data, size_t length)
Get a string of random data.
#define NET_RAND_GET_BIT(s, n)
#define NAT_TICK_INTERVAL
mDNS client (Multicast DNS)
void tcpUpdateEvents(Socket *socket)
Update TCP related events.
#define NDP_TICK_INTERVAL
error_t netDetachLinkChangeCallback(NetInterface *interface, NetLinkChangeCallback callback, void *param)
Unregister link change callback.
void natTick(NatContext *context)
NAT timer handler.
Interfaces Group MIB module.
void netProcessLinkChange(NetInterface *interface)
Process link state change event.
#define TCP_TICK_INTERVAL
Socket socketTable[SOCKET_MAX_COUNT]
Helper functions for NAT.
NatContext * natContext
NAT context.
void rawSocketUpdateEvents(Socket *socket)
Update event state for raw sockets.
void mdnsResponderTick(MdnsResponderContext *context)
mDNS responder timer handler
void dnsTick(void)
DNS timer handler.
NDP (Neighbor Discovery Protocol)
DNS client (Domain Name System)
uint32_t systime_t
System time.
#define NET_MAX_TIMER_CALLBACKS
MLD node (Multicast Listener Discovery for IPv6)
LLMNR client (Link-Local Multicast Name Resolution)
#define MDNS_RESPONDER_TICK_INTERVAL
NetLinkChangeCallback callback
#define NIC_TICK_INTERVAL
void mdnsResponderLinkChangeEvent(MdnsResponderContext *context)
Callback function for link change event.
#define NDP_ROUTER_ADV_TICK_INTERVAL
void netInitRand(void)
Initialize random number generator.
#define AUTO_IP_TICK_INTERVAL
void netTick(void)
Manage TCP/IP timers.
Link change callback entry.
systime_t autoIpTickCounter
#define DHCP_CLIENT_TICK_INTERVAL
systime_t dhcpClientTickCounter
#define MLD_TICK_INTERVAL
#define DHCPV6_CLIENT_TICK_INTERVAL
#define PPP_TICK_INTERVAL
#define osGetSystemTime64()
void autoIpTick(AutoIpContext *context)
Auto-IP timer handler.
NetRandState randState
Pseudo-random number generator state.
void tcpTick(void)
TCP timer handler.
Helper functions for Auto-IP.
LLMNR responder (Link-Local Multicast Name Resolution)
void dhcpClientTick(DhcpClientContext *context)
DHCP client timer handler.
IPv4 (Internet Protocol Version 4)
void ipv6LinkChangeEvent(NetInterface *interface)
Callback function for link change event.
void nicTick(NetInterface *interface)
Network controller timer handler.
void igmpTick(NetInterface *interface)
IGMP timer handler.
Helper functions for router advertisement service.
uint8_t randSeed[NET_RAND_SEED_SIZE]
Random seed.
#define osMemset(p, value, length)
bool_t netTimerExpired(NetTimer *timer)
Check whether the timer has expired.
systime_t mdnsResponderTickCounter
ARP (Address Resolution Protocol)
#define DNS_SD_RESPONDER_TICK_INTERVAL
Helper functions for TCP/IP stack.
systime_t ndpRouterAdvTickCounter
void dnsSdResponderLinkChangeEvent(DnsSdResponderContext *context)
Callback function for link change event.
void(* NetTimerCallback)(void *param)
Timer callback.
NBNS responder (NetBIOS Name Service)
mDNS responder (Multicast DNS)
void dhcpServerTick(DhcpServerContext *context)
DHCP server timer handler.
systime_t osGetSystemTime(void)
Retrieve system time.