ethernet.c File Reference

Ethernet. More...

#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "core/net.h"
#include "core/nic.h"
#include "core/ethernet.h"
#include "core/ethernet_misc.h"
#include "core/socket.h"
#include "core/raw_socket.h"
#include "core/tcp_timer.h"
#include "ipv4/arp.h"
#include "ipv4/ipv4.h"
#include "ipv6/ipv6.h"
#include "mibs/mib2_module.h"
#include "mibs/if_mib_module.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   ETH_TRACE_LEVEL
 

Functions

error_t ethInit (NetInterface *interface)
 Ethernet related initialization. More...
 
void ethProcessFrame (NetInterface *interface, uint8_t *frame, size_t length, NetRxAncillary *ancillary)
 Process an incoming Ethernet frame. More...
 
error_t ethSendFrame (NetInterface *interface, const MacAddr *destAddr, uint16_t type, NetBuffer *buffer, size_t offset, NetTxAncillary *ancillary)
 Send an Ethernet frame. More...
 
error_t ethAcceptMacAddr (NetInterface *interface, const MacAddr *macAddr)
 Add a unicast/multicast address to the MAC filter table. More...
 
error_t ethDropMacAddr (NetInterface *interface, const MacAddr *macAddr)
 Remove a unicast/multicast address from the MAC filter table. More...
 
error_t ethAttachLlcRxCalback (NetInterface *interface, LlcRxCallback callback, void *param)
 Register LLC frame received callback. More...
 
error_t ethDetachLlcRxCalback (NetInterface *interface)
 Unregister LLC frame received callback. More...
 
NetBufferethAllocBuffer (size_t length, size_t *offset)
 Allocate a buffer to hold an Ethernet frame. More...
 
error_t macStringToAddr (const char_t *str, MacAddr *macAddr)
 Convert a string representation of a MAC address to a binary MAC address. More...
 
char_tmacAddrToString (const MacAddr *macAddr, char_t *str)
 Convert a MAC address to a dash delimited string. More...
 
void macAddrToEui64 (const MacAddr *macAddr, Eui64 *interfaceId)
 Map a MAC address to the IPv6 modified EUI-64 identifier. More...
 
void ethDumpHeader (const EthHeader *ethHeader)
 Dump Ethernet header for debugging purpose. More...
 
error_t eui64StringToAddr (const char_t *str, Eui64 *eui64)
 Convert a string representation of an EUI-64 address to a binary EUI-64 address. More...
 
char_teui64AddrToString (const Eui64 *eui64, char_t *str)
 Convert an EUI-64 address to a dash delimited string. More...
 

Variables

