Difference between revisions of "Unit Network"
From Ultibo.org
| Line 746: | Line 746: | ||
|- | |- | ||
| <code>NETWORK_DEFAULT_LOG_LEVEL:LongWord = NETWORK_LOG_LEVEL_DEBUG;</code> | | <code>NETWORK_DEFAULT_LOG_LEVEL:LongWord = NETWORK_LOG_LEVEL_DEBUG;</code> | ||
| − | | style="width: | + | | style="width: 60%;"|Minimum level for Network messages. Only messages with level greater than or equal to this will be printed. |
|- | |- | ||
|} | |} | ||
| Line 752: | Line 752: | ||
|- | |- | ||
| <code>NETWORK_LOG_ENABLED:Boolean;</code> | | <code>NETWORK_LOG_ENABLED:Boolean;</code> | ||
| − | | style="width: | + | | style="width: 60%;"| |
|- | |- | ||
|} | |} | ||
Revision as of 03:02, 5 January 2017
Return to Unit Reference
Description
Ultibo Network interface unit
To be documented
Constants
Network specific constants
NETWORK_* NETWORK_NAME_PREFIX = 'Network';
|
Name prefix for Network Devices |
Network device type constants
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 device state constants
NETWORK_STATE_* NETWORK_STATE_CLOSED = 0;
|
|
NETWORK_STATE_CLOSING = 1;
|
|
NETWORK_STATE_OPENING = 2;
|
|
NETWORK_STATE_OPEN = 3;
|
|
NETWORK_STATE_MAX = 3;
|
|
Network device status constants
NETWORK_STATUS_* NETWORK_STATUS_DOWN = 0;
|
|
NETWORK_STATUS_UP = 1;
|
|
NETWORK_STATUS_MAX = 1;
|
|
Network device flag constants
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 device control code constants
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 state constants
NETWORK_LOCK_* NETWORK_LOCK_NONE = 0;
|
|
NETWORK_LOCK_READ = 1;
|
|
NETWORK_LOCK_WRITE = 2;
|
Network buffer size constants
NETWORK_BUFFER_* NETWORK_BUFFER_SIZE = 1024;
|
Network event constants
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 constants
NETWORK_EVENT_SIGNATURE* NETWORK_EVENT_SIGNATURE = $BE1D50C2;
|
Network event state constants
NETWORK_EVENT_STATE_* NETWORK_EVENT_STATE_UNREGISTERED = 0;
|
|
NETWORK_EVENT_STATE_REGISTERED = 1;
|
Network event flag constants
NETWORK_EVENT_FLAG_* NETWORK_EVENT_FLAG_NONE = $00000000;
|
Adapter type constants
ADAPTER_TYPE_* ADAPTER_TYPE_UNKNOWN = 0;
|
|
ADAPTER_TYPE_WIRED = 1;
|
|
ADAPTER_TYPE_LOOPBACK = 2;
|
|
ADAPTER_TYPE_WIRELESS = 3;
|
Adapter thread constants
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 constants
ADAPTER_STATE_* ADAPTER_STATE_DISABLED = 0;
|
|
ADAPTER_STATE_ENABLED = 1;
|
Adapter status constants
ADAPTER_STATUS_* ADAPTER_STATUS_DOWN = 0;
|
|
ADAPTER_STATUS_UP = 1;
|
Configuration type constants
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);
|
|
Authentication type constants
AUTH_TYPE_* AUTH_TYPE_UNKNOWN = 0;
|
|
AUTH_TYPE_EAP = 1;
|
|
AUTH_TYPE_RSN = 2;
|
Frame type constants
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 |
Configuration command constants
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 |
Authentication command constants
AUTH_COMMAND_* AUTH_COMMAND_ASSOCIATE = 0;
|
|
AUTH_COMMAND_DISASSOCIATE = 1;
|
|
AUTH_COMMAND_AUTHENTICATE = 2;
|
|
AUTH_COMMAND_UNAUTHENTICATE = 3;
|
Multicast addressing constants
MAX_MULTICAST_* MAX_MULTICAST_ADDRESS = 8;
|
Maximum number of addresses per adapter |
MAX_PHYSICAL_PACKET = 2048;
|
Large enough for all media types |
Hardware addressing constants
HARDWARE_ADDRESS_* HARDWARE_ADDRESS_SIZE = 6;
|
SizeOf(THardwareAddress) |
Media type constants
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 constants
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 network constants
*_ETHERNET_PACKET MIN_ETHERNET_PACKET = 60;
|
|
MAX_ETHERNET_PACKET = 1514;
|
Ethernet 802.3 network constants
LLC_HEADER_* | FRAME_TYPE_ETHERNET_8022 | |
LLC_HEADER_SIZE = 3;
|
SizeOf(TLLCHeader); Optionally can be 4 if Control is 2 octets |
Ethernet SNAP network constants
SNAP_HEADER_* | FRAME_TYPE_ETHERNET_SNAP | |
SNAP_HEADER_SIZE = 5;
|
SizeOf(TSNAPHeader); |
Service set constants
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 logging constants
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 specific constants
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 specific size constants
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;
|
|
Network specific constants
| 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 specific constants
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
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;
Description: To be documented
| Note | To be documented |
|---|
function NetworkStart:LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkStop:LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkStartCompleted:Boolean;
Description: To be documented
| Return | Returns True if the network sub system has been started |
|---|
Network functions
function NetworkDeviceOpen(Network:PNetworkDevice):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceClose(Network:PNetworkDevice):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceRead(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceWrite(Network:PNetworkDevice; Buffer:Pointer; Size:LongWord; var Length:LongWord):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceControl(Network:PNetworkDevice; Request:Integer; Argument1:PtrUInt; var Argument2:PtrUInt):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkBufferAllocate(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Description: Allocate a transmit buffer from the specified network device, the returned entry will include a buffer for writing data to as well as an offfset value to allow the driver data to be written to the start of the buffer. When the data has been copied to the buffer, pass the entry to NetworkBufferTransmit.
| Return | ERROR_SUCCESS if completed or another error code on failure |
|---|
function NetworkBufferRelease(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Release a receive buffer to the specified network device, the entry must have been returned from NetworkBufferReceive
| Return | ERROR_SUCCESS if completed or another error code on failure |
|---|
function NetworkBufferReceive(Network:PNetworkDevice; var Entry:PNetworkEntry):LongWord;
Description: Receive a completed receive buffer from the specified network device. The returned entry will contain a one or more packets of data to read from. When the data has been processed pass the returned buffer to NetworkBufferRelease.
| Return | ERROR_SUCCESS if completed or another error code on failure |
|---|
function NetworkBufferTransmit(Network:PNetworkDevice; Entry:PNetworkEntry):LongWord;
Description: Transmit a completed transmit buffer to the specified network device. The entry must have been allocated using NetworkBufferAllocate.
| Return | ERROR_SUCCESS if completed or another error code on failure |
|---|
function NetworkDeviceSetState(Network:PNetworkDevice; State:LongWord):LongWord;
Description: Set the state of the specified network and send a notification
| 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;
Description: Set the status of the specified network and send a notification
| 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;
Description: Create a new Network entry
| Return | Pointer to new Network entry or nil if network could not be created |
|---|
function NetworkDeviceCreateEx(Size:LongWord):PNetworkDevice;
Description: Create a new Network entry
| 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;
Description: Destroy an existing Network entry
| Note | None documented |
|---|
function NetworkDeviceRegister(Network:PNetworkDevice):LongWord;
Description: Register a new Network in the Network table
| Note | None documented |
|---|
function NetworkDeviceDeregister(Network:PNetworkDevice):LongWord;
Description: Deregister a Network from the Network table
| Note | None documented |
|---|
function NetworkDeviceFind(NetworkId:LongWord):PNetworkDevice;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceFindByName(const Name:String):PNetworkDevice; inline;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceFindByDescription(const Description:String):PNetworkDevice; inline;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceEnumerate(Callback:TNetworkEnumerate; Data:Pointer):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceNotification(Network:PNetworkDevice; Callback:TNetworkNotification; Data:Pointer; Notification,Flags:LongWord):LongWord;
Description: To be documented
| Note | None documented |
|---|
function NetworkEventAllocate(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):PNetworkEvent;
Description: Create and Register a new Event entry in the Event table
| Note | None documented |
|---|
function NetworkEventRelease(Event:PNetworkEvent):LongWord;
Description: Deregister and Destroy a Event from the Event table
| Note | None documented |
|---|
function NetworkEventRegister(Callback:TNetworkEventCallback; Data:Pointer; Event:LongWord):THandle;
Description: Register a callback for one or more network events
| Note | None documented |
|---|
function NetworkEventDeregister(Handle:THandle):LongWord;
Description: Deregister a network event callback
| Note | None documented |
|---|
function NetworkEventNotify(Event:LongWord):LongWord;
Description: To be documented
| Note | None documented |
|---|
RTL network functions
function SysHostGetName:String;
Description: To be documented
| Note | None documented |
|---|
function SysHostSetName(const AName:String):Boolean;
Description: To be documented
| Note | None documented |
|---|
function SysHostGetDomain:String;
Description: To be documented
| Note | None documented |
|---|
function SysHostSetDomain(const ADomain:String):Boolean;
Description: To be documented
| Note | None documented |
|---|
Network helper functions
function NetworkGetCount:LongWord; inline;
Description: Get the current network count
| Note | None documented |
|---|
function NetworkDeviceCheck(Network:PNetworkDevice):PNetworkDevice;
Description: Check if the supplied Network is in the network table
| Note | None documented |
|---|
function NetworkDeviceTypeToString(NetworkType:LongWord):String;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceStateToString(NetworkState:LongWord):String;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceStatusToString(NetworkStatus:LongWord):String;
Description: To be documented
| Note | None documented |
|---|
function NetworkDeviceStateToNotification(State:LongWord):LongWord;
Description: Convert a Network state value into the notification code for device notifications
| Note | None documented |
|---|
function NetworkDeviceStatusToNotification(Status:LongWord):LongWord;
Description: Convert a Network status value into the notification code for device notifications
| Note | None documented |
|---|
function NetworkEventCheck(Event:PNetworkEvent):PNetworkEvent;
Description: Check if the supplied Event is in the event table
| Note | None documented |
|---|
procedure NetworkLog(Level:LongWord; Network:PNetworkDevice; const AText:String);
Description: To be documented
| Note | None documented |
|---|
procedure NetworkLogInfo(Network:PNetworkDevice; const AText:String);
Description: To be documented
| Note | None documented |
|---|
procedure NetworkLogError(Network:PNetworkDevice; const AText:String);
Description: To be documented
| Note | None documented |
|---|
procedure NetworkLogDebug(Network:PNetworkDevice; const AText:String);
Description: To be documented
| Note | None documented |
|---|
function HardwareAddressToString(const AAddress:THardwareAddress):String;
Description: To be documented
| Note | None documented |
|---|
function StringToHardwareAddress(const AAddress:String):THardwareAddress;
Description: To be documented
| Note | None documented |
|---|
function CompareHardwareAddress(const AAddress1,AAddress2:THardwareAddress):Boolean;
Description: To be documented
| Note | None documented |
|---|
function CompareHardwareDefault(const AAddress:THardwareAddress):Boolean;
Description: To be documented
| Note | None documented |
|---|
function CompareHardwareBroadcast(const AAddress:THardwareAddress):Boolean;
Description: To be documented
| Note | None documented |
|---|
function CompareHardwareMulticast(const AAddress:THardwareAddress):Boolean;
Description: To be documented
| Note | None documented |
|---|
function AdapterTypeToString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function AdapterModeToString(AMode:Word):String;
Description: To be documented
| Note | None documented |
|---|
function AdapterConfigToString(AConfig:Word):String;
Description: To be documented
| Note | None documented |
|---|
function AdapterStateToString(AState:Integer):String;
Description: To be documented
| Note | None documented |
|---|
function AdapterStatusToString(AStatus:Integer):String;
Description: To be documented
| Note | None documented |
|---|
function FrameTypeToString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function MediaTypeToString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function PacketTypetoString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function ConfigTypeToString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function ConfigCommandToString(ACommand:Word):String;
Description: To be documented
| Note | None documented |
|---|
function AuthTypeToString(AType:Word):String;
Description: To be documented
| Note | None documented |
|---|
function AuthCommandToString(ACommand:Word):String;
Description: To be documented
| Note | None documented |
|---|
Return to Unit Reference