Difference between revisions of "Unit Transport"

From Ultibo.org
Jump to: navigation, search
 
(16 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo Network Transport interface unit'''
+
'''Ultibo Network Transport Interface unit'''
  
 
''Notes:''
 
''Notes:''
Line 115: Line 115:
 
| <code>MAX_ADDRESS_LIFE = 300000;</code>
 
| <code>MAX_ADDRESS_LIFE = 300000;</code>
 
| 5 min Address (ARP) lifespan
 
| 5 min Address (ARP) 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;">'''IP4 transport constants''' <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_ADDRESS_SIZE = 4;</code>
 
| <code>IP_ADDRESS_SIZE = 4;</code>
 
| SizeOf(TInAddr)
 
| SizeOf(TInAddr)
|-
 
|}
 
</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;">'''IP6 transport constants''' <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_ADDRESS_SIZE = 16;</code>
 
| <code>IP6_ADDRESS_SIZE = 16;</code>
 
| SizeOf(TIn6Addr)
 
| SizeOf(TIn6Addr)
|-
 
|}
 
</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;">'''IPX transport constants''' <code> IPX_* </code></div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
 
|-
 
|-
 
| <code>IPX_ADDRESS_SIZE = 12;</code>
 
| <code>IPX_ADDRESS_SIZE = 12;</code>
Line 153: Line 129:
 
<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;">'''Transport socket constants''' <code> TTL_* </code></div>
+
<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;">
 
<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;"
Line 222: Line 198:
 
|-
 
|-
 
| <code>SELECT_ERROR = 2;</code>
 
| <code>SELECT_ERROR = 2;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>SELECT_UNKNOWN = -1;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 228: Line 209:
 
<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;">'''Socket state constants''' <code> SS_* </code></div>
+
<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;">
 
<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;"
Line 290: Line 271:
 
</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 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"|&nbsp;
 +
|-
 +
| <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%;"|&nbsp;
 +
|-
 +
| <code>IP6_DEFAULT_ADDRESS:TIn6Addr = (S6_addr: ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00));</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
<br />
  
 
=== Type definitions ===
 
=== Type definitions ===
 
----
 
----
  
''To be documented''
+
 
 +
'''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%;"|&nbsp;
 +
|-
 +
| <code>PacketsOut:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BytesIn:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BytesOut:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ErrorsIn:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ErrorsOut:Int64;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PacketsLost:Int64;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
| &nbsp;
 +
|-
 +
|}
 +
</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%;"|&nbsp;
 +
| &nbsp;
 +
|-
 +
|}
 +
</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 ===
 
----
 
----
  
''To be documented''
+
 
 +