const MacAddr MAC_UNSPECIFIED_ADDR = {{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}
 
const MacAddr MAC_BROADCAST_ADDR = {{{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}}
 
const Eui64 EUI64_UNSPECIFIED_ADDR = {{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}
 

Detailed Description

Ethernet.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2020 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
1.9.8

Definition in file ethernet.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   ETH_TRACE_LEVEL

Definition at line 32 of file ethernet.c.

Function Documentation

◆ ethAcceptMacAddr()

error_t ethAcceptMacAddr ( NetInterface interface,
const MacAddr macAddr 
)

Add a unicast/multicast address to the MAC filter table.

Parameters
[in]interfaceUnderlying network interface
[in]macAddrMAC address to accept
Returns
Error code

Definition at line 573 of file ethernet.c.

◆ ethAllocBuffer()

NetBuffer* ethAllocBuffer ( size_t  length,
size_t *  offset 
)

Allocate a buffer to hold an Ethernet frame.

Parameters
[in]lengthDesired payload length
[out]offsetOffset to the first byte of the payload
Returns
The function returns a pointer to the newly allocated buffer. If the system is out of resources, NULL is returned

Definition at line 754 of file ethernet.c.

◆ ethAttachLlcRxCalback()

error_t ethAttachLlcRxCalback ( NetInterface interface,
LlcRxCallback  callback,
void *  param 
)

Register LLC frame received callback.

Parameters
[in]interfaceUnderlying network interface
[in]callbackCallback function to be called when a LLC frame is received
[in]paramCallback function parameter (optional)
Returns
Error code

Definition at line 698 of file ethernet.c.

◆ ethDetachLlcRxCalback()

error_t ethDetachLlcRxCalback ( NetInterface interface)

Unregister LLC frame received callback.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 726 of file ethernet.c.

◆ ethDropMacAddr()

error_t ethDropMacAddr ( NetInterface interface,
const MacAddr macAddr 
)

Remove a unicast/multicast address from the MAC filter table.

Parameters
[in]interfaceUnderlying network interface
[in]macAddrMAC address to drop
Returns
Error code

Definition at line 643 of file ethernet.c.

◆ ethDumpHeader()

void ethDumpHeader ( const EthHeader ethHeader)

Dump Ethernet header for debugging purpose.

Parameters
[in]ethHeaderPointer to the Ethernet header

Definition at line 946 of file ethernet.c.

◆ ethInit()

error_t ethInit ( NetInterface interface)

Ethernet related initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 67 of file ethernet.c.

◆ ethProcessFrame()

void ethProcessFrame ( NetInterface interface,
uint8_t *  frame,
size_t  length,
NetRxAncillary ancillary 
)

Process an incoming Ethernet frame.

Parameters
[in]interfaceUnderlying network interface
[in]frameIncoming Ethernet frame to process
[in]lengthTotal frame length
[in]ancillaryAdditional options passed to the stack along with the packet

Definition at line 87 of file ethernet.c.

◆ ethSendFrame()

error_t ethSendFrame ( NetInterface interface,
const MacAddr destAddr,
uint16_t  type,
NetBuffer buffer,
size_t  offset,
NetTxAncillary ancillary 
)

Send an Ethernet frame.

Parameters
[in]interfaceUnderlying network interface
[in]destAddrMAC address of the destination host
[in]typeEthernet type
[in]bufferMulti-part buffer containing the payload
[in]offsetOffset to the first payload byte
[in]ancillaryAdditional options passed to the stack along with the packet
Returns
Error code

Definition at line 378 of file ethernet.c.

◆ eui64AddrToString()

char_t* eui64AddrToString ( const Eui64 eui64,
char_t str 
)

Convert an EUI-64 address to a dash delimited string.

Parameters
[in]eui64Pointer to the EUI-64 address
[out]strNULL-terminated string representing the EUI-64 address
Returns
Pointer to the formatted string

Definition at line 1066 of file ethernet.c.

◆ eui64StringToAddr()

error_t eui64StringToAddr ( const char_t str,
Eui64 eui64 
)

Convert a string representation of an EUI-64 address to a binary EUI-64 address.

Parameters
[in]strNULL-terminated string representing the EUI-64 address
[out]eui64Binary representation of the EUI-64 address
Returns
Error code

Definition at line 968 of file ethernet.c.

◆ macAddrToEui64()

void macAddrToEui64 ( const MacAddr macAddr,
Eui64 interfaceId 
)

Map a MAC address to the IPv6 modified EUI-64 identifier.

Parameters
[in]macAddrHost MAC address
[out]interfaceIdIPv6 modified EUI-64 identifier

Definition at line 919 of file ethernet.c.

◆ macAddrToString()

char_t* macAddrToString ( const MacAddr macAddr,
char_t str 
)

Convert a MAC address to a dash delimited string.

Parameters
[in]macAddrPointer to the MAC address
[out]strNULL-terminated string representing the MAC address
Returns
Pointer to the formatted string

Definition at line 896 of file ethernet.c.

◆ macStringToAddr()

error_t macStringToAddr ( const char_t str,
MacAddr macAddr 
)

Convert a string representation of a MAC address to a binary MAC address.

Parameters
[in]strNULL-terminated string representing the MAC address
[out]macAddrBinary representation of the MAC address
Returns
Error code

Definition at line 798 of file ethernet.c.

Variable Documentation

◆ EUI64_UNSPECIFIED_ADDR

const Eui64 EUI64_UNSPECIFIED_ADDR = {{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}

Definition at line 958 of file ethernet.c.

◆ MAC_BROADCAST_ADDR

const MacAddr MAC_BROADCAST_ADDR = {{{0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}}}

Definition at line 58 of file ethernet.c.

◆ MAC_UNSPECIFIED_ADDR

const MacAddr MAC_UNSPECIFIED_ADDR = {{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}}

Definition at line 56 of file ethernet.c.