Difference between revisions of "Unit Transport"
(21 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '' | + | '''Ultibo Network Transport Interface unit''' |
+ | |||
+ | ''Notes:'' | ||
+ | |||
+ | Includes all global transport definitions plus base class for Network transports. | ||
+ | |||
+ | Currently supported transports are IP, ARP, RARP, IPX and IP6. | ||
+ | |||
+ | All HostToNetwork swaps occur at the level where they are appropriate (ie the level of their header). | ||
+ | |||
+ | Bindings is provided to support Transports (such as IP) which can provide multiple addresses on a single adapter. It is not used by the Protocol or Winsock layer and is only used by the transport where appropriate. In such cases the ConfigType in the Adapter object is not used and the Binding is used instead. | ||
=== Constants === | === Constants === | ||
---- | ---- | ||
− | '' | + | |
+ | <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;">'''Transport specific constants''' <code> *_TYPE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HOST_TYPE_DYNAMIC = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HOST_TYPE_STATIC = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HOST_TYPE_LOOPBACK = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_DYNAMIC = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_STATIC = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_LOOPBACK = 2;</code> | ||
+ | | Loopback Route | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_GATEWAY = 3;</code> | ||
+ | | Default Route | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_MULTICAST = 4;</code> | ||
+ | | Multicast Route | ||
+ | |- | ||
+ | | <code>ROUTE_TYPE_BROADCAST = 5;</code> | ||
+ | | Broadcast Route | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_DYNAMIC = 0;</code> | ||
+ | | Remote Dynamic Address | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_STATIC = 1;</code> | ||
+ | | Remote Static Address | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_LOCAL = 2;</code> | ||
+ | | Local Address (ARP/RARP Only) | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_LOOPBACK = 3;</code> | ||
+ | | Local Loopback | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_MULTICAST = 4;</code> | ||
+ | | Local Multicast | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_BROADCAST = 5;</code> | ||
+ | | Local Broadcast | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_PRIMARY = 6;</code> | ||
+ | | Same as Local but used by IP/IP6 | ||
+ | |- | ||
+ | | <code>ADDRESS_TYPE_SECONDARY = 7;</code> | ||
+ | | Same as Local but used by IP/IP6 | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''Host constants''' <code> *_HOST_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MAX_HOST_LIFE = 600000;</code> | ||
+ | | 10 Minute Host lifespan | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''Route constants''' <code> *_ROUTE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MAX_ROUTE_LIFE = 600000;</code> | ||
+ | | 10 min Route lifespan | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''Address constants''' <code> *_ADDRESS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>MAX_ADDRESS_LIFE = 300000;</code> | ||
+ | | 5 min Address (ARP) lifespan | ||
+ | |- | ||
+ | | <code>IP_ADDRESS_SIZE = 4;</code> | ||
+ | | SizeOf(TInAddr) | ||
+ | |- | ||
+ | | <code>IP6_ADDRESS_SIZE = 16;</code> | ||
+ | | SizeOf(TIn6Addr) | ||
+ | |- | ||
+ | | <code>IPX_ADDRESS_SIZE = 12;</code> | ||
+ | | SizeOf(TIpxAddr) | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''Transport socket''' <code> TTL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>TTL_DEFAULT = 128;</code> | ||
+ | | Default to 128 Seconds/Hops (Defined as 64) | ||
+ | |- | ||
+ | | <code>TOS_DEFAULT = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HOPLIMIT_DEFAULT = 255;</code> | ||
+ | | Default to 255 Hops (Defined as 64) | ||
+ | |- | ||
+ | | <code>ID_INCREMENT = 1;</code> | ||
+ | | Default Increment for ID Numbers | ||
+ | |- | ||
+ | | <code>TTL_DECREMENT = 1;</code> | ||
+ | | Default Decrement for TTL when Forwarding | ||
+ | |- | ||
+ | | <code>SEND_TIMEOUT = 0;</code> | ||
+ | | Default to wait forever on Send | ||
+ | |- | ||
+ | | <code>RECV_TIMEOUT = 0;</code> | ||
+ | | Default to wait forever on Recv | ||
+ | |- | ||
+ | | <code>CLOSE_TIMEOUT = 3000;</code> | ||
+ | | Time that Socket is kept before destruction | ||
+ | |- | ||
+ | | <code>LINGER_TIMEOUT = 60000;</code> | ||
+ | | Time that Socket goes into Linger state for | ||
+ | |- | ||
+ | | <code>CONNECT_TIMEOUT = 5000;</code> | ||
+ | | Time that Socket waits for connect completion | ||
+ | |- | ||
+ | | <code>TIMEWAIT_TIMEOUT = 240000;</code> | ||
+ | | Time that Socket goes into TimeWait state for (2 x MSL) | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''Shutdown constants''' <code> SHUTDOWN_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SHUTDOWN_RECV = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SHUTDOWN_SEND = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SHUTDOWN_BOTH = 2;</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;">'''Select constants''' <code> SELECT_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SELECT_READ = 0;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>SELECT_WRITE = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>SELECT_ERROR = 2;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SELECT_UNKNOWN = -1;</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;">'''Socket state''' <code> SS_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>SS_NOFDREF = $0001;</code> | ||
+ | | no file table ref any more | ||
+ | |- | ||
+ | | <code>SS_UNCONNECTED = SS_NOFDREF;</code> | ||
+ | | or just created socket | ||
+ | |- | ||
+ | | <code>SS_ISCONNECTED = $0002;</code> | ||
+ | | socket connected to a peer | ||
+ | |- | ||
+ | | <code>SS_ISCONNECTING = $0004;</code> | ||
+ | | in process of connecting | ||
+ | |- | ||
+ | | <code>SS_ISDISCONNECTING = $0008;</code> | ||
+ | | in process of disconnecting | ||
+ | |- | ||
+ | | <code>SS_CANTSENDMORE = $0010;</code> | ||
+ | | can't send more data | ||
+ | |- | ||
+ | | <code>SS_CANTRCVMORE = $0020;</code> | ||
+ | | can't receive more data | ||
+ | |- | ||
+ | | <code>SS_RCVATMARK = $0040;</code> | ||
+ | | at mark on input | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SS_PRIV = $0080;</code> | ||
+ | | privileged for broadcast | ||
+ | |- | ||
+ | | <code>SS_NBIO = $0100;</code> | ||
+ | | non-blocking ops | ||
+ | |- | ||
+ | | <code>SS_ASYNC = $0200;</code> | ||
+ | | async i/o notify | ||
+ | |- | ||
+ | | <code>SS_ISCONFIRMING = $0400;</code> | ||
+ | | accepting connection req | ||
+ | |- | ||
+ | | <code>SS_ISLISTENING = SS_ISCONFIRMING;</code> | ||
+ | | non standard | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>SS_LOCAL_ADDR = $0800;</code> | ||
+ | | has local address/port (not used) | ||
+ | |- | ||
+ | | <code>SS_REMOTE_ADDR = $1000;</code> | ||
+ | | has remote address/port (not used) | ||
+ | |- | ||
+ | | <code>SS_CONN_REFUSED = $2000;</code> | ||
+ | | connection refused (ICMP_UNREACH) | ||
+ | |- | ||
+ | | <code>SS_CLOSED = $4000;</code> | ||
+ | | socket has been closed | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''IPv4 transport''' <code> IP_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>IP_LOOPBACK_ADDRESS:TInAddr = (S_addr: $7F000001);</code> | ||
+ | | 127.0.0.1 | ||
+ | |- | ||
+ | | <code>IP_LOOPBACK_NETWORK:TInAddr = (S_addr: $7F000000);</code> | ||
+ | | 127.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_LOOPBACK_NETMASK:TInAddr = (S_addr: $FF000000);</code> | ||
+ | | 255.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_BROADCAST_ADDRESS:TInAddr = (S_addr: $FFFFFFFF);</code> | ||
+ | | 255.255.255.255 | ||
+ | |- | ||
+ | | <code>IP_BROADCAST_NETWORK:TInAddr = (S_addr: $FFFFFFFF);</code> | ||
+ | | 255.255.255.255 | ||
+ | |- | ||
+ | | <code>IP_BROADCAST_NETMASK:TInAddr = (S_addr: $FFFFFFFF);</code> | ||
+ | | 255.255.255.255 | ||
+ | |- | ||
+ | | <code>IP_DEFAULT_ADDRESS:TInAddr = (S_addr: $00000000);</code> | ||
+ | | 0.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_DEFAULT_NETWORK:TInAddr = (S_addr: $00000000);</code> | ||
+ | | 0.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_DEFAULT_NETMASK:TInAddr = (S_addr: $00000000);</code> | ||
+ | | 0.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_MULTICAST_HOSTS:TInAddr = (S_addr: $E0000001);</code> | ||
+ | | 224.0.0.1 (All Hosts) | ||
+ | |- | ||
+ | | <code>IP_MULTICAST_ROUTERS:TInAddr = (S_addr: $E0000002);</code> | ||
+ | | 224.0.0.2 (All Routers) | ||
+ | |- | ||
+ | | <code>IP_MULTICAST_NETWORK:TInAddr = (S_addr: $E0000000);</code> | ||
+ | | 224.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_MULTICAST_NETMASK:TInAddr = (S_addr: $F0000000);</code> | ||
+ | | 240.0.0.0 | ||
+ | |- | ||
+ | |colspan="2"|Note: The recommended range for general use is 234.0.0.0 to 238.255.255.255 | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>IP_CLASSA_NETMASK:TInAddr = (S_addr: $FF000000);</code> | ||
+ | | 255.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_CLASSB_NETMASK:TInAddr = (S_addr: $FFFF0000);</code> | ||
+ | | 255.255.0.0 | ||
+ | |- | ||
+ | | <code>IP_CLASSC_NETMASK:TInAddr = (S_addr: $FFFFFF00);</code> | ||
+ | | 255.255.255.0 | ||
+ | |- | ||
+ | | <code>IP_CLASSD_NETMASK:TInAddr = (S_addr: $F0000000);</code> | ||
+ | | 240.0.0.0 | ||
+ | |- | ||
+ | | <code>IP_CLASSE_NETMASK:TInAddr = (S_addr: $F0000000);</code> | ||
+ | | 240.0.0.0 | ||
+ | |- | ||
+ | |} | ||
+ | </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;">'''IPv6 transport''' <code> IP6_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>IP6_LOOPBACK_ADDRESS:TIn6Addr = (S6_addr: ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01));</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>IP6_DEFAULT_ADDRESS:TIn6Addr = (S6_addr: ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00));</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === | ||
---- | ---- | ||
− | '' | + | |
+ | '''Transport statistics''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PTransportStatistics = ^TTransportStatistics;</code> | ||
+ | |||
+ | <code>TTransportStatistics = record</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Generic Transport | ||
+ | |- | ||
+ | | <code>PacketsIn:Int64;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>PacketsOut:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BytesIn:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>BytesOut:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ErrorsIn:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ErrorsOut:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>PacketsLost:Int64;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv4 nameservers''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PIPNameservers = ^TIPNameservers;</code> | ||
+ | |||
+ | <code>TIPNameservers = array[0..MAX_NAME_SERVERS - 1] of TInAddr;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IP4 Transport | ||
+ | |- | ||
+ | | style="width: 50%;"| | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 nameservers''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | <code>PIP6Nameservers = ^TIP6Nameservers;</code> | ||
+ | |||
+ | <code>TIP6Nameservers = array[0..MAX_NAME_SERVERS - 1] of TIn6Addr;</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: IP6 Transport | ||
+ | |- | ||
+ | | style="width: 50%;"| | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''Transport callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTransportCallback = function(ATransport:TNetworkTransport):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Monitor callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TMonitorCallback = function(AMonitor:TNetworkMonitor):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Authenticator callback''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TAuthenticatorCallback = function(AAuthenticator:TNetworkAuthenticator):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Transport packet handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTransportPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Transport control handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTransportControlHandler = function(AHandle:THandle; ASource,ADest:Pointer; AProtocol,ACommand,ACode:Word; AAddress,AData:Pointer; ASize:Integer):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Transport filter handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTransportFilterHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | '''Transport configuration handler''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TTransportConfigHandler = function(AHandle:THandle; AAdapter:TTransportAdapter; ACommand:Word):Boolean of object;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
+ | |||
+ | === Class definitions === | ||
+ | ---- | ||
+ | |||
+ | |||
+ | '''Transport specific classes''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportManager|<code>TTransportManager = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportBuffer|<code>TTransportBuffer = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportBufferEx|<code>TTransportBufferEx = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportAdapter|<code>TTransportAdapter = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportBinding|<code>TTransportBinding = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportProtocol|<code>TTransportProtocol = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportFilter|<code>TTransportFilter = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportConfig|<code>TTransportConfig = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkTransport|<code>TNetworkTransport = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TMonitorAdapter|<code>TMonitorAdapter = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkMonitor|<code>TNetworkMonitor = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAuthenticatorAdapter|<code>TAuthenticatorAdapter = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkAuthenticator|<code>TNetworkAuthenticator = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportSocket|<code>TTransportSocket = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TSocketList|<code>TSocketList = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TSocketState|<code>TSocketState = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TSocketBuffer|<code>TSocketBuffer = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TSocketOptions|<code>TSocketOptions = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportState|<code>TTransportState = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TTransportOptions|<code>TTransportOptions = class(TObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[THostEntry|<code>THostEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TRouteEntry|<code>TRouteEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TAddressEntry|<code>TAddressEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TNetworkEntry|<code>TNetworkEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TServEntry|<code>TServEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | [[TProtoEntry|<code>TProtoEntry = class(TListObject)</code>]] | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Public variables === | === Public variables === | ||
---- | ---- | ||
− | '' | + | |
+ | '''Transport specific variables''' | ||
+ | |||
+ | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" | ||
+ | |- | ||
+ | | <code>TransportManager:TTransportManager;</code> | ||
+ | | style="width: 40%;"| | ||
+ | |- | ||
+ | |} | ||
+ | <br /> | ||
=== Function declarations === | === Function declarations === | ||
Line 34: | Line 653: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 46: | Line 665: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 58: | Line 677: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 70: | Line 689: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 82: | Line 701: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 97: | Line 716: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 109: | Line 728: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 121: | Line 740: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Expects Address to be in Network order | | Expects Address to be in Network order | ||
|- | |- | ||
Line 133: | Line 752: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Returns Address in Network order | | Returns Address in Network order | ||
|- | |- | ||
Line 145: | Line 764: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! ''' | + | ! Note |
+ | | Expects Address to be in Host order | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function InAddrIsNone(const AAddress:TInAddr):Boolean;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check the supplied address to see if it is equal to INADDR_NONE</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
| Expects Address to be in Host order | | Expects Address to be in Host order | ||
|- | |- | ||
Line 157: | Line 788: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Expects Address to be in Host order | | Expects Address to be in Host order | ||
|- | |- | ||
Line 169: | Line 800: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Expects Address to be in Host order | | Expects Address to be in Host order | ||
|- | |- | ||
Line 181: | Line 812: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Expects Address to be in Host order | | Expects Address to be in Host order | ||
|- | |- | ||
Line 193: | Line 824: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Expects Address to be in Host order | | Expects Address to be in Host order | ||
|- | |- | ||
Line 201: | Line 832: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
<pre style="border: 0; padding-bottom:0px;">function In6AddrToString(const AAddress:TIn6Addr):String;</pre> | <pre style="border: 0; padding-bottom:0px;">function In6AddrToString(const AAddress:TIn6Addr):String;</pre> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert an In6Addr to a String</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 213: | Line 844: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
<pre style="border: 0; padding-bottom:0px;">function StringToIn6Addr(const AAddress:String):TIn6Addr;</pre> | <pre style="border: 0; padding-bottom:0px;">function StringToIn6Addr(const AAddress:String):TIn6Addr;</pre> | ||
− | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Convert a String to an In6Addr</div> |
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 229: | Line 860: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! ''' | + | ! Note |
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;"> | ||
+ | <pre style="border: 0; padding-bottom:0px;">function In6AddrIsNone(const AAddress:TIn6Addr):Boolean;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check the supplied address to see if it is IN6ADDR_NONE</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
| None documented | | None documented | ||
|- | |- | ||
Line 241: | Line 884: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 253: | Line 896: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 265: | Line 908: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 277: | Line 920: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 289: | Line 932: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 301: | Line 944: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 313: | Line 956: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 325: | Line 968: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 337: | Line 980: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 349: | Line 992: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 361: | Line 1,004: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 373: | Line 1,016: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 385: | Line 1,028: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 397: | Line 1,040: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 409: | Line 1,052: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 421: | Line 1,064: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Pseudo is expected to start from Offset 0 | | Pseudo is expected to start from Offset 0 | ||
|- | |- | ||
Line 433: | Line 1,076: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| Pseudo and Header are expected to start from Offset 0 | | Pseudo and Header are expected to start from Offset 0 | ||
|- | |- | ||
Line 445: | Line 1,088: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
− | | Pseudo, Header and Options are expected to start from Offset 0 | + | | Pseudo, Header and Options are expected to start from Offset 0. |
|- | |- | ||
|} | |} | ||
Line 460: | Line 1,103: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 472: | Line 1,115: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 484: | Line 1,127: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 496: | Line 1,139: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 508: | Line 1,151: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- | ||
Line 520: | Line 1,163: | ||
{| class="wikitable" style="font-size: 14px; background: white;" | {| class="wikitable" style="font-size: 14px; background: white;" | ||
|- | |- | ||
− | ! | + | ! Note |
| None documented | | None documented | ||
|- | |- |
Latest revision as of 05:06, 5 March 2025
Return to Unit Reference
Contents
[hide]Description
Ultibo Network Transport Interface unit
Notes:
Includes all global transport definitions plus base class for Network transports.
Currently supported transports are IP, ARP, RARP, IPX and IP6.
All HostToNetwork swaps occur at the level where they are appropriate (ie the level of their header).
Bindings is provided to support Transports (such as IP) which can provide multiple addresses on a single adapter. It is not used by the Protocol or Winsock layer and is only used by the transport where appropriate. In such cases the ConfigType in the Adapter object is not used and the Binding is used instead.
Constants
*_TYPE_*
*_HOST_*
*_ROUTE_*
*_ADDRESS_*
TTL_*
SHUTDOWN_*
SELECT_*
SS_*
IP_*
IP6_*
Type definitions
Transport statistics
IPv4 nameservers
PIPNameservers = ^TIPNameservers;
TIPNameservers = array[0..MAX_NAME_SERVERS - 1] of TInAddr;
IPv6 nameservers
PIP6Nameservers = ^TIP6Nameservers;
TIP6Nameservers = array[0..MAX_NAME_SERVERS - 1] of TIn6Addr;
Transport callback
TTransportCallback = function(ATransport:TNetworkTransport):Boolean of object;
|
Monitor callback
TMonitorCallback = function(AMonitor:TNetworkMonitor):Boolean of object;
|
Authenticator callback
TAuthenticatorCallback = function(AAuthenticator:TNetworkAuthenticator):Boolean of object;
|
Transport packet handler
TTransportPacketHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;
|
Transport control handler
TTransportControlHandler = function(AHandle:THandle; ASource,ADest:Pointer; AProtocol,ACommand,ACode:Word; AAddress,AData:Pointer; ASize:Integer):Boolean of object;
|
Transport filter handler
TTransportFilterHandler = function(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean of object;
|
Transport configuration handler
TTransportConfigHandler = function(AHandle:THandle; AAdapter:TTransportAdapter; ACommand:Word):Boolean of object;
|
Class definitions
Transport specific classes
TTransportManager = class(TObject)
|
TTransportBuffer = class(TObject)
|
TTransportBufferEx = class(TObject)
|
TTransportAdapter = class(TListObject)
|
TTransportBinding = class(TListObject)
|
TTransportProtocol = class(TListObject)
|
TTransportFilter = class(TListObject)
|
TTransportConfig = class(TListObject)
|
TNetworkTransport = class(TListObject)
|
TMonitorAdapter = class(TListObject)
|
TNetworkMonitor = class(TListObject)
|
TAuthenticatorAdapter = class(TListObject)
|
TNetworkAuthenticator = class(TListObject)
|
TTransportSocket = class(TListObject)
|
TSocketList = class(TObject)
|
TSocketState = class(TObject)
|
TSocketBuffer = class(TObject)
|
TSocketOptions = class(TObject)
|
TTransportState = class(TObject)
|
TTransportOptions = class(TObject)
|
THostEntry = class(TListObject)
|
TRouteEntry = class(TListObject)
|
TAddressEntry = class(TListObject)
|
TNetworkEntry = class(TListObject)
|
TServEntry = class(TListObject)
|
TProtoEntry = class(TListObject)
|
Public variables
Transport specific variables
TransportManager:TTransportManager;
|
Function declarations
Initialization functions
Transport functions
function InAddrToHost(const AAddress:TInAddr):TInAddr; inline;
function InAddrToNetwork(const AAddress:TInAddr):TInAddr; inline;
function InAddrToString(const AAddress:TInAddr):String;
function StringToInAddr(const AAddress:String):TInAddr;
function InAddrIsEqual(const AAddress1,AAddress2:TInAddr):Boolean;
function InAddrIsNone(const AAddress:TInAddr):Boolean;
function InAddrIsDefault(const AAddress:TInAddr):Boolean;
function InAddrIsLoopback(const AAddress:TInAddr):Boolean;
function InAddrIsBroadcast(const AAddress:TInAddr):Boolean;
function InAddrIsMulticast(const AAddress:TInAddr):Boolean;
function In6AddrToString(const AAddress:TIn6Addr):String;
function StringToIn6Addr(const AAddress:String):TIn6Addr;
function In6AddrIsEqual(const AAddress1,AAddress2:TIn6Addr):Boolean;
function In6AddrIsNone(const AAddress:TIn6Addr):Boolean;
function In6AddrIsDefault(const AAddress:TIn6Addr):Boolean;
function In6AddrIsLoopback(const AAddress:TIn6Addr):Boolean;
function In6AddrIsLinkLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsSiteLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsV4Mapped(const AAddress:TIn6Addr):Boolean;
function In6AddrIsV4Compatible(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticast(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticastNodeLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticastLinkLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticastSiteLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticastOrgLocal(const AAddress:TIn6Addr):Boolean;
function In6AddrIsMulticastGlobal(const AAddress:TIn6Addr):Boolean;
function GetChecksum(ABuffer:Pointer; AOffset,ALength:Word):Word;
function GetChecksum2(APseudo,ABuffer:Pointer; APseudoLength,ABufferOffset,ABufferLength:Word):Word;
function GetChecksum3(APseudo,AHeader,AData:Pointer; APseudoLength,AHeaderLength,ADataOffset,ADataLength:Word):Word;
function GetChecksum4(APseudo,AHeader,AOptions,AData:Pointer; APseudoLength,AHeaderLength,AOptionsLength,ADataOffset,ADataLength:Word):Word;
Transport helper functions
Return to Unit Reference