ethernet.h File Reference

Ethernet. More...

#include "core/net.h"

Go to the source code of this file.

Data Structures

struct  MacFilterEntry
 MAC filter table entry. More...
 

Macros

#define ETH_SUPPORT   ENABLED
 
#define ETH_VIRTUAL_IF_SUPPORT   DISABLED
 
#define ETH_VLAN_SUPPORT   DISABLED
 
#define ETH_VMAN_SUPPORT   DISABLED
 
#define ETH_LLC_SUPPORT   DISABLED
 
#define ETH_PORT_TAGGING_SUPPORT   DISABLED
 
#define ETH_PORT_TAG_SIZE   4
 
#define ETH_TIMESTAMP_SUPPORT   DISABLED
 
#define MAC_ADDR_FILTER_SIZE   12
 
#define ETH_FAST_CRC_SUPPORT   DISABLED
 
#define ETH_MIN_FRAME_SIZE   64
 
#define ETH_MAX_FRAME_SIZE   1518
 
#define ETH_HEADER_SIZE   14
 
#define ETH_CRC_SIZE   4
 
#define ETH_MTU   1500
 
#define VLAN_PCP_POS   13
 
#define VLAN_DEI_POS   12
 
#define VLAN_VID_POS   0
 
#define VLAN_PCP_MASK   0xE000
 
#define VLAN_DEI_MASK   0x1000
 
#define VLAN_VID_MASK   0x0FFF
 
#define macCopyAddr(destMacAddr, srcMacAddr)   osMemcpy(destMacAddr, srcMacAddr, sizeof(MacAddr))
 
#define macCompAddr(macAddr1, macAddr2)   (!osMemcmp(macAddr1, macAddr2, sizeof(MacAddr)))
 
#define macIsMulticastAddr(macAddr)   (((macAddr)->b[0] & 0x01) != 0)
 
#define eui64CopyAddr(destEui64Addr, srcEui64Addr)   osMemcpy(destEui64Addr, srcEui64Addr, sizeof(Eui64))
 
#define eui64CompAddr(eui64Addr1, eui64Addr2)   (!osMemcmp(eui64Addr1, eui64Addr2, sizeof(Eui64)))
 

Typedefs

struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   char_t   name []
 
   uint8_t   tokenLen: 4
 
   uint8_t   type: 2
 
   uint8_t   version: 2
 
   uint8_t   code
 
   uint16_t   mid
 
   uint8_t   token []
 
   union {
      uint8_t   b [6]
 
      uint16_t   w [3]
 
   } 
 
   uint16_t   srcPort
 
   uint16_t   destPort
 
   uint32_t   seqNum
 
   uint32_t   ackNum
 
   uint8_t   reserved1: 4
 
   uint8_t   dataOffset: 4
 
   uint8_t   flags: 6
 
   uint8_t   reserved2: 2
 
   uint16_t   window
 
   uint16_t   checksum
 
   uint16_t   urgentPointer
 
   uint8_t   options []
 
   uint16_t   length
 
   uint8_t   data []
 
   uint8_t   op
 
   uint8_t   htype
 
   uint8_t   hlen
 
   uint8_t   hops
 
   uint32_t   xid
 
   uint16_t   secs
 
   uint16_t   flags
 
   Ipv4Addr   ciaddr
 
   Ipv4Addr   yiaddr
 
   Ipv4Addr   siaddr
 
   Ipv4Addr   giaddr
 
   MacAddr   chaddr
 
   uint8_t   unused [10]
 
   uint8_t   sname [64]
 
   uint8_t   file [128]
 
   uint32_t   magicCookie
 
   uint16_t   type
 
   uint16_t   hardwareType
 
   uint32_t   time
 
   MacAddr   linkLayerAddr
 
   uint16_t   id
 
   uint8_t   rd: 1
 
   uint8_t   tc: 1
 
   uint8_t   aa: 1
 
   uint8_t   opcode: 4
 
   uint8_t   qr: 1
 
   uint8_t   rcode: 4
 
   uint8_t   z: 3
 
   uint8_t   ra: 1
 
   uint16_t   qdcount
 
   uint16_t   ancount
 
   uint16_t   nscount
 
   uint16_t   arcount
 
   uint8_t   questions []
 
   uint16_t   controlWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bcdUsb
 
   uint8_t   bDeviceClass
 
   uint8_t   bDeviceSubClass
 
   uint8_t   bDeviceProtocol
 
   uint8_t   bMaxPacketSize0
 
   uint16_t   idVendor
 
   uint16_t   idProduct
 
   uint16_t   bcdDevice
 
   uint8_t   iManufacturer
 
   uint8_t   iProduct
 
   uint8_t   iSerialNumber
 
   uint8_t   bNumConfigurations
 
   uint8_t   maxRespTime
 
   Ipv4Addr   groupAddr
 
   uint16_t   hrd
 
   uint16_t   pro
 
   uint8_t   hln
 
   uint8_t   pln
 
   uint16_t   op
 
   MacAddr   sha
 
   Ipv4Addr   spa
 
   MacAddr   tha
 
   Ipv4Addr   tpa
 
   uint8_t   length
 
   uint8_t   value []
 
   uint16_t   first
 
   uint16_t   last
 
   uint16_t   next
 
   union {
      uint8_t   b [16]
 
      uint16_t   w [8]
 
      uint32_t   dw [4]
 
   } 
 
   uint16_t   maxRespDelay
 
   uint16_t   reserved
 
   Ipv6Addr   multicastAddr
 
   uint32_t   reserved
 
   uint16_t   pvid
 
   uint8_t   autoNegSupportStatus
 
   uint16_t   pmdAutoNegAdvCap
 
   uint16_t   operationalMauType
 
   uint16_t   capabilities
 
   uint8_t   deviceType
 
   uint8_t   lengthH: 1
 
   uint8_t   lengthL
 
   uint8_t   t: 1
 
   uint8_t   c: 1
 
   union {
      int32_t   integer
 
      uint8_t   octetString [1]
 
      uint8_t   oid [1]
 
      uint8_t   ipAddr [4]
 
      uint32_t   counter32
 
      uint32_t   gauge32
 
      uint32_t   unsigned32
 
      uint32_t   timeTicks
 
      uint64_t   counter64
 
   } 
 
   uint16_t   transactionId
 
   uint16_t   protocolId
 
   uint8_t   unitId
 
   uint8_t   pdu []
 
   uint8_t   retain: 1
 
   uint8_t   qos: 2
 
   uint8_t   dup: 1
 
   union {
      uint8_t   all
 
      struct {
         uint8_t   topicIdType: 2
 
         uint8_t   cleanSession: 1
 
         uint8_t   will: 1
 
         uint8_t   retain: 1
 
         uint8_t   qos: 2
 
         uint8_t   dup: 1
 
      } 
 
   } 
 
   uint8_t   b: 1
 
   uint8_t   identifier
 
   uint8_t   valueSize
 
   Ipv4Addr   srcIpAddr
 
   Ipv4Addr   destIpAddr
 
   Eui64   interfaceId
 
   uint16_t   mru
 
   uint8_t   peerIdLength
 
   uint8_t   peerId []
 
   uint32_t   seconds
 
   uint32_t   fraction
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint8_t   reserved: 3
 
   uint8_t   fin: 1
 
   uint8_t   payloadLen: 7
 
   uint8_t   mask: 1
 
   uint8_t   extPayloadLen []
 
   uint32_t   length
 
   uint8_t   payload []
 
   uint8_t   protocolVersionId
 
   uint8_t   bpduType
 
   StpBridgeId   rootId
 
   uint32_t   rootPathCost
 
   StpBridgeId   bridgeId
 
   uint16_t   portId
 
   uint16_t   messageAge
 
   uint16_t   maxAge
 
   uint16_t   helloTime
 
   uint16_t   forwardDelay
 
   uint8_t   version1Length
 
   uint16_t   priority
 
   MacAddr   addr
 
MacAddr
 MAC address. More...
 
struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   uint8_t   length: 4
 
   uint8_t   delta: 4
 
   union {
      uint8_t   b [8]
 
      uint16_t   w [4]
 
      uint32_t   dw [2]
 
   } 
 
   uint8_t   kind
 
   uint8_t   value []
 
   uint8_t   code
 
   uint16_t   type
 
   uint32_t   enterpriseNumber
 
   uint8_t   identifier []
 
   uint16_t   qtype
 
   uint16_t   qclass
 
   uint16_t   statusWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   wTotalLength
 
   uint8_t   bNumInterfaces
 
   uint8_t   bConfigurationValue
 
   uint8_t   iConfiguration
 
   uint8_t   bmAttributes
 
   uint8_t   bMaxPower
 
   uint8_t   type
 
   uint16_t   checksum
 
   uint8_t   parameter
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   parameter
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint8_t   curHopLimit
 
   uint8_t   reserved: 2
 
   uint8_t   p: 1
 
   uint8_t   prf: 2
 
   uint8_t   h: 1
 
   uint8_t   o: 1
 
   uint8_t   m: 1
 
   uint16_t   routerLifetime
 
   uint32_t   reachableTime
 
   uint32_t   retransTimer
 
   uint8_t   flags
 
   uint16_t   ppvid
 
   uint8_t   mdiPowerSupport
 
   uint8_t   psePowerPair
 
   uint8_t   powerClass
 
   uint8_t   appType
 
   uint8_t   vlanIdH: 5
 
   uint8_t   x: 1
 
   uint8_t   t: 1
 
   uint8_t   u: 1
 
   uint8_t   l2PriorityH: 1
 
   uint8_t   vlanIdL: 7
 
   uint8_t   dscpValue: 6
 
   uint8_t   l2PriorityL: 2
 
   uint8_t   chassisIdSubtype
 
   uint8_t   chassisId []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfCoils
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint16_t   flags
 
   Ipv4Addr   addr
 
   uint8_t   valueSize
 
   uint16_t   protocol
 
   uint32_t   accm
 
   uint8_t   msgLength
 
   uint8_t   message []
 
   uint8_t   mode: 3
 
   uint8_t   vn: 3
 
   uint8_t   li: 2
 
   uint8_t   stratum
 
   uint8_t   poll
 
   int8_t   precision
 
   uint32_t   rootDelay
 
   uint32_t   rootDispersion
 
   uint32_t   referenceId
 
   NtpTimestamp   referenceTimestamp
 
   NtpTimestamp   originateTimestamp
 
   NtpTimestamp   receiveTimestamp
 
   NtpTimestamp   transmitTimestamp
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint16_t   value []
 
   uint16_t   group
 
   uint8_t   keyExchange []
 
   uint32_t   id
 
   uint32_t   dataLen
 
Eui64
 EUI-64 identifier. More...
 
struct {
   uint32_t   totalSize
 
   ResRootEntry   rootEntry
 
   MacAddr   destAddr
 
   MacAddr   srcAddr
 
   uint16_t   type
 
   uint8_t   data []
 
   uint16_t   hardwareType
 
   MacAddr   linkLayerAddr
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata []
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bInterfaceNumber
 
   uint8_t   bAlternateSetting
 
   uint8_t   bNumEndpoints
 
   uint8_t   bInterfaceClass
 
   uint8_t   bInterfaceSubClass
 
   uint8_t   bInterfaceProtocol
 
   uint8_t   iInterface
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   uint16_t   vlanId
 
   uint8_t   vlanNameLen
 
   char_t   vlanName []
 
   uint8_t   aggregationStatus
 
   uint32_t   aggregatedPortId
 
   uint8_t   locationDataFormat
 
   uint8_t   locationId []
 
   uint8_t   portIdSubtype
 
   uint8_t   portId []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   coilStatus []
 
   uint8_t   prefix
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint8_t   identifier
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint8_t   msgLength
 
   uint8_t   rejectedPacket []
 
   uint32_t   keyId
 
   uint8_t   messageDigest [16]
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   value []
 
   uint8_t   value []
 
EthHeader
 Ethernet frame header. More...
 
struct {
   uint8_t   dsap
 
   uint8_t   ssap
 
   uint8_t   control
 
   uint8_t   msgType
 
   uint8_t   transactionId [3]
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [4]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bEndpointAddress
 
   uint8_t   bmAttributes
 
   uint16_t   wMaxPacketSize
 
   uint8_t   bInterval
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   data []
 
   uint32_t   mtu
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   routingType
 
   uint8_t   segmentsLeft
 
   uint32_t   reserved
 
   Ipv6Addr   address []
 
   uint8_t   reserved1: 5
 
   uint8_t   o: 1
 
   uint8_t   s: 1
 
   uint8_t   r: 1
 
   uint8_t   reserved2 [3]
 
   Ipv6Addr   targetAddr
 
   uint8_t   protocolIdLen
 
   uint8_t   protocolId []
 
   uint16_t   maxFrameSize
 
   uint8_t   powerPriority: 4
 
   uint8_t   powerSource: 2
 
   uint8_t   powerType: 2
 
   uint16_t   powerValue
 
   uint16_t   ttl
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfInputs
 
   uint8_t   gwId
 
   uint16_t   duration
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint16_t   rejectedProtocol
 
   uint8_t   rejectedInfo []
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   version
 
   uint16_t   epoch
 
   DtlsSequenceNumber   seqNum
 
   uint8_t   hash
 
   uint8_t   signature
 
   uint8_t   value []
 
LlcHeader
 LLC header. More...
 
struct {
   uint16_t   tci
 
   uint16_t   type
 
   uint8_t   msgType
 
   uint8_t   hopCount
 
   Ipv6Addr   linkAddress
 
   Ipv6Addr   peerAddress
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [16]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bString []
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint8_t   pointer
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   payloadLen
 
   uint16_t   reserved
 
   uint32_t   securityParamIndex
 
   uint32_t   sequenceNumber
 
   uint8_t   authData []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   Ipv6Addr   destAddr
 
   uint8_t   measurements [20]
 
   uint16_t   psePowerPriceIndex
 
   uint16_t   supportedCap
 
   uint16_t   enabledCap
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   inputStatus []
 
   uint8_t   radius
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint32_t   magicNumber
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint16_t   opcode
 
   uint16_t   errorCode
 
   char_t   errorMsg []
 
   uint16_t   msgSeq
 
   uint8_t   fragOffset [3]
 
   uint8_t   fragLength [3]
 
   TlsSignHashAlgo   value []
 
   uint8_t   value []
 
VlanTag
 VLAN tag. More...
 
typedef void(* LlcRxCallback) (NetInterface *interface, EthHeader *header, const uint8_t *data, size_t length, NetRxAncillary *ancillary, void *param)
 LLC frame received callback. More...
 

Enumerations

enum  MacAddrFlags { MAC_ADDR_FLAG_MULTICAST = 0x01, MAC_ADDR_FLAG_LOCAL = 0x02 }
 MAC address flags. More...
 
enum  EthType {
  ETH_TYPE_IPV4 = 0x0800, ETH_TYPE_ARP = 0x0806, ETH_TYPE_RARP = 0x8035, ETH_TYPE_VLAN = 0x8100,
  ETH_TYPE_IPV6 = 0x86DD, ETH_TYPE_EAPOL = 0x888E, ETH_TYPE_VMAN = 0x88A8, ETH_TYPE_LLDP = 0x88CC,
  ETH_TYPE_PTP = 0x88F7
}
 Ethernet Type field. More...
 

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
 
const MacAddr MAC_BROADCAST_ADDR
 
const Eui64 EUI64_UNSPECIFIED_ADDR
 

Detailed Description

Ethernet.

License

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

Copyright (C) 2010-2023 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
2.2.4

Definition in file ethernet.h.

Macro Definition Documentation

◆ ETH_CRC_SIZE

#define ETH_CRC_SIZE   4

Definition at line 114 of file ethernet.h.

◆ ETH_FAST_CRC_SUPPORT

#define ETH_FAST_CRC_SUPPORT   DISABLED

Definition at line 102 of file ethernet.h.

◆ ETH_HEADER_SIZE

#define ETH_HEADER_SIZE   14

Definition at line 112 of file ethernet.h.

◆ ETH_LLC_SUPPORT

#define ETH_LLC_SUPPORT   DISABLED

Definition at line 67 of file ethernet.h.

◆ ETH_MAX_FRAME_SIZE

#define ETH_MAX_FRAME_SIZE   1518

Definition at line 110 of file ethernet.h.

◆ ETH_MIN_FRAME_SIZE

#define ETH_MIN_FRAME_SIZE   64

Definition at line 108 of file ethernet.h.

◆ ETH_MTU

#define ETH_MTU   1500

Definition at line 116 of file ethernet.h.

◆ ETH_PORT_TAG_SIZE

#define ETH_PORT_TAG_SIZE   4

Definition at line 81 of file ethernet.h.

◆ ETH_PORT_TAGGING_SUPPORT

#define ETH_PORT_TAGGING_SUPPORT   DISABLED

Definition at line 74 of file ethernet.h.

◆ ETH_SUPPORT

#define ETH_SUPPORT   ENABLED

Definition at line 39 of file ethernet.h.

◆ ETH_TIMESTAMP_SUPPORT

#define ETH_TIMESTAMP_SUPPORT   DISABLED

Definition at line 88 of file ethernet.h.

◆ ETH_VIRTUAL_IF_SUPPORT

#define ETH_VIRTUAL_IF_SUPPORT   DISABLED

Definition at line 46 of file ethernet.h.

◆ ETH_VLAN_SUPPORT

#define ETH_VLAN_SUPPORT   DISABLED

Definition at line 53 of file ethernet.h.

◆ ETH_VMAN_SUPPORT

#define ETH_VMAN_SUPPORT   DISABLED

Definition at line 60 of file ethernet.h.

◆ eui64CompAddr

#define eui64CompAddr (   eui64Addr1,
  eui64Addr2 
)    (!osMemcmp(eui64Addr1, eui64Addr2, sizeof(Eui64)))

Definition at line 139 of file ethernet.h.

◆ eui64CopyAddr

#define eui64CopyAddr (   destEui64Addr,
  srcEui64Addr 
)    osMemcpy(destEui64Addr, srcEui64Addr, sizeof(Eui64))

Definition at line 136 of file ethernet.h.

◆ MAC_ADDR_FILTER_SIZE

#define MAC_ADDR_FILTER_SIZE   12

Definition at line 95 of file ethernet.h.

◆ macCompAddr

#define macCompAddr (   macAddr1,
  macAddr2 
)    (!osMemcmp(macAddr1, macAddr2, sizeof(MacAddr)))

Definition at line 130 of file ethernet.h.

◆ macCopyAddr

#define macCopyAddr (   destMacAddr,
  srcMacAddr 
)    osMemcpy(destMacAddr, srcMacAddr, sizeof(MacAddr))

Definition at line 127 of file ethernet.h.

◆ macIsMulticastAddr

#define macIsMulticastAddr (   macAddr)    (((macAddr)->b[0] & 0x01) != 0)

Definition at line 133 of file ethernet.h.

◆ VLAN_DEI_MASK

#define VLAN_DEI_MASK   0x1000

Definition at line 123 of file ethernet.h.

◆ VLAN_DEI_POS

#define VLAN_DEI_POS   12

Definition at line 120 of file ethernet.h.

◆ VLAN_PCP_MASK

#define VLAN_PCP_MASK   0xE000

Definition at line 122 of file ethernet.h.

◆ VLAN_PCP_POS

#define VLAN_PCP_POS   13

Definition at line 119 of file ethernet.h.

◆ VLAN_VID_MASK

#define VLAN_VID_MASK   0x0FFF

Definition at line 124 of file ethernet.h.

◆ VLAN_VID_POS

#define VLAN_VID_POS   0

Definition at line 121 of file ethernet.h.

Typedef Documentation

◆ EthHeader

typedef { ... } EthHeader

Ethernet frame header.

◆ Eui64

typedef { ... } Eui64

EUI-64 identifier.

◆ LlcHeader

typedef { ... } LlcHeader

LLC header.

◆ LlcRxCallback

typedef void(* LlcRxCallback) (NetInterface *interface, EthHeader *header, const uint8_t *data, size_t length, NetRxAncillary *ancillary, void *param)

LLC frame received callback.

Definition at line 270 of file ethernet.h.

◆ MacAddr

typedef { ... } MacAddr

MAC address.

◆ VlanTag

typedef { ... } VlanTag

VLAN tag.

Enumeration Type Documentation

◆ EthType

enum EthType

Ethernet Type field.

Enumerator
ETH_TYPE_IPV4 
ETH_TYPE_ARP 
ETH_TYPE_RARP 
ETH_TYPE_VLAN 
ETH_TYPE_IPV6 
ETH_TYPE_EAPOL 
ETH_TYPE_VMAN 
ETH_TYPE_LLDP 
ETH_TYPE_PTP 

Definition at line 162 of file ethernet.h.

◆ MacAddrFlags

MAC address flags.

Enumerator
MAC_ADDR_FLAG_MULTICAST 
MAC_ADDR_FLAG_LOCAL 

Definition at line 151 of file ethernet.h.

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 596 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 777 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 721 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 749 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 666 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 973 of file ethernet.c.

◆ ethInit()

error_t ethInit ( NetInterface interface)

Ethernet related initialization.

Parameters
[in]interfaceUnderlying network interface
Returns
Error code

Definition at line 66 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 86 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 401 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 1095 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 995 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 946 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 919 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 821 of file ethernet.c.

Variable Documentation

◆ b

uint8_t b[8]

Definition at line 190 of file ethernet.h.

◆ control

uint8_t control

Definition at line 232 of file ethernet.h.

◆ data

uint8_t data[]

Definition at line 220 of file ethernet.h.

◆ destAddr

MacAddr destAddr

Definition at line 217 of file ethernet.h.

◆ dsap

uint8_t dsap

Definition at line 230 of file ethernet.h.

◆ dw

uint32_t dw[2]

Definition at line 206 of file ethernet.h.

◆ EUI64_UNSPECIFIED_ADDR

const Eui64 EUI64_UNSPECIFIED_ADDR
extern

Definition at line 985 of file ethernet.c.

◆ MAC_BROADCAST_ADDR

const MacAddr MAC_BROADCAST_ADDR
extern

Definition at line 57 of file ethernet.c.

◆ MAC_UNSPECIFIED_ADDR

const MacAddr MAC_UNSPECIFIED_ADDR
extern

Definition at line 55 of file ethernet.c.

◆ srcAddr

MacAddr srcAddr

Definition at line 218 of file ethernet.h.

◆ ssap

uint8_t ssap

Definition at line 231 of file ethernet.h.

◆ tci

uint16_t tci

Definition at line 242 of file ethernet.h.

◆ type

uint16_t type

Definition at line 219 of file ethernet.h.

◆ w

uint16_t w[4]

Definition at line 191 of file ethernet.h.