'''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 313: Line 653:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 325: Line 665:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 337: Line 677:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 349: Line 689:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 361: Line 701:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 376: Line 716:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 388: Line 728:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 400: Line 740:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Expects Address to be in Network order
 
| Expects Address to be in Network order
 
|-
 
|-
Line 412: Line 752:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Returns Address in Network order
 
| Returns Address in Network order
 
|-
 
|-
Line 424: Line 764:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! 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 436: Line 788:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Expects Address to be in Host order
 
| Expects Address to be in Host order
 
|-
 
|-
Line 448: Line 800:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Expects Address to be in Host order
 
| Expects Address to be in Host order
 
|-
 
|-
Line 460: Line 812:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Expects Address to be in Host order
 
| Expects Address to be in Host order
 
|-
 
|-
Line 472: Line 824:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Expects Address to be in Host order
 
| Expects Address to be in Host order
 
|-
 
|-
Line 484: Line 836:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 496: Line 848:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 508: Line 860:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 520: Line 872:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 532: Line 884:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 544: Line 896:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 556: Line 908:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 568: Line 920:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 580: Line 932:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 592: Line 944:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 604: Line 956:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 616: Line 968:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 628: Line 980:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 640: Line 992:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 652: Line 1,004:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 664: Line 1,016:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 676: Line 1,028:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 688: Line 1,040:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 700: Line 1,052:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Pseudo is expected to start from Offset 0
 
| Pseudo is expected to start from Offset 0
 
|-
 
|-
Line 712: Line 1,064:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| Pseudo and Header are expected to start from Offset 0
 
| Pseudo and Header are expected to start from Offset 0
 
|-
 
|-
Line 724: Line 1,076:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
| Pseudo, Header and Options are expected to start from Offset 0
+
| Pseudo, Header and Options are expected to start from Offset 0.
 
|-
 
|-
 
|}
 
|}
Line 739: Line 1,091:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 751: Line 1,103:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 763: Line 1,115:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 775: Line 1,127:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 787: Line 1,139:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 799: Line 1,151:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Latest revision as of 05:32, 31 August 2021

Return to Unit Reference


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



Transport specific constants *_TYPE_*
HOST_TYPE_DYNAMIC = 0;  
HOST_TYPE_STATIC = 1;  
HOST_TYPE_LOOPBACK = 2;  
 
ROUTE_TYPE_DYNAMIC = 0;  
ROUTE_TYPE_STATIC = 1;  
ROUTE_TYPE_LOOPBACK = 2; Loopback Route
ROUTE_TYPE_GATEWAY = 3; Default Route
ROUTE_TYPE_MULTICAST = 4; Multicast Route
ROUTE_TYPE_BROADCAST = 5; Broadcast Route
 
ADDRESS_TYPE_DYNAMIC = 0; Remote Dynamic Address
ADDRESS_TYPE_STATIC = 1; Remote Static Address
ADDRESS_TYPE_LOCAL = 2; Local Address (ARP/RARP Only)
ADDRESS_TYPE_LOOPBACK = 3; Local Loopback
ADDRESS_TYPE_MULTICAST = 4; Local Multicast
ADDRESS_TYPE_BROADCAST = 5; Local Broadcast
 
ADDRESS_TYPE_PRIMARY = 6; Same as Local but used by IP/IP6
ADDRESS_TYPE_SECONDARY = 7; Same as Local but used by IP/IP6


Host constants *_HOST_*
MAX_HOST_LIFE = 600000; 10 Minute Host lifespan


Route constants *_ROUTE_*
MAX_ROUTE_LIFE = 600000; 10 min Route lifespan


Address constants *_ADDRESS_*
MAX_ADDRESS_LIFE = 300000; 5 min Address (ARP) lifespan
IP_ADDRESS_SIZE = 4; SizeOf(TInAddr)
IP6_ADDRESS_SIZE = 16; SizeOf(TIn6Addr)
IPX_ADDRESS_SIZE = 12; SizeOf(TIpxAddr)


Transport socket TTL_*
TTL_DEFAULT = 128; Default to 128 Seconds/Hops (Defined as 64)
TOS_DEFAULT = 0;  
HOPLIMIT_DEFAULT = 255; Default to 255 Hops (Defined as 64)
ID_INCREMENT = 1; Default Increment for ID Numbers
TTL_DECREMENT = 1; Default Decrement for TTL when Forwarding
SEND_TIMEOUT = 0; Default to wait forever on Send
RECV_TIMEOUT = 0; Default to wait forever on Recv
CLOSE_TIMEOUT = 3000; Time that Socket is kept before destruction
LINGER_TIMEOUT = 60000; Time that Socket goes into Linger state for
CONNECT_TIMEOUT = 5000; Time that Socket waits for connect completion
TIMEWAIT_TIMEOUT = 240000; Time that Socket goes into TimeWait state for (2 x MSL)


Shutdown constants SHUTDOWN_*
SHUTDOWN_RECV = 0;  
SHUTDOWN_SEND = 1;  
SHUTDOWN_BOTH = 2;  


Select constants SELECT_*
SELECT_READ = 0;  
SELECT_WRITE = 1;  
SELECT_ERROR = 2;  
 
SELECT_UNKNOWN = -1;  


Socket state SS_*
SS_NOFDREF = $0001; no file table ref any more
SS_UNCONNECTED = SS_NOFDREF; or just created socket
SS_ISCONNECTED = $0002; socket connected to a peer
SS_ISCONNECTING = $0004; in process of connecting
SS_ISDISCONNECTING = $0008; in process of disconnecting
SS_CANTSENDMORE = $0010; can't send more data
SS_CANTRCVMORE = $0020; can't receive more data
SS_RCVATMARK = $0040; at mark on input
 
SS_PRIV = $0080; privileged for broadcast
SS_NBIO = $0100; non-blocking ops
SS_ASYNC = $0200; async i/o notify
SS_ISCONFIRMING = $0400; accepting connection req
SS_ISLISTENING = SS_ISCONFIRMING; non standard
 
SS_LOCAL_ADDR = $0800; has local address/port (not used)
SS_REMOTE_ADDR = $1000; has remote address/port (not used)
SS_CONN_REFUSED = $2000; connection refused (ICMP_UNREACH)
SS_CLOSED = $4000; socket has been closed


IPv4 transport IP_*
IP_LOOPBACK_ADDRESS:TInAddr = (S_addr: $7F000001); 127.0.0.1
IP_LOOPBACK_NETWORK:TInAddr = (S_addr: $7F000000); 127.0.0.0
IP_LOOPBACK_NETMASK:TInAddr = (S_addr: $FF000000); 255.0.0.0
IP_BROADCAST_ADDRESS:TInAddr = (S_addr: $FFFFFFFF); 255.255.255.255
IP_BROADCAST_NETWORK:TInAddr = (S_addr: $FFFFFFFF); 255.255.255.255
IP_BROADCAST_NETMASK:TInAddr = (S_addr: $FFFFFFFF); 255.255.255.255
IP_DEFAULT_ADDRESS:TInAddr = (S_addr: $00000000); 0.0.0.0
IP_DEFAULT_NETWORK:TInAddr = (S_addr: $00000000); 0.0.0.0
IP_DEFAULT_NETMASK:TInAddr = (S_addr: $00000000); 0.0.0.0
IP_MULTICAST_HOSTS:TInAddr = (S_addr: $E0000001); 224.0.0.1 (All Hosts)
IP_MULTICAST_ROUTERS:TInAddr = (S_addr: $E0000002); 224.0.0.2 (All Routers)
IP_MULTICAST_NETWORK:TInAddr = (S_addr: $E0000000); 224.0.0.0
IP_MULTICAST_NETMASK:TInAddr = (S_addr: $F0000000); 240.0.0.0
Note: The recommended range for general use is 234.0.0.0 to 238.255.255.255
 
IP_CLASSA_NETMASK:TInAddr = (S_addr: $FF000000); 255.0.0.0
IP_CLASSB_NETMASK:TInAddr = (S_addr: $FFFF0000); 255.255.0.0
IP_CLASSC_NETMASK:TInAddr = (S_addr: $FFFFFF00); 255.255.255.0
IP_CLASSD_NETMASK:TInAddr = (S_addr: $F0000000); 240.0.0.0
IP_CLASSE_NETMASK:TInAddr = (S_addr: $F0000000); 240.0.0.0


IPv6 transport IP6_*
IP6_LOOPBACK_ADDRESS:TIn6Addr = (S6_addr: ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01));  
IP6_DEFAULT_ADDRESS:TIn6Addr = (S6_addr: ($00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00));  


Type definitions



Transport statistics

PTransportStatistics = ^TTransportStatistics;

TTransportStatistics = record

Note: Generic Transport
PacketsIn:Int64;  
PacketsOut:Int64;  
BytesIn:Int64;  
BytesOut:Int64;  
ErrorsIn:Int64;  
ErrorsOut:Int64;  
PacketsLost:Int64;  

IPv4 nameservers

PIPNameservers = ^TIPNameservers;

TIPNameservers = array[0..MAX_NAME_SERVERS - 1] of TInAddr;

Note: IP4 Transport
   

IPv6 nameservers

PIP6Nameservers = ^TIP6Nameservers;

TIP6Nameservers = array[0..MAX_NAME_SERVERS - 1] of TIn6Addr;

Note: IP6 Transport
   

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

procedure TransportInit;
Description: To be documented
Note None documented


function TransportStart:LongWord;
Description: To be documented
Note None documented


function TransportStop:LongWord;
Description: To be documented
Note None documented


function TransportBind:LongWord;
Description: To be documented
Note None documented


function TransportUnbind:LongWord;
Description: To be documented
Note None documented


Transport functions

function InAddrToHost(const AAddress:TInAddr):TInAddr; inline;
Description: Convert an InAddr in Network order to Host order
Note None documented


function InAddrToNetwork(const AAddress:TInAddr):TInAddr; inline;
Description: Convert an InAddr in Host order to Network order
Note None documented


function InAddrToString(const AAddress:TInAddr):String;
Description: Convert an InAddr to a String
Note Expects Address to be in Network order


function StringToInAddr(const AAddress:String):TInAddr;
Description: Convert a String to an InAddr
Note Returns Address in Network order


function InAddrIsEqual(const AAddress1,AAddress2:TInAddr):Boolean;
Description: Check the supplied addresses to see if they are the same
Note Expects Address to be in Host order


function InAddrIsNone(const AAddress:TInAddr):Boolean;
Description: Check the supplied address to see if it is equal to INADDR_NONE
Note Expects Address to be in Host order


function InAddrIsDefault(const AAddress:TInAddr):Boolean;
Description: Check the supplied address to see if it is the default address
Note Expects Address to be in Host order


function InAddrIsLoopback(const AAddress:TInAddr):Boolean;
Description: Check the supplied address to see if it is a loopback address
Note Expects Address to be in Host order


function InAddrIsBroadcast(const AAddress:TInAddr):Boolean;
Description: Check the supplied address to see if it is the broadcast address
Note Expects Address to be in Host order


function InAddrIsMulticast(const AAddress:TInAddr):Boolean;
Description: Check the supplied address to see if it is a multicast address
Note Expects Address to be in Host order


function In6AddrToString(const AAddress:TIn6Addr):String;
Description: To be documented
Note None documented


function StringToIn6Addr(const AAddress:String):TIn6Addr;
Description: To be documented
Note None documented


function In6AddrIsEqual(const AAddress1,AAddress2:TIn6Addr):Boolean;
Description: Check the supplied addresses to see if they are the same
Note None documented


function In6AddrIsDefault(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is the default address
Note None documented


function In6AddrIsLoopback(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a loopback address
Note None documented


function In6AddrIsLinkLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a link local address
Note None documented


function In6AddrIsSiteLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a site local address
Note None documented


function In6AddrIsV4Mapped(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a V4 mapped address
Note None documented


function In6AddrIsV4Compatible(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a V4 compatible address
Note None documented


function In6AddrIsMulticast(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast address
Note None documented


function In6AddrIsMulticastNodeLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast node local address
Note None documented


function In6AddrIsMulticastLinkLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast link local address
Note None documented


function In6AddrIsMulticastSiteLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast site local address
Note None documented


function In6AddrIsMulticastOrgLocal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast org local address
Note None documented


function In6AddrIsMulticastGlobal(const AAddress:TIn6Addr):Boolean;
Description: Check the supplied address to see if it is a multicast global address
Note None documented


function IpxAddrToString(const AAddress:TIpxAddr):String;
Description: To be documented
Note None documented


function StringToIpxAddr(const AAddress:String):TIpxAddr;
Description: To be documented
Note None documented


function GetChecksum(ABuffer:Pointer; AOffset,ALength:Word):Word;
Description: Calculate the 1s Compliment Checksum of the Supplied Buffer
Note None documented


function GetChecksum2(APseudo,ABuffer:Pointer; APseudoLength,ABufferOffset,ABufferLength:Word):Word;
Description: Calculate the 1s Compliment Checksum of the Supplied Pseudo and Buffer
Note Pseudo is expected to start from Offset 0


function GetChecksum3(APseudo,AHeader,AData:Pointer; APseudoLength,AHeaderLength,ADataOffset,ADataLength:Word):Word;
Description: Calculate the 1s Compliment Checksum of the Supplied Pseudo, Header and Data
Note Pseudo and Header are expected to start from Offset 0


function GetChecksum4(APseudo,AHeader,AOptions,AData:Pointer; APseudoLength,AHeaderLength,AOptionsLength,ADataOffset,ADataLength:Word):Word;
Description: Calculate the 1s Compliment Checksum of the Supplied Pseudo, Header, Options and Data
Note Pseudo, Header and Options are expected to start from Offset 0.


Transport helper functions

function HostTypeToString(AType:Word):String;
Description: To be documented
Note None documented


function RouteTypeToString(AType:Word):String;
Description: To be documented
Note None documented


function AddressTypeToString(AType:Word):String;
Description: To be documented
Note None documented


function ProtocolToString(AProtocol:Word):String;
Description: To be documented
Note None documented


function SocketTypeToString(ASocketType:Word):String;
Description: To be documented
Note None documented


function AddressFamilyToString(AFamily:Word):String;
Description: To be documented
Note None documented


Return to Unit Reference