Difference between revisions of "Unit Network"
Line 688: | Line 688: | ||
</div></div> | </div></div> | ||
<br /> | <br /> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
<div style="font-size: 14px; padding-left: 12px;">'''Generic MII registers (Management Interface)''' <code> MII_* </code></div> | <div style="font-size: 14px; padding-left: 12px;">'''Generic MII registers (Management Interface)''' <code> MII_* </code></div> | ||
Line 1,205: | Line 1,179: | ||
|- | |- | ||
| <code>ETHERNET_HEADER_SIZE = 14;</code> | | <code>ETHERNET_HEADER_SIZE = 14;</code> | ||
− | | SizeOf(TEthernetHeader) | + | | SizeOf(TEthernetHeader) |
|- | |- | ||
| <code>ETHERNET_VLAN_SIZE = 4;</code> | | <code>ETHERNET_VLAN_SIZE = 4;</code> | ||
Line 1,251: | Line 1,225: | ||
| <code>ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;</code> | | <code>ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;</code> | ||
| | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet 802.3 network''' <code> LLC_HEADER_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|FRAME_TYPE_ETHERNET_8022 | ||
+ | |- | ||
+ | | <code>LLC_HEADER_SIZE = 3;</code> | ||
+ | | SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Ethernet SNAP network''' <code> SNAP_HEADER_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|FRAME_TYPE_ETHERNET_SNAP | ||
+ | |- | ||
+ | | <code>SNAP_HEADER_SIZE = 5;</code> | ||
+ | | SizeOf(TSNAPHeader); | ||
|- | |- | ||
|} | |} |
Revision as of 04:37, 5 December 2018
Return to Unit Reference
Contents
Description
Ultibo Network interface unit
To be documented
Constants
NETWORK_*
NETWORK_NAME_PREFIX = 'Network';
|
Name prefix for Network Devices |
Generic Network | |
HARDWARE_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);
|
|
HARDWARE_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);
|
|
HARDWARE_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);
|
NETWORK_TYPE_*
NETWORK_TYPE_NONE = 0;
|
|
NETWORK_TYPE_ETHERNET = 1;
|
|
NETWORK_TYPE_TOKENRING = 2;
|
|
NETWORK_TYPE_80211 = 3;
|
IEEE 802.11 Wireless (WiFi) network |
NETWORK_TYPE_MAX = 3;
|
NETWORK_STATE_*
NETWORK_STATE_CLOSED = 0;
|
|
NETWORK_STATE_CLOSING = 1;
|
|
NETWORK_STATE_OPENING = 2;
|
|
NETWORK_STATE_OPEN = 3;
|
|
NETWORK_STATE_MAX = 3;
|
NETWORK_STATUS_*
NETWORK_STATUS_DOWN = 0;
|
|
NETWORK_STATUS_UP = 1;
|
|
NETWORK_STATUS_MAX = 1;
|
NETWORK_FLAG_*
NETWORK_FLAG_NONE = $00000000;
|
|
NETWORK_FLAG_RX_BUFFER = $00000001;
|
Device supports Receive Buffer (NetworkBufferReceive/NetworkBufferRelease) |
NETWORK_FLAG_TX_BUFFER = $00000002;
|
Device supports Transmit Buffer (NetworkBufferAllocate/NetworkBufferTransmit) |
NETWORK_FLAG_RX_MULTIPACKET = $00000004;
|
Device supports multiple packets in the same Receive entry |
NETWORK_FLAG_TX_MULTIPACKET = $00000008;
|
Device supports multiple packets in the same Transmit entry |
NETWORK_CONTROL_*
NETWORK_CONTROL_CLEAR_STATS = 1;
|
Clear Statistics |
NETWORK_CONTROL_SET_MAC = 2;
|
Set the MAC for this device |
NETWORK_CONTROL_GET_MAC = 3;
|
Get the MAC for this device |
NETWORK_CONTROL_SET_LOOPBACK = 4;
|
Set Loopback Mode |
NETWORK_CONTROL_RESET = 5;
|
Reset the device |
NETWORK_CONTROL_DISABLE = 6;
|
Disable the device |
NETWORK_CONTROL_GET_BROADCAST = 8;
|
Get Broadcast address for this device |
NETWORK_CONTROL_GET_MTU = 9;
|
Get MTU for this device |
NETWORK_CONTROL_GET_HEADERLEN = 10;
|
Get Header length for this device |
NETWORK_CONTROL_GET_LINK = 11;
|
Get link status for this device |
NETWORK_CONTROL_GET_SPEED = 12;
|
Get link speed for this device |
NETWORK_CONTROL_GET_DUPLEX = 13;
|
Get link speed for this device |
NETWORK_CONTROL_RESET_LINK = 14;
|
Reset link for this device |
NETWORK_CONTROL_GET_STATS = 15;
|
Get statistics for this device |
NETWORK_CONTROL_ADD_MULTICAST = 16;
|
Add a multicast address to this device |
NETWORK_CONTROL_DEL_MULTICAST = 17;
|
Delete a multicast address from this device |
NETWORK_CONTROL_GET_MULTICAST = 18;
|
Get the list of multicast address for this device |
NETWORK_LINK_*
NETWORK_LINK_DOWN = NETWORK_STATUS_DOWN;
|
|
NETWORK_LINK_UP = NETWORK_STATUS_UP;
|
NETWORK_SPEED_*
NETWORK_SPEED_NONE = 0;
|
|
NETWORK_SPEED_10 = 10;
|
|
NETWORK_SPEED_100 = 100;
|
|
NETWORK_SPEED_1000 = 1000;
|
NETWORK_DUPLEX_*
NETWORK_DUPLEX_NONE = 0;
|
|
NETWORK_DUPLEX_HALF = 1;
|
|
NETWORK_DUPLEX_FULL = 2;
|
NETWORK_LOCK_*
NETWORK_LOCK_NONE = 0;
|
|
NETWORK_LOCK_READ = 1;
|
|
NETWORK_LOCK_WRITE = 2;
|
NETWORK_BUFFER_*
NETWORK_BUFFER_SIZE = 1024;
|
NETWORK_EVENT_*
NETWORK_EVENT_NONE = $00000000;
|
|
NETWORK_EVENT_SYSTEM_START = $00000001;
|
The network sub system is starting |
NETWORK_EVENT_SYSTEM_STOP = $00000002;
|
The network sub system has stopped |
NETWORK_EVENT_ADAPTERS_START = $00000004;
|
All network adapters are being started |
NETWORK_EVENT_ADAPTERS_STOP = $00000008;
|
All network adapters have been stopped |
NETWORK_EVENT_TRANSPORTS_START = $00000010;
|
All network transports are being started |
NETWORK_EVENT_TRANSPORTS_STOP = $00000020;
|
All network transports have been stopped |
NETWORK_EVENT_PROTOCOLS_START = $00000040;
|
All network protocols are being started |
NETWORK_EVENT_PROTOCOLS_STOP = $00000080;
|
All network protocols have been stopped |
NETWORK_EVENT_SIGNATURE*
NETWORK_EVENT_SIGNATURE = $BE1D50C2;
|
NETWORK_EVENT_STATE_*
NETWORK_EVENT_STATE_UNREGISTERED = 0;
|
|
NETWORK_EVENT_STATE_REGISTERED = 1;
|
NETWORK_EVENT_FLAG_*
NETWORK_EVENT_FLAG_NONE = $00000000;
|
ADAPTER_TYPE_*
ADAPTER_TYPE_UNKNOWN = 0;
|
|
ADAPTER_TYPE_WIRED = 1;
|
|
ADAPTER_TYPE_LOOPBACK = 2;
|
|
ADAPTER_TYPE_WIRELESS = 3;
|
|
ADAPTER_TYPE_SLIP = 4;
|
|
ADAPTER_TYPE_PPP = 5;
|
ADAPTER_THREAD_*
ADAPTER_THREAD_NAME = 'Network Adapter';
|
Thread name for Network adapter threads |
ADAPTER_THREAD_PRIORITY = THREAD_PRIORITY_HIGHER;
|
Thread priority for Network adapter threads |
ADAPTER_STATE_*
ADAPTER_STATE_DISABLED = 0;
|
|
ADAPTER_STATE_ENABLED = 1;
|
ADAPTER_STATUS_*
ADAPTER_STATUS_DOWN = 0;
|
|
ADAPTER_STATUS_UP = 1;
|
CONFIG_TYPE_*
CONFIG_TYPE_AUTO = 0;
|
|
CONFIG_TYPE_STATIC = 1;
|
|
CONFIG_TYPE_RARP = 2;
|
|
CONFIG_TYPE_BOOTP = 3;
|
|
CONFIG_TYPE_DHCP = 4;
|
|
CONFIG_TYPE_PSEUDO = 5;
|
|
CONFIG_TYPE_LOOPBACK = 6;
|
|
CONFIG_TYPE_SLIP = 7;
|
|
CONFIG_TYPE_PPP = 8;
|
|
CONFIG_TYPE_UNKNOWN = Word(-1);
|
AUTH_TYPE_*
AUTH_TYPE_UNKNOWN = 0;
|
|
AUTH_TYPE_EAP = 1;
|
|
AUTH_TYPE_RSN = 2;
|
FRAME_TYPE_*
FRAME_TYPE_UNKNOWN = 0;
|
|
FRAME_TYPE_ETHERNET_II = 1;
|
Blue Book |
FRAME_TYPE_TOKEN_RING = 3;
|
IEEE 802.5 |
FRAME_TYPE_APPLETALK = 5;
|
LocalTalk |
FRAME_TYPE_ETHERNET_8022 = 11;
|
IEEE 802.2 LLC |
FRAME_TYPE_ETHERNET_SNAP = 98;
|
IEEE 802.2 LLC with SNAP Header |
FRAME_TYPE_ETHERNET_8023 = 99;
|
802.3 RAW (Novell) |
FRAME_START_ETHERNET_SNAP = $AAAA;
|
|
FRAME_START_ETHERNET_8023 = $FFFF;
|
|
ADAPTER_MODE_NONE = 1;
|
|
ADAPTER_MODE_LOCAL = 2;
|
|
ADAPTER_MODE_BROADCAST= 3;
|
This is the default |
ADAPTER_MODE_LOCAL_MULTI = 4;
|
Mode 3 plus directed Multicast |
ADAPTER_MODE_BROADCAST_MULTI = 5;
|
Mode 3 plus all Multicast |
ADAPTER_MODE_PROMISCUOUS = 6;
|
Promiscuous mode |
CONFIG_*
CONFIG_ADAPTER_DISCOVER = 0;
|
Discover an Address from the ConfigHandler |
CONFIG_ADAPTER_REQUEST = 1;
|
Request an Address from the ConfigHandler (Either configured or obtained from Discover) |
CONFIG_ADAPTER_RELEASE = 2;
|
Release the Address obtained from ConfigHandler |
CONFIG_ADAPTER_RENEW = 3;
|
Renew the Address obtained from ConfigHandler |
CONFIG_ADAPTER_REBIND = 4;
|
Rebind the Address obtained from ConfigHandler |
CONFIG_ADAPTER_INFORM = 5;
|
Obtain information only from the ConfigHandler |
CONFIG_ADAPTER_REBOOT = 6;
|
Request previous Address after a Reboot |
CONFIG_RETRY_TIMEOUT = 300000;
|
5 min Config Retry Timeout |
CONFIG_RENEW_TIMEOUT = 60000;
|
1 min Config Renew Timeout |
CONFIG_REBIND_TIMEOUT = 60000;
|
1 min Config Rebind Timeout |
AUTH_COMMAND_*
AUTH_COMMAND_ASSOCIATE = 0;
|
|
AUTH_COMMAND_DISASSOCIATE = 1;
|
|
AUTH_COMMAND_AUTHENTICATE = 2;
|
|
AUTH_COMMAND_UNAUTHENTICATE = 3;
|
MAX_MULTICAST_*
MAX_MULTICAST_ADDRESS = 8;
|
Maximum number of addresses per adapter |
MAX_PHYSICAL_PACKET = 2048;
|
Large enough for all media types |
HARDWARE_ADDRESS_*
HARDWARE_ADDRESS_SIZE = 6;
|
SizeOf(THardwareAddress) |
MEDIA_TYPE_*
MEDIA_TYPE_UNKNOWN = $0000;
|
|
MEDIA_TYPE_ETHERNET = $0001;
|
ARP type of Ethernet Hardware (This value must not change, it is the actual values used by ARP packets) |
MEDIA_TYPE_TOKENRING = $0006;
|
ARP type of Token-Ring Hardware (This value must not change, it is the actual values used by ARP packets) |
MEDIA_TYPE_IEEE80211 = $1000;
|
|
MEDIA_TYPE_LOOPBACK = $1001;
|
|
MEDIA_TYPE_PPP = $1002;
|
|
MEDIA_TYPE_SLIP = $1003;
|
PACKET_TYPE_*
PACKET_MIN_TYPE = $0600;
|
If the value Ethernet header TypeLength field is greater than this the frame is Ethernet II |
PACKET_TYPE_IP = $0800;
|
|
PACKET_TYPE_IP6 = $86DD;
|
|
PACKET_TYPE_ARP = $0806;
|
|
PACKET_TYPE_RARP = $8035;
|
|
PACKET_TYPE_8021Q = $8100;
|
802.1Q with extended Ethernet header |
PACKET_TYPE_IPX = $8137;
|
IPX on EII |
PACKET_TYPE_EAPOL = $888E;
|
EAP-over-LAN (EAPOL) |
PACKET_TYPE_RSN = $88C7;
|
RSN pre-authentication |
PACKET_TYPE_TDLS = $890D;
|
Tunneled direct-link setup |
PACKET_TYPE_RAW = $FFFF;
|
IPX on 802.3 |
PACKET_TYPE_LLC = $0001;
|
IPX on 802.2 |
MII_*
MII_BMCR = $00;
|
Basic mode control register |
MII_BMSR = $01;
|
Basic mode status register |
MII_PHYSID1 = $02;
|
PHYS ID 1 |
MII_PHYSID2 = $03;
|
PHYS ID 2 |
MII_ADVERTISE = $04;
|
Advertisement control reg |
MII_LPA = $05;
|
Link partner ability reg |
MII_EXPANSION = $06;
|
Expansion register |
MII_CTRL1000 = $09;
|
1000BASE-T control |
MII_STAT1000 = $0a;
|
1000BASE-T status |
MII_MMD_CTRL = $0d;
|
MMD Access Control Register |
MII_MMD_DATA = $0e;
|
MMD Access Data Register |
MII_ESTATUS = $0f;
|
Extended Status |
MII_DCOUNTER = $12;
|
Disconnect counter |
MII_FCSCOUNTER = $13;
|
False carrier counter |
MII_NWAYTEST = $14;
|
N-way auto-neg test reg |
MII_RERRCOUNTER = $15;
|
Receive error counter |
MII_SREVISION = $16;
|
Silicon revision |
MII_RESV1 = $17;
|
Reserved... |
MII_LBRERROR = $18;
|
Lpback, rx, bypass error |
MII_PHYADDR = $19;
|
PHY address |
MII_RESV2 = $1a;
|
Reserved... |
MII_TPISTATUS = $1b;
|
TPI status for 10mbps |
MII_NCONFIG = $1c;
|
Network interface config |
BMCR_*
BMCR_RESV = $003f;
|
Unused... |
BMCR_SPEED1000 = $0040;
|
MSB of Speed (1000) |
BMCR_CTST = $0080;
|
Collision test |
BMCR_FULLDPLX = $0100;
|
Full duplex |
BMCR_ANRESTART = $0200;
|
Auto negotiation restart |
BMCR_ISOLATE = $0400;
|
Isolate data paths from MII |
BMCR_PDOWN = $0800;
|
Enable low power state |
BMCR_ANENABLE = $1000;
|
Enable auto negotiation |
BMCR_SPEED100 = $2000;
|
Select 100Mbps |
BMCR_LOOPBACK = $4000;
|
TXD loopback bits |
BMCR_RESET = $8000;
|
Reset to default state |
BMSR_*
BMSR_ERCAP = $0001;
|
Ext-reg capability |
BMSR_JCD = $0002;
|
Jabber detected |
BMSR_LSTATUS = $0004;
|
Link status |
BMSR_ANEGCAPABLE = $0008;
|
Able to do auto-negotiation |
BMSR_RFAULT = $0010;
|
Remote fault detected |
BMSR_ANEGCOMPLETE = $0020;
|
Auto-negotiation complete |
BMSR_RESV = $00c0;
|
Unused... |
BMSR_ESTATEN = $0100;
|
Extended Status in R15 |
BMSR_100HALF2 = $0200;
|
Can do 100BASE-T2 HDX |
BMSR_100FULL2 = $0400;
|
Can do 100BASE-T2 FDX |
BMSR_10HALF = $0800;
|
Can do 10mbps, half-duplex |
BMSR_10FULL = $1000;
|
Can do 10mbps, full-duplex |
BMSR_100HALF = $2000;
|
Can do 100mbps, half-duplex |
BMSR_100FULL = $4000;
|
Can do 100mbps, full-duplex |
BMSR_100BASE4 = $8000;
|
Can do 100mbps, 4k packets |
ADVERTISE_*
ADVERTISE_SLCT = $001f;
|
Selector bits |
ADVERTISE_CSMA = $0001;
|
Only selector supported |
ADVERTISE_10HALF = $0020;
|
Try for 10mbps half-duplex |
ADVERTISE_1000XFULL = $0020;
|
Try for 1000BASE-X full-duplex |
ADVERTISE_10FULL = $0040;
|
Try for 10mbps full-duplex |
ADVERTISE_1000XHALF = $0040;
|
Try for 1000BASE-X half-duplex |
ADVERTISE_100HALF = $0080;
|
Try for 100mbps half-duplex |
ADVERTISE_1000XPAUSE = $0080;
|
Try for 1000BASE-X pause |
ADVERTISE_100FULL = $0100;
|
Try for 100mbps full-duplex |
ADVERTISE_1000XPSE_ASYM = $0100;
|
Try for 1000BASE-X asym pause |
ADVERTISE_100BASE4 = $0200;
|
Try for 100mbps 4k packets |
ADVERTISE_PAUSE_CAP = $0400;
|
Try for pause |
ADVERTISE_PAUSE_ASYM = $0800;
|
Try for asymetric pause |
ADVERTISE_RESV = $1000;
|
Unused... |
ADVERTISE_RFAULT = $2000;
|
Say we can detect faults |
ADVERTISE_LPACK = $4000;
|
Ack link partners response |
ADVERTISE_NPAGE = $8000;
|
Next page bit |
ADVERTISE_FULL = ADVERTISE_100FULL or ADVERTISE_10FULL or ADVERTISE_CSMA;
|
|
ADVERTISE_ALL = ADVERTISE_10HALF or ADVERTISE_10FULL or ADVERTISE_100HALF or ADVERTISE_100FULL;
|
LPA_*
LPA_SLCT = $001f;
|
Same as advertise selector |
LPA_10HALF = $0020;
|
Can do 10mbps half-duplex |
LPA_1000XFULL = $0020;
|
Can do 1000BASE-X full-duplex |
LPA_10FULL = $0040;
|
Can do 10mbps full-duplex |
LPA_1000XHALF = $0040;
|
Can do 1000BASE-X half-duplex |
LPA_100HALF = $0080;
|
Can do 100mbps half-duplex |
LPA_1000XPAUSE = $0080;
|
Can do 1000BASE-X pause |
LPA_100FULL = $0100;
|
Can do 100mbps full-duplex |
LPA_1000XPAUSE_ASYM = $0100;
|
Can do 1000BASE-X pause asym |
LPA_100BASE4 = $0200;
|
Can do 100mbps 4k packets |
LPA_PAUSE_CAP = $0400;
|
Can pause |
LPA_PAUSE_ASYM = $0800;
|
Can pause asymetrically |
LPA_RESV = $1000;
|
Unused... |
LPA_RFAULT = $2000;
|
Link partner faulted |
LPA_LPACK = $4000;
|
Link partner acked us |
LPA_NPAGE = $8000;
|
Next page bit |
LPA_DUPLEX = LPA_10FULL or LPA_100FULL;
|
|
LPA_100 = LPA_100FULL or LPA_100HALF or LPA_100BASE4;
|
EXPANSION_*
EXPANSION_NWAY = $0001;
|
Can do N-way auto-nego |
EXPANSION_LCWP = $0002;
|
Got new RX page code word |
EXPANSION_ENABLENPAGE = $0004;
|
This enables npage words |
EXPANSION_NPCAPABLE = $0008;
|
Link partner supports npage |
EXPANSION_MFAULTS = $0010;
|
Multiple faults detected |
EXPANSION_RESV = $ffe0;
|
Unused... |
ESTATUS_*
ESTATUS_1000_TFULL = $2000;
|
Can do 1000BT Full |
ESTATUS_1000_THALF = $1000;
|
Can do 1000BT Half |
NWAYTEST_*
NWAYTEST_RESV1 = $00ff;
|
Unused... |
NWAYTEST_LOOPBACK = $0100;
|
Enable loopback for N-way |
NWAYTEST_RESV2 = $fe00;
|
Unused... |
*_1000*
ADVERTISE_1000FULL = $0200;
|
Advertise 1000BASE-T full duplex |
ADVERTISE_1000HALF = $0100;
|
Advertise 1000BASE-T half duplex |
CTL1000_AS_MASTER = $0800;
|
|
CTL1000_ENABLE_MASTER = $1000;
|
LPA_1000*
LPA_1000LOCALRXOK = $2000;
|
Link partner local receiver status |
LPA_1000REMRXOK = $1000;
|
Link partner remote receiver status |
LPA_1000FULL = $0800;
|
Link partner 1000BASE-T full duplex |
LPA_1000HALF = $0400;
|
Link partner 1000BASE-T half duplex |
FLOW_CTRL_*
FLOW_CTRL_TX = $01;
|
|
FLOW_CTRL_RX = $02;
|
MII_MMD_CTRL_*
MII_MMD_CTRL_DEVAD_MASK = $1f;
|
Mask MMD DEVAD |
MII_MMD_CTRL_ADDR = $0000;
|
Address |
MII_MMD_CTRL_NOINCR = $4000;
|
No post increment |
MII_MMD_CTRL_INCR_RDWT = $8000;
|
Post increment on reads & writes |
MII_MMD_CTRL_INCR_ON_WT = $C000;
|
Post increment on writes only |
SERVICE_SET_*
SERVICE_SET_UNKNOWN = 0;
|
|
SERVICE_SET_BSS = 1;
|
Basic Service Set |
SERVICE_SET_ESS = 2;
|
Extended Service Set |
SERVICE_SET_IBSS = 3;
|
Independent Basic Service Set |
SERVICE_SET_MBSS = 4;
|
Mesh Basic Service Set |
NETWORK_LOG_*
NETWORK_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
Network debugging messages |
NETWORK_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
Network informational messages, such as a device being attached or detached |
NETWORK_LOG_LEVEL_WARN = LOG_LEVEL_WARN;
|
Network warning messages |
NETWORK_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
Network error messages |
NETWORK_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No Network messages |
ETHERNET_*
ETHERNET_ADDRESS_SIZE = 6;
|
SizeOf(TEthernetAddress) |
ETHERNET_HEADER_SIZE = 14;
|
SizeOf(TEthernetHeader) |
ETHERNET_VLAN_SIZE = 4;
|
Length of Ethernet VLAN tag |
ETHERNET_CRC_SIZE = 4;
|
Length of Ethernet CRC (FCS) |
ETHERNET_DEFAULT:THardwareAddress = ($00,$00,$00,$00,$00,$00);
|
|
ETHERNET_LOOPBACK:THardwareAddress = ($00,$00,$00,$00,$00,$01);
|
|
ETHERNET_BROADCAST:THardwareAddress = ($FF,$FF,$FF,$FF,$FF,$FF);
|
|
ETHERNET_MULTICAST:THardwareAddress = ($01,$00,$5E,$00,$00,$00);
|
ETHERNET_*_SIZE*
ETHERNET_MTU = 1500;
|
|
ETHERNET_MIN_PAYLOAD = 46;
|
|
ETHERNET_MIN_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MIN_PAYLOAD;
|
|
ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;
|
|
ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;
|
LLC_HEADER_*
FRAME_TYPE_ETHERNET_8022 | |
LLC_HEADER_SIZE = 3;
|
SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets |
SNAP_HEADER_*
FRAME_TYPE_ETHERNET_SNAP | |
SNAP_HEADER_SIZE = 5;
|
SizeOf(TSNAPHeader); |
Type definitions
Hardware address
PHardwareAddress = ^THardwareAddress;
THardwareAddress = array[0..HARDWARE_ADDRESS_SIZE - 1] of Byte;
Hardware addresses
PHardwareAddresses = ^THardwareAddresses;
THardwareAddresses = array[0..0] of THardwareAddress;
Multicast addresses
PMulticastAddresses = ^TMulticastAddresses;
TMulticastAddresses = array[0..MAX_MULTICAST_ADDRESS - 1] of THardwareAddress;
Network packet
PNetworkPacket = ^TNetworkPacket;
TNetworkPacket = record
Buffer:Pointer;
|
Pointer to buffer (Set by driver that owns this packet) |
Data:Pointer;
|
Start of data within buffer (Set by driver that owns this packet) |
Length:LongInt;
|
Length of packet data (Set by driver on Receive/Set by caller on Transmit, contains maximum length on Allocate) |
Flags:LongWord;
|
Packet specific flags (eg Error, Broadcast etc) (Dependent on network type) |
Network Buffer
PNetworkBuffer = ^TNetworkBuffer;
TNetworkBuffer = record
Wait:TSemaphoreHandle;
|
Packet ready semaphore |
Start:LongWord;
|
Index of first packet ready |
Count:LongWord;
|
Number of packets ready in buffer |
Packets:array[0..(NETWORK_BUFFER_SIZE - 1)] of PNetworkPacket;
|
Network entry
PNetworkEntry = ^TNetworkEntry;
TNetworkEntry = record
Buffer:Pointer;
|
Pointer to buffer (Allocated by driver that owns this entry) |
Size:LongWord;
|
Size of the buffer (Total size, usable size is Size minus Offset) |
Offset:LongWord;
|
Offset to start of data (Data for first packet will be at Buffer plus Offset, must be less than size) |
Count:LongWord;
|
Number of packets in the entry (Set by driver that owns this entry, must be at least one) |
DriverData:Pointer;
|
Driver private data (Managed by driver that owns this entry) |
Packets:array of TNetworkPacket; {Array of 0 to Count - 1 packets in this entry
|
Allocated by driver that owns this entry, must be at least one) |
Network queue
PNetworkQueue = ^TNetworkQueue;
TNetworkQueue = record
Buffer:TBufferHandle;
|
Handle for entry buffers |
Wait:TSemaphoreHandle;
|
Entry ready semaphore |
Start:LongWord;
|
Index of first entry ready |
Count:LongWord;
|
Number of entries ready in queue |
Flags:LongWord;
|
Queue specific flags (eg Paused, Halted etc) (Managed by driver) |
Entries:array of PNetworkEntry;
|
Array of 0 to Total - 1 entries in this queue (Allocated by driver that owns this queue) |
Network statistics
PNetworkStatistics = ^TNetworkStatistics;
TNetworkStatistics = record
Note: Returned by NETWORK_CONTROL_GET_STATS) | |
ReceiveBytes:UInt64;
|
|
ReceiveCount:UInt64;
|
|
ReceiveErrors:UInt64;
|
|
TransmitBytes:UInt64;
|
|
TransmitCount:UInt64;
|
|
TransmitErrors:UInt64;
|
|
StatusCount:UInt64;
|
|
StatusErrors:UInt64;
|
|
BufferOverruns:UInt64;
|
|
BufferUnavailable:UInt64;
|
Network enumeration callback
TNetworkEnumerate = function(Network:PNetworkDevice; Data:Pointer):LongWord;
|
Network notification callback
TNetworkNotification = function(Device:PDevice; Data:Pointer; Notification:LongWord):LongWord;
|
Network device open
TNetworkDeviceOpen = function(Network:PNetworkDevice):LongWord;
|
Network device close
TNetworkDeviceClose = function(Network:PNetworkDevice):LongWord;
|
Network device read
TNetworkDeviceRead = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
|
Network device write
TNetworkDeviceWrite = function(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
|
Network device control
TNetworkDeviceControl = function(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
|
Network buffer allocate
TNetworkBufferAllocate = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
|
Network buffer release
TNetworkBufferRelease = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
|
Network buffer receive
TNetworkBufferReceive = function(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
|
Network buffer transmit
TNetworkBufferTransmit = function(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
|
Network device
PNetworkDevice = ^TNetworkDevice;
TNetworkDevice = record
Device Properties | |
Device:TDevice;
|
The Device entry for this Network |
Network Properties | |
NetworkId:LongWord;
|
Unique Id of this Network in the Network table |
NetworkState:LongWord;
|
Network state (eg NETWORK_STATE_OPEN) |
NetworkStatus:LongWord;
|
Network status (eg NETWORK_STATUS_UP) |
DeviceOpen:TNetworkDeviceOpen;
|
A Device specific DeviceOpen method implementing a standard Network device interface |
DeviceClose:TNetworkDeviceClose;
|
A Device specific DeviceClose method implementing a standard Network device interface |
DeviceRead:TNetworkDeviceRead;
|
A Device specific DeviceRead method implementing a standard Network device interface |
DeviceWrite:TNetworkDeviceWrite;
|
A Device specific DeviceWrite method implementing a standard Network device interface |
DeviceControl:TNetworkDeviceControl;
|
A Device specific DeviceControl method implementing a standard Network device interface |
BufferAllocate:TNetworkBufferAllocate;
|
A Device specific BufferAllocate method implementing a standard Network device interface |
BufferRelease:TNetworkBufferRelease;
|
A Device specific BufferRelease method implementing a standard Network device interface |
BufferReceive:TNetworkBufferReceive;
|
A Device specific BufferReceive method implementing a standard Network device interface |
BufferTransmit:TNetworkBufferTransmit;
|
A Device specific BufferTransmit method implementing a standard Network device interface |
Driver Properties | |
Lock:TMutexHandle;
|
Network lock |
Buffer:TNetworkBuffer;
|
Network receive buffer |
TransmitWait:TSemaphoreHandle;
|
Transmit complete semaphore |
ReceiveBuffer:TBufferHandle;
|
Buffer for receive packets |
TransmitBuffer:TBufferHandle;
|
Buffer for transmit packets |
ReceiveQueue:TNetworkQueue;
|
Queue for receive packets |
TransmitQueue:TNetworkQueue;
|
Queue for transmit packets (If applicable) |
Statistics Properties | |
ReceiveBytes:UInt64;
|
|
ReceiveCount:UInt64;
|
|
ReceiveErrors:UInt64;
|
|
TransmitBytes:UInt64;
|
|
TransmitCount:UInt64;
|
|
TransmitErrors:UInt64;
|
|
StatusCount:UInt64;
|
|
StatusErrors:UInt64;
|
|
BufferOverruns:UInt64;
|
|
BufferUnavailable:UInt64;
|
|
Internal Properties | |
Prev:PNetworkDevice;
|
Previous entry in Network table |
Next:PNetworkDevice;
|
Next entry in Network table |
Network event callback
TNetworkEventCallback = function(Data:Pointer; Event:LongWord):LongWord;
|
Network Event
PNetworkEvent = ^TNetworkEvent;
TNetworkEvent = record
Event Properties | |
Signature:LongWord;
|
Signature for entry validation |
EventState:LongWord;
|
Event state (eg Registered/Unregistered) |
EventFlags:LongWord;
|
Event flags (eg NETWORK_EVENT_FLAG_NONE) |
Callback:TNetworkEventCallback;
|
The callback for network events |
Data:Pointer;
|
A pointer to callback specific data to be passed with events (Optional) |
Event:LongWord;
|
The mask of events to notify on (eg NETWORK_EVENT_SYSTEM_START etc) |
Internal Properties | |
Prev:PNetworkEvent;
|
Previous entry in Event table |
Next:PNetworkEvent;
|
Next entry in Event table |
Packet fragment
PPacketFragment = ^TPacketFragment;
TPacketFragment = packed record
Size:Integer;
|
|
Data:Pointer;
|
|
Next:PPacketFragment;
|
Ethernet 802.3 network
PLLCHeader = ^TLLCHeader;
TLLCHeader = packed record
Note: FRAME_TYPE_ETHERNET_8022 | |
DSAP:Byte;
|
|
SSAP:Byte;
|
|
Control:Byte;
|
|
Information:array[0..0] of Byte;
|
Optional (Control byte can be 1 or 2 octets) |
Ethernet SNAP network
PSNAPHeader = ^TSNAPHeader;
TSNAPHeader = packed record
Note: FRAME_TYPE_ETHERNET_SNAP | |
OUI:array[0..2] of Byte;
|
|
ProtocolID:Word;
|
|
Data:array[0..0] of Byte;
|
Not part of header, included to provide a pointer to the start of data |
Token ring network
PTokenRingAddress = ^TTokenRingAddress;
TTokenRingAddress = array[0..5] of Byte;
Token ring header
PTokenRingHeader = ^TTokenRingHeader;
TTokenRingHeader = packed record
Adapter statistics
PAdapterStatistics = ^TAdapterStatistics;
TAdapterStatistics = record
PacketsIn:UInt64;
|
|
PacketsOut:UInt64;
|
|
BytesIn:UInt64;
|
|
BytesOut:UInt64;
|
|
ErrorsIn:UInt64;
|
|
ErrorsOut:UInt64;
|
|
PacketsLost:UInt64;
|
Ethernet address
PEthernetAddress = ^TEthernetAddress;
TEthernetAddress = array[0..ETHERNET_ADDRESS_SIZE - 1] of Byte;
Ethernet header
PEthernetHeader = ^TEthernetHeader;
TEthernetHeader = packed record
DestAddress:THardwareAddress;
|
|
SourceAddress:THardwareAddress;
|
|
TypeLength:Word;
|
Length or Type (IEEE 802.3 or BlueBook/DIX Ethernet) |
Data:array[0..0] of Byte;
|
Not part of header, included to provide a pointer to the start of data |
Adapter callback
TAdapterCallback = function(AAdapter:TNetworkAdapter):Boolean of object;
|
Adapter packet handler
TAdapterPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;
|
Adapter monitor handler
TAdapterMonitorHandler = function(AHandle:THandle; APacket:Pointer; ASize:Integer; AStatus:Pointer):Boolean of object;
|
Adapter authenticator handler
TAdapterAuthenticatorHandler = function(AHandle:THandle; ACommand:Word):Boolean of object;
|
Class definitions
Network specific classes
TAdapterManager = class(TObject)
|
TAdapterTransport = class(TListObject)
|
TAdapterBinding = class(TListObject)
|
TAdapterMonitor = class(TListObject)
|
TAdapterAuthenticator = class(TListObject)
|
TNetworkList = class(TLinkedObjList)
|
TNetworkAdapter = class(TListObject)
|
TAdapterThread = class(TThread)
|
TAdapterBuffer = class(TObject)
|
TWiredAdapter = class(TNetworkAdapter)
|
TNetworkSetting = class(TListObject)
|
TNetworkSettings = class(TObject)
|
TServiceSet = class(TListObject)
|
Public variables
Network logging
NETWORK_DEFAULT_LOG_LEVEL:LongWord = NETWORK_LOG_LEVEL_DEBUG;
|
Minimum level for Network messages. Only messages with level greater than or equal to this will be printed. |
NETWORK_LOG_ENABLED:Boolean;
|
Network specific variables
AdapterManager:TAdapterManager;
|
NetworkSettings:TNetworkSettings;
|
Function declarations
Initialization functions
procedure NetworkInit;
Note | To be documented |
---|
function NetworkStart:LongWord;
Note | None documented |
---|
function NetworkStop:LongWord;
Note | None documented |
---|
function NetworkStartCompleted:Boolean;
Return | Returns True if the network sub system has been started |
---|
Network functions
function NetworkDeviceOpen(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceClose(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceRead(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceWrite(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceControl(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Note | None documented |
---|
function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferRelease(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferReceive(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkBufferTransmit(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Return | ERROR_SUCCESS if completed or another error code on failure |
---|
function NetworkDeviceSetState(Network:PNetworkDevice; State:LongWord):LongWord;
Network | The network to set the state for |
---|---|
State | The new state to set and notify |
Return | ERROR_SUCCESS if completed or another error code on failure |
function NetworkDeviceSetStatus(Network:PNetworkDevice; Status:LongWord):LongWord;
Network | The network to set the status for |
---|---|
Status | The new status to set and notify |
Return | ERROR_SUCCESS if completed or another error code on failure |
function NetworkDeviceCreate:PNetworkDevice;
Return | Pointer to new Network entry or nil if network could not be created |
---|
function NetworkDeviceCreateEx(Size:LongWord):PNetworkDevice;
Size | Size in bytes to allocate for new network (Including the network entry) |
---|---|
Return | Pointer to new Network entry or nil if network could not be created |
function NetworkDeviceDestroy(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceRegister(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceDeregister(Network:PNetworkDevice):LongWord;
Note | None documented |
---|
function NetworkDeviceFind(NetworkId:LongWord):PNetworkDevice;
Note | None documented |
---|
function NetworkDeviceFindByName(const Name:String):PNetworkDevice; inline;
Note | None documented |
---|
function NetworkDeviceFindByDescription(const Description:String):PNetworkDevice; inline;
Note | None documented |
---|
function NetworkDeviceEnumerate(Callback:TNetworkEnumerate; Data:Pointer):LongWord;
Note | None documented |
---|
function NetworkDeviceNotification(Network:PNetworkDevice; Callback:TNetworkNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Note | None documented |
---|
function NetworkEventAllocate(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):PNetworkEvent;
Note | None documented |
---|
function NetworkEventRelease(Event:PNetworkEvent):LongWord;
Note | None documented |
---|
function NetworkEventRegister(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):THandle;
Note | None documented |
---|
function NetworkEventDeregister(Handle:THandle):LongWord;
Note | None documented |
---|
function NetworkEventNotify(Event:LongWord):LongWord;
Note | None documented |
---|
RTL network functions
function SysHostGetName:String;
Note | None documented |
---|
function SysHostSetName(const AName:String):Boolean;
Note | None documented |
---|
function SysHostGetDomain:String;
Note | None documented |
---|
function SysHostSetDomain(const ADomain:String):Boolean;
Note | None documented |
---|
Network helper functions
function NetworkGetLastError:LongInt; inline;
Return | Last Network Error or ERROR_SUCCESS if no error |
---|
procedure NetworkSetLastError(Error:LongInt); inline;
Note | None documented |
---|
function NetworkGetCount:LongWord; inline;
Note | None documented |
---|
function NetworkDeviceCheck(Network:PNetworkDevice):PNetworkDevice;
Note | None documented |
---|
function NetworkDeviceTypeToString(NetworkType:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStateToString(NetworkState:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStatusToString(NetworkStatus:LongWord):String;
Note | None documented |
---|
function NetworkDeviceStateToNotification(State:LongWord):LongWord;
Note | None documented |
---|
function NetworkDeviceStatusToNotification(Status:LongWord):LongWord;
Note | None documented |
---|
function NetworkEventCheck(Event:PNetworkEvent):PNetworkEvent;
Note | None documented |
---|
procedure NetworkLog(Level:LongWord; Network:PNetworkDevice; const AText:String);
Note | None documented |
---|
procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogWarn(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogError(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String); inline;
Note | None documented |
---|
function HardwareAddressToString(const AAddress:THardwareAddress):String;
Note | None documented |
---|
function StringToHardwareAddress(const AAddress:String):THardwareAddress;
Note | None documented |
---|
function ValidHardwareAddress(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function RandomHardwareAddress:THardwareAddress;
Note | None documented |
---|
function CompareHardwareAddress(const AAddress1,AAddress2:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareDefault(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareBroadcast(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function CompareHardwareMulticast(const AAddress:THardwareAddress):Boolean;
Note | None documented |
---|
function AdapterTypeToString(AType:Word):String;
Note | None documented |
---|
function AdapterModeToString(AMode:Word):String;
Note | None documented |
---|
function AdapterConfigToString(AConfig:Word):String;
Note | None documented |
---|
function AdapterStateToString(AState:Integer):String;
Note | None documented |
---|
function AdapterStatusToString(AStatus:Integer):String;
Note | None documented |
---|
function FrameTypeToString(AType:Word):String;
Note | None documented |
---|
function MediaTypeToString(AType:Word):String;
Note | None documented |
---|
function PacketTypeToString(AType:Word):String;
Note | None documented |
---|
function ConfigTypeToString(AType:Word):String;
Note | None documented |
---|
function ConfigCommandToString(ACommand:Word):String;
Note | None documented |
---|
function AuthTypeToString(AType:Word):String;
Note | None documented |
---|
function AuthCommandToString(ACommand:Word):String;
Note | None documented |
---|
Return to Unit Reference