Difference between revisions of "Unit Network"
Line 1,384: | Line 1,384: | ||
|- | |- | ||
|} | |} | ||
− | </div></div> | + | </div></div> |
+ | |||
+ | '''Adapter callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterCallback = function(AAdapter:TNetworkAdapter):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter packet handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter monitor handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterMonitorHandler = function(AHandle:THandle; APacket:Pointer; ASize:Integer; AStatus:Pointer):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Adapter authenticator handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAdapterAuthenticatorHandler = function(AHandle:THandle; ACommand:Word):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
<br /> | <br /> | ||
Revision as of 03:01, 7 March 2017
Return to Unit Reference
Contents
Description
Ultibo Network interface unit
To be documented
Constants
NETWORK_*
NETWORK_NAME_PREFIX = 'Network';
|
Name prefix for Network Devices |
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_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_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_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_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 (These values must not change, they are the actual values used by ARP packets) |
MEDIA_TYPE_TOKENRING = $0006;
|
ARP type of Token-Ring Hardware (These values must not change, they are the actual values used by ARP packets) |
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 |
*_ETHERNET_PACKET
MIN_ETHERNET_PACKET = 60;
|
|
MAX_ETHERNET_PACKET = 1514;
|
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); |
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_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 |
ETHERNET_*_SIZE*
ETHERNET_MTU = 1500;
|
|
ETHERNET_MAX_PACKET_SIZE = ETHERNET_HEADER_SIZE + ETHERNET_VLAN_SIZE + ETHERNET_MTU;
|
|
ETHERNET_TRANSMIT_BUFFER_SIZE = ETHERNET_MAX_PACKET_SIZE;
|
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);
|
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);
|
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 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 types
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 | |
ReceiveCount:LongWord;
|
|
ReceiveErrors:LongWord;
|
|
TransmitCount:LongWord;
|
|
TransmitErrors:LongWord;
|
|
BufferOverruns:LongWord;
|
|
BufferUnavailable:LongWord;
|
|
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 params
PAdapterParams = ^TAdapterParams;
TAdapterParams = packed record
Version:Word;
|
Driver version |
FrameType:Byte;
|
Driver class |
AdapterType:Word;
|
Driver type |
Number:Byte;
|
Driver number |
Name:PChar;
|
Driver name |
Functionality:Byte;
|
How good is this driver |
Network params
PNetworkParams = ^TNetworkParams;
TNetworkParams = packed record
MajorRevision:Byte;
|
Major revision ID of packet specs |
MinorRevision:Byte;
|
Minor revision ID of packet specs |
ParamLength:Byte;
|
Length of structure in Bytes |
AddressLength:Byte;
|
Length of a MAC address |
MTU:Word;
|
MTU, including MAC headers |
MulticastAvailable:Word;
|
buffer size for multicast addr. |
RxBuffers:Word;
|
No of back-to-back MTU rcvs) - 1 |
TxBuffers:Word;
|
No of successive xmits) - 1 |
IntNo:Word;
|
Interrupt No to hook for post-EOI processing, 0 = none |
Adapter statistics
PAdapterStatistics = ^TAdapterStatistics;
TAdapterStatistics = record
PacketsIn:Int64;
|
|
PacketsOut:Int64;
|
|
BytesIn:Int64;
|
|
BytesOut:Int64;
|
|
ErrorsIn:Int64;
|
|
ErrorsOut:Int64;
|
|
PacketsLost:Int64;
|
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
To be documented
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;
|
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 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);
Note | None documented |
---|
procedure NetworkLogError(Network:PNetworkDevice; const AText:String);
Note | None documented |
---|
procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String);
Note | None documented |
---|
function HardwareAddressToString(const AAddress:THardwareAddress):String;
Note | None documented |
---|
function StringToHardwareAddress(const AAddress:String):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