#include <net/ethernet.h>

net/ethernet.h

Fundamental constants relating to ethernet.
includes: sys/appleapiopts.h, sys/types.h, sys/cdefs.h
24 macros · 5 functions · 2 structs · 2 typedefs

macroETHER_ADDR_LEN

The number of bytes in an ethernet (MAC) address.
#define ETHER_ADDR_LEN 6

macroETHER_TYPE_LEN

The number of bytes in the type field.
#define ETHER_TYPE_LEN 2

macroETHER_CRC_LEN

The number of bytes in the trailing CRC field.
#define ETHER_CRC_LEN 4

macroETHER_HDR_LEN

The length of the combined header.
#define ETHER_HDR_LEN (ETHER_ADDR_LEN*2+ETHER_TYPE_LEN)

macroETHER_MIN_LEN

The minimum packet length.
#define ETHER_MIN_LEN 64

macroETHER_MAX_LEN

The maximum packet length.
#define ETHER_MAX_LEN 1518

macroETHER_ALIGN

Mbuf adjust factor to force 32-bit alignment of IP header. Drivers should do m_adj(m, ETHER_ALIGN) when setting up a receive so the upper layers get the IP header properly aligned past the 14-byte Ethernet header.
#define ETHER_ALIGN 2
driver adjust for IP hdr alignment

macroETHER_IS_VALID_LEN

A macro to validate a length with
#define ETHER_IS_VALID_LEN(foo) ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)

structether_header

Structure of a 10Mb/s Ethernet header.
size 14, align 2
u_char[6]ether_dhost
u_char[6]ether_shost
u_shortether_type

typedefether_header_t

typedef struct ether_header ether_header_t;

structether_addr

Structure of a 48-bit Ethernet address.
size 6, align 1
u_char[6]octet

typedefether_addr_t

typedef struct ether_addr ether_addr_t;

macroether_addr_octet

#define ether_addr_octet octet

macroETHERTYPE_PUP

#define ETHERTYPE_PUP 0x0200
PUP protocol

macroETHERTYPE_IP

#define ETHERTYPE_IP 0x0800
IP protocol

macroETHERTYPE_ARP

#define ETHERTYPE_ARP 0x0806
Addr. resolution protocol

macroETHERTYPE_REVARP

#define ETHERTYPE_REVARP 0x8035
reverse Addr. resolution protocol

macroETHERTYPE_VLAN

#define ETHERTYPE_VLAN 0x8100
IEEE 802.1Q VLAN tagging

macroETHERTYPE_IPV6

#define ETHERTYPE_IPV6 0x86dd
IPv6

macroETHERTYPE_PAE

#define ETHERTYPE_PAE 0x888e
EAPOL PAE/802.1x

macroETHERTYPE_WAI

#define ETHERTYPE_WAI 0x88b4
WAI Authentication Protocol

macroETHERTYPE_RSN_PREAUTH

#define ETHERTYPE_RSN_PREAUTH 0x88c7
802.11i / RSN Pre-Authentication

macroETHERTYPE_PTP

#define ETHERTYPE_PTP 0x88f7
IEEE 1588 Precision Time Protocol

macroETHERTYPE_LOOPBACK

#define ETHERTYPE_LOOPBACK 0x9000
used to test interfaces

macroETHERTYPE_TRAIL

The ETHERTYPE_NTRAILER packet types starting at ETHERTYPE_TRAIL have (type-ETHERTYPE_TRAIL)*512 bytes of data followed by an ETHER type (as given above) and then the (variable-length) header.
#define ETHERTYPE_TRAIL 0x1000
Trailer packet

macroETHERTYPE_NTRAILER

#define ETHERTYPE_NTRAILER 16

functionether_hostton

int ether_hostton(const char *, struct ether_addr *)
man page · April 12, 1995
ether_hostton(3) — Ethernet address conversion and lookup routines

functionether_line

int ether_line(const char *, struct ether_addr *, char *)
man page · April 12, 1995
ether_line(3) — Ethernet address conversion and lookup routines

functionether_ntoa

char *ether_ntoa(const struct ether_addr *)
man page · April 12, 1995
ether_ntoa(3) — Ethernet address conversion and lookup routines

functionether_aton

struct ether_addr *ether_aton(const char *)
man page · April 12, 1995
ether_aton(3) — Ethernet address conversion and lookup routines

functionether_ntohost

int ether_ntohost(char *, const struct ether_addr *)
man page · April 12, 1995
ether_ntohost(3) — Ethernet address conversion and lookup routines