Difference between revisions of "Unit GlobalSock"

From Ultibo.org
Jump to: navigation, search
 
(23 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo Global Socket Definitions'''
+
'''Ultibo Global Socket Definitions unit'''
 
+
''To be documented''
+
  
 
=== Constants ===
 
=== Constants ===
Line 131: Line 129:
 
|colspan="2"|''Maximum queue length specifiable by listen''
 
|colspan="2"|''Maximum queue length specifiable by listen''
 
|-
 
|-
| <code>SOMAXCONN = 5;</code>
+
| <code>SOMAXCONN = $7fffffff;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 192: Line 190:
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>INET6_ADDRSTR_INIT = '0::0';</code>
+
| <code>INET6_ADDRSTR_ANY = '::';</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 212: Line 210:
 
<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;">'''IP protocol constants''' <code> IPPROTO_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''IP protocol''' <code> IPPROTO_* </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 288: Line 286:
 
<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;">'''IP port constants ''' <code> IPPORT_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''IP port''' <code> IPPORT_* </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 318: Line 316:
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>IPPORT_SMTP = 5;</code>
+
| <code>IPPORT_SMTP = 25;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 401: Line 399:
 
<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;">'''IP options constants''' <code> IP_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''IP options''' <code> IP_* </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 454: Line 452:
 
<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 type constants''' <code> SOCK_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Socket type''' <code> SOCK_* </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 483: Line 481:
 
<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 option constants''' <code> SO_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Socket options''' <code> SO_* </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 517: Line 515:
 
| <code>SO_OOBINLINE = $0100;</code>
 
| <code>SO_OOBINLINE = $0100;</code>
 
| leave received OOB data in line
 
| leave received OOB data in line
 +
|-
 +
| <code>SO_REUSEPORT = $0200;</code>
 +
| allow local address & port reuse
 +
|-
 +
| <code>SO_TIMESTAMP = $0400;</code>
 +
| timestamp received dgram traffic
 +
|-
 +
| <code>SO_ACCEPTFILTER = $1000;</code>
 +
| there is an accept filter
 
|-
 
|-
 
|colspan="2"|&nbsp;  
 
|colspan="2"|&nbsp;  
 
|-
 
|-
| <code>SO_DONTLINGER = $ff7f;</code>
+
| <code>SO_DONTLINGER = not(SO_LINGER);</code>
| &nbsp;
+
| ($ff7f)
 +
|-
 +
| <code>SO_EXCLUSIVEADDRUSE = not(SO_REUSEADDR);</code>
 +
| disallow local address reuse ($fffb)
 
|-
 
|-
 
|colspan="2"|&nbsp;  
 
|colspan="2"|&nbsp;  
Line 615: Line 625:
 
<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;">'''TCP option constants''' <code> TCP_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''TCP options''' <code> TCP_* </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 646: Line 656:
 
<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;">'''UDP option constants''' <code> UDP_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''UDP options''' <code> UDP_* </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 657: Line 667:
 
<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;">'''Address family constants''' <code> AF_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Address family''' <code> AF_* </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 678: Line 688:
 
| <code>AF_CHAOS = 5;</code>
 
| <code>AF_CHAOS = 5;</code>
 
| mit CHAOS protocols
 
| mit CHAOS protocols
|-
 
| <code>AF_IPX = 6;</code>
 
| IPX and SPX
 
 
|-
 
|-
 
| <code>AF_NS = 6;</code>
 
| <code>AF_NS = 6;</code>
 
| XEROX NS protocols
 
| XEROX NS protocols
 +
|-
 +
| <code>AF_IPX = AF_NS;</code>
 +
| IPX and SPX
 
|-
 
|-
 
| <code>AF_ISO = 7;</code>
 
| <code>AF_ISO = 7;</code>
Line 750: Line 760:
 
| <code>AF_NETDES = 28;</code>
 
| <code>AF_NETDES = 28;</code>
 
| Network Designers OSI & gateway enabled
 
| Network Designers OSI & gateway enabled
 +
|-
 +
| <code>AF_TCNPROCESS = 29;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_TCNMESSAGE = 30;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_ICLFXBM = 31;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_BTH = 32;</code>
 +
| Bluetooth RFCOMM/L2CAP protocols
 +
|-
 +
| <code>AF_LINK = 33;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AF_HYPERV = 34;</code>
 +
| &nbsp;
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
 
|-
 
|-
| <code>AF_MAX = 29;</code>
+
| <code>AF_MAX = 35;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</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;">'''Storage structure''' <code> _SS_* </code></div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
|colspan="2"|Definitions used for sockaddr_storage structure paddings design
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>_SS_MAXSIZE = 128;</code>
 +
| Maximum size
 +
|-
 +
| <code>_SS_ALIGNSIZE = SizeOf(Int64);</code>
 +
| Alignment size
 +
|-
 +
| <code>_SS_PAD1SIZE = _SS_ALIGNSIZE - SizeOf(SHORT);</code>
 +
| &nbsp;
 +
|-
 +
| <code>_SS_PAD2SIZE = _SS_MAXSIZE - (SizeOf(SHORT) + _SS_PAD1SIZE + _SS_ALIGNSIZE);</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 760: Line 812:
 
<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;">'''Protocol family constants''' <code> PF_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Protocol family''' <code> PF_* </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 846: Line 898:
 
|-
 
|-
 
| <code>PF_NETDES = AF_NETDES;</code>
 
| <code>PF_NETDES = AF_NETDES;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_TCNPROCESS = AF_TCNPROCESS;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_TCNMESSAGE = AF_TCNMESSAGE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_ICLFXBM = AF_ICLFXBM;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_BTH = AF_BTH;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_LINK = AF_LINK;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PF_HYPERV = AF_HYPERV;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 857: Line 927:
 
<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;">'''Message flag constants''' <code> MSG_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Message flag''' <code> MSG_* </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 887: Line 957:
 
<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 error constants''' <code> WSAE*, EAI_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Socket error''' <code> WSAE*, EAI_* </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 1,345: Line 1,415:
 
|-
 
|-
 
| <code>EAI_NODATA = EAI_NONAME;</code>
 
| <code>EAI_NODATA = EAI_NONAME;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
|colspan="2"|''Error strings from getaddrinfo()''
 +
|-
 +
| <code>EAI_AGAIN_STR = 'Temporary failure in name resolution';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_BADFLAGS_STR = 'Invalid parameters';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_FAIL_STR = 'Nonrecoverable failure in name resolution';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_FAMILY_STR = 'Address family not supported';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_MEMORY_STR = 'Memory allocation failure';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_NONAME_STR = 'Name does not resolve';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_SERVICE_STR = 'Service not supported';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_SOCKTYPE_STR = 'Socket type not supported';</code>
 +
| &nbsp;
 +
|-
 +
| <code>EAI_UNKNOWN_STR = 'Unknown error';</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,368: Line 1,469:
 
<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;">'''WsControlEx option constants''' <code> WSA_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''WsControlEx options''' <code> WSA_* </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 1,421: Line 1,522:
 
|-
 
|-
 
| <code>WSA_USE_CURRENT_FORWARDING = DWORD(-1);</code>
 
| <code>WSA_USE_CURRENT_FORWARDING = DWORD(-1);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_NON_OPERATIONAL = 0;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_UNREACHABLE = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_DISCONNECTED = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_CONNECTING = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_CONNECTED = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_OPER_STATUS_OPERATIONAL = 5;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IF_TYPE_OTHER = 1;</code>
 +
| Some other type of network interface
 +
|-
 +
| <code>WSA_IF_TYPE_ETHERNET_CSMACD = 6;</code>
 +
| An Ethernet network interface
 +
|-
 +
| <code>WSA_IF_TYPE_ISO88025_TOKENRING = 9;</code>
 +
| A token ring network interface
 +
|-
 +
| <code>WSA_IF_TYPE_FDDI = 15;</code>
 +
| A Fiber Distributed Data Interface (FDDI) network interface
 +
|-
 +
| <code>WSA_IF_TYPE_PPP = 23;</code>
 +
| A PPP network interface
 +
|-
 +
| <code>WSA_IF_TYPE_SOFTWARE_LOOPBACK = 24;</code>
 +
| A software loopback network interface
 +
|-
 +
| <code>WSA_IF_TYPE_SLIP = 28;</code>
 +
| A SLIP network interface
 +
|-
 +
| <code>WSA_IF_TYPE_ATM = 37;</code>
 +
| An ATM network interface
 +
|-
 +
| <code>WSA_IF_TYPE_IEEE80211 = 71;</code>
 +
| An IEEE 802.11 wireless network interface
 +
|-
 +
| <code>WSA_IF_TYPE_TUNNEL = 131;</code>
 +
| A tunnel type encapsulation network interface
 +
|-
 +
| <code>WSA_IF_TYPE_IEEE1394 = 144;</code>
 +
| An IEEE 1394 (Firewire) high performance serial bus network interface
 +
|-
 +
| <code>WSA_IF_TYPE_IEEE80216_WMAN = 237;</code>
 +
| A mobile broadband interface for WiMax devices
 +
|-
 +
| <code>WSA_IF_TYPE_WWANPP = 243;</code>
 +
| A mobile broadband interface for GSM-based devices
 +
|-
 +
| <code>WSA_IF_TYPE_WWANPP2 = 244;</code>
 +
| A mobile broadband interface for CDMA-based devices
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IF_ADMIN_STATUS_UP = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_ADMIN_STATUS_DOWN = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IF_ADMIN_STATUS_TESTING = 3;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_CLOSED = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_LISTEN = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_SYN_SENT = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_SYN_RCVD = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_ESTAB = 5;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_FIN_WAIT1 = 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_FIN_WAIT2 = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_CLOSE_WAIT = 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_CLOSING = 9;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_LAST_ACK = 10;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_TIME_WAIT = 11;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_TCP_STATE_DELETE_TCB = 12;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,429: Line 1,643:
 
|-
 
|-
 
| <code>WSA_IP_NOT_FORWARDING = 2;</code>
 
| <code>WSA_IP_NOT_FORWARDING = 2;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IPROUTE_TYPE_OTHER = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPROUTE_TYPE_INVALID = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPROUTE_TYPE_DIRECT = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPROUTE_TYPE_INDIRECT = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPROUTE_METRIC_UNUSED = DWORD(-1);</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_OTHER = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_LOCAL = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_NETMGMT = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_ICMP = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_EGP = 5;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_GGP = 6;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_HELLO = 7;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_RIP = 8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_IS_IS = 9;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_ES_IS = 10;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_CISCO = 11;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_BBN = 12;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_OSPF = 13;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_BGP = 14;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_NT_AUTOSTATIC = 10002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_NT_STATIC = 10006;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPPROTO_NT_STATIC_NON_DOD = 10007;</code>
 +
| &nbsp;
 +
|-
 +
|colspan="2"|&nbsp;
 +
|-
 +
| <code>WSA_IPNET_TYPE_OTHER = 1;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPNET_TYPE_INVALID = 2;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPNET_TYPE_DYNAMIC = 3;</code>
 +
| &nbsp;
 +
|-
 +
| <code>WSA_IPNET_TYPE_STATIC = 4;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 1,583: Line 1,881:
 
<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;">'''Address info flag constants''' <code> AI_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Address info flag''' <code> AI_* </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 1,633: Line 1,931:
 
<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;">'''Name info flag constants''' <code> NI_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''Name info flag''' <code> NI_* </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 1,671: Line 1,969:
 
----
 
----
  
''To be documented''
+
 
 +
'''Integer types'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>tOS_INT = LongInt;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>tOS_UINT = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>ptOS_INT = ^tOS_INT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>ptOS_UINT = ^tOS_UINT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>u_int = tOS_UINT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>pu_int = ^u_int;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Character types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>u_char = Char;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>pu_char = ^u_char;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Numeric types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>u_short = Word;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>pu_short = ^u_short;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>u_long = DWORD;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>pu_long = ^u_long;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket types'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>TSocket = GlobalTypes.TSocket;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''WSA event'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>WSAEVENT = GlobalTypes.WSAEVENT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>PWSAEVENT = ^WSAEVENT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>LPWSAEVENT = PWSAEVENT;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''MB character'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PMBChar = PChar;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''FD set'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TFDSet = fdset;</code>
 +
 
 +
<code>PFDSet = ^TFDSet;</code>
 +
 
 +
<code>fdset = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>fd_count: u_int;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>fd_array: array[0..FD_SETSIZE-1] of TSocket;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Time value'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TTimeVal = timeval;</code>
 +
 
 +
<code>PTimeVal = ^TTimeVal;</code>
 +
 
 +
<code>timeval = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>tv_sec: LongInt;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>tv_usec: LongInt;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Host entry'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>THostEnt = hostent;</code>
 +
 
 +
<code>PHostEnt = ^THostEnt;</code>
 +
 
 +
<code>hostent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>h_name: PChar;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>h_aliases: ^PChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>h_addrtype: Smallint;</code>
 +
| &nbsp;
 +
|-
 +
| <code>h_length: Smallint;</code>
 +
| &nbsp;
 +
|-
 +
| <code>case Byte of</code>
 +
| &nbsp;
 +
|-
 +
| <code>0: (h_addr_list: ^PChar);</code>
 +
| Network order
 +
|-
 +
| <code>1: (h_addr: ^PChar)</code>
 +
| Network order
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Network entry''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TNetEnt = netent;</code>
 +
 
 +
<code>PNetEnt = ^TNetEnt;</code>
 +
 
 +
<code>netent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>n_name: PChar;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>n_aliases: ^PChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>n_addrtype: Smallint;</code>
 +
| &nbsp;
 +
|-
 +
| <code>n_net: u_long;</code>
 +
| Network order
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Service entry''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TServEnt = servent;</code>
 +
 
 +
<code>PServEnt = ^TServEnt;</code>
 +
 
 +
<code>servent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>s_name: PChar;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>s_aliases: ^PChar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>s_port: Smallint;</code>
 +
| &nbsp;
 +
|-
 +
| <code>s_proto: PChar;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Protocol entry''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TProtoEnt = protoent;</code>
 +
 
 +
<code>PProtoEnt = ^TProtoEnt;</code>
 +
 
 +
<code>protoent = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>p_name: PChar;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>p_aliases: ^Pchar;</code>
 +
| &nbsp;
 +
|-
 +
| <code>p_proto: Smallint;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Address types'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>SunB = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>s_b1, s_b2, s_b3, s_b4: u_char;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
 
 +
<code>SunW = packed record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>s_w1, s_w2: u_short;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''IPv4 address'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TInAddr = in_addr;</code>
 +
 
 +
<code>PInAddr = ^TInAddr;</code>
 +
 
 +
<code>in_addr = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>case integer of</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>0: (S_un_b: SunB);</code>
 +
| &nbsp;
 +
|-
 +
| <code>1: (S_un_w: SunW);</code>
 +
| &nbsp;
 +
|-
 +
| <code>2: (S_addr: u_long);</code>
 +
| &nbsp;
 +
|-
 +
| <code>3: (S_bytes: packed array[1..4] of Byte);</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''IPv6 address'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TIn6Addr = in6_addr;</code>
 +
 
 +
<code>PIn6Addr = ^TIn6Addr;</code>
 +
 
 +
<code>in6_addr = 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: IPv6 version of above
 +
|-
 +
| <code>case byte of</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>0: (u6_addr8 : array[0..15] of byte);</code>
 +
| &nbsp;
 +
|-
 +
| <code>1: (u6_addr16 : array[0..7] of Word);</code>
 +
| &nbsp;
 +
|-
 +
| <code>2: (u6_addr32 : array[0..3] of Cardinal);</code>
 +
| &nbsp;
 +
|-
 +
| <code>3: (s6_addr8 : array[0..15] of shortint);</code>
 +
| &nbsp;
 +
|-
 +
| <code>4: (s6_addr : array[0..15] of shortint);</code>
 +
| &nbsp;
 +
|-
 +
| <code>5: (s6_addr16 : array[0..7] of smallint);</code>
 +
| &nbsp;
 +
|-
 +
| <code>6: (s6_addr32 : array[0..3] of LongInt);</code>
 +
| &nbsp;
 +
|-
 +
| <code>case integer of</code>
 +
| &nbsp;
 +
|-
 +
| <code>0: (S6_u8: array[0..15] of u_char);</code>
 +
| &nbsp;
 +
|-
 +
| <code>1: (S6_u32: array[0..3] of u_int);</code>
 +
| &nbsp;
 +
|-
 +
| <code>2: (S6_u64: array[0..1] of Int64);</code>
 +
| &nbsp;
 +
|-
 +
| <code>S6_addr: array [0..15] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''IPX address'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TIpxAddr = ipx_addr;</code>
 +
 
 +
<code>PIpxAddr = ^TIpxAddr;</code>
 +
 
 +
<code>ipx_addr = 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: IPX version of above
 +
|-
 +
| <code>S_net: array [0..3] of Byte;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>S_node: array [0..5] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>S_socket: Word;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''Socket address IPv4'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSockAddrIn = sockaddr_in;</code>
 +
 
 +
<code>PSockAddrIn = ^TSockAddrIn;</code>
 +
 
 +
<code>sockaddr_in = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>case Integer of</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>0: (sin_family: u_short;</code>
 +
| &nbsp;
 +
|-
 +
| <code>sin_port: u_short;</code>
 +
| &nbsp;
 +
|-
 +
| <code>sin_addr: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>sin_zero: array[0..7] of Char);</code>
 +
| &nbsp;
 +
|-
 +
| <code>1: (sa_family: u_short;</code>
 +
| &nbsp;
 +
|-
 +
| <code>sa_data: array[0..13] of Char)</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>  
 +
 
 +
'''Socket address IPv6'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSockAddr6 = sockaddr_in6;</code>
 +
 
 +
<code>PSOCKADDR6 = ^TSockAddr6;</code>
 +
 
 +
<code>TSockAddrIn6 = sockaddr_in6;</code>
 +
 
 +
<code>PSockAddrIn6 = ^TSockAddrIn6;</code>
 +
 
 +
<code>sockaddr_in6 = 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: IPv6 version of above
 +
|-
 +
| <code>sin6_family: u_short;</code>
 +
| AF_INET6
 +
|-
 +
| <code>sin6_port: u_short;</code>
 +
| transport layer port #
 +
|-
 +
| <code>sin6_flowinfo: u_int;</code>
 +
| IPv6 flow information
 +
|-
 +
| <code>sin6_addr: in6_addr;</code>
 +
| IPv6 address
 +
|-
 +
| <code>sin6_scope_id: u_int;</code>
 +
| set of interfaces for a scope
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Socket address IPX'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSockAddrIpx = sockaddr_ipx;</code>
 +
 
 +
<code>PSockAddrIpx = ^TSockAddrIpx;</code>
 +
 
 +
<code>sockaddr_ipx = 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: IPX version of above
 +
|-
 +
| <code>sipx_family: u_short;</code>
 +
| AF_IPX
 +
|-
 +
| <code>sipx_addr: ipx_addr;</code>
 +
| IPX address
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Socket address'''
 +
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PSOCKADDR = ^TSockAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TSockAddr = sockaddr_in;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''Socket protocol'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSockProto = sockproto;</code>
 +
 
 +
<code>PSockProto = ^TSockProto;</code>
 +
 
 +
<code>sockproto = 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: Structure used by kernel to pass protocol information in raw sockets
 +
|-
 +
| <code>sp_family: u_short;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>sp_protocol: u_short;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Storage'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TSockAddrStorage = sockaddr_storage;</code>
 +
 
 +
<code>PSockAddrStorage = ^TSockAddrStorage;</code>
 +
 
 +
<code>sockaddr_storage = 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: RFC 2553: protocol-independent placeholder for socket addresses
 +
|-
 +
| <code>ss_family: word;</code>
 +
| Address family
 +
|-
 +
| <code>__ss_pad1: array [0.._SS_PAD1SIZE - 1] of Char;</code>
 +
| 6 byte pad, this is to make implementation specific pad up to alignment field that follows explicit in the data structure.
 +
|-
 +
| <code>__ss_align: Int64;</code>
 +
| Field to force desired structure
 +
|-
 +
| <code>__ss_pad2: array [0.._SS_PAD2SIZE - 1] of Char;</code>
 +
| 112 byte pad to achieve desired size (_SS_MAXSIZE value minus size of ss_family, __ss_pad1, and __ss_align fields is 112)
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Linger'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TLinger = linger;</code>
 +
 
 +
<code>PLinger = ^TLinger;</code>
 +
 
 +
<code>linger = 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: Structure used for manipulating linger option
 +
|-
 +
| <code>l_onoff: u_short;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>l_linger: u_short;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA data''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAData = WSAData;</code>
 +
 
 +
<code>PWSAData = ^TWSAData;</code>
 +
 
 +
<code>WSAData = 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: Also WSDATA
 +
|-
 +
| <code>wVersion: Word;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>wHighVersion: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>szDescription: array[0..WSADESCRIPTION_LEN] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>iMaxSockets: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>iMaxUdpDg: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>lpVendorInfo: PChar;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''Transmit file buffers''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;</code>
 +
 
 +
<code>TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;</code>
 +
 
 +
<code>PTransmitFileBuffers = ^TTransmitFileBuffers;</code>
 +
 
 +
<code>_TRANSMIT_FILE_BUFFERS = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Head: Pointer;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>HeadLength: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Tail: Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TailLength: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Multicast request'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TMulticastRequest = ip_mreq;</code>
 +
 
 +
<code>PMulticastRequest = ^TMulticastRequest;</code>
 +
 
 +
<code>ip_mreq = 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: Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP
 +
|-
 +
| <code>IMRMultiAddr : TInAddr;</code>
 +
| IP multicast address of group
 +
|-
 +
| <code>IMRInterface : TInAddr;</code>
 +
| local IP address of interface
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA interface row'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIfRow = WSA_IFROW;</code>
 +
 
 +
<code>PWSAIfRow = PWSA_IFROW;</code>
 +
 
 +
<code>PWSA_IFROW = ^WSA_IFROW;</code>
 +
 
 +
<code>WSA_IFROW = 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: Structures for WsControlEx (Note: Must be same as IP Helper)
 +
|-
 +
| <code>wszName: array [0..WSA_MAX_INTERFACE_NAME_LEN - 1] of WideChar;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwIndex: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwType: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwMtu: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwSpeed: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwPhysAddrLen: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bPhysAddr: array [0..WSA_MAXLEN_PHYSADDR - 1] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwAdminStatus: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOperStatus: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwLastChange: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInOctets: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInUcastPkts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInNUcastPkts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInDiscards: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInUnknownProtos: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutOctets: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutUcastPkts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutNUcastPkts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutDiscards: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutQLen: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwDescrLen: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bDescr: array[0..WSA_MAXLEN_IFDESCR - 1] of Byte;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''WSA interface table''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIftable = WSA_IFTABLE;</code>
 +
 
 +
<code>PWSAIftable = PWSA_IFTABLE;</code>
 +
 
 +
<code>PWSA_IFTABLE = ^WSA_IFTABLE;</code>
 +
 
 +
<code>WSA_IFTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IFROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA ICMP statistics'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIcmpStats = WSAICMPSTATS;</code>
 +
 
 +
<code>PWSAIcmpStats = ^TWSAIcmpStats;</code>
 +
 
 +
<code>WSAICMPSTATS = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwMsgs: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwDestUnreachs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwTimeExcds: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwParmProbs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwSrcQuenchs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRedirects: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwEchos: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwEchoReps: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwTimestamps: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwTimestampReps: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwAddrMasks: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwAddrMaskReps: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA ICMP information'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIcmpInfo = WSAICMPINFO;</code>
 +
 
 +
<code>PWSAIcmpInfo = ^TWSAIcmpInfo;</code>
 +
 
 +
<code>WSAICMPINFO = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>icmpInStats: WSAICMPSTATS;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>icmpOutStats: WSAICMPSTATS;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA ICMP'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIcmp = WSA_ICMP;</code>
 +
 
 +
<code>PWSAIcmp = PWSA_ICMP;</code>
 +
 
 +
<code>PWSA_ICMP = ^WSA_ICMP;</code>
 +
 
 +
<code>WSA_ICMP = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>stats: WSAICMPINFO;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA UDP statistics'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAUdpStats = WSA_UDPSTATS;</code>
 +
 
 +
<code>PWSAUdpStats = PWSA_UDPSTATS;</code>
 +
 
 +
<code>PWSA_UDPSTATS = ^WSA_UDPSTATS;</code>
 +
 
 +
<code>WSA_UDPSTATS = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwInDatagrams: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwNoPorts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutDatagrams: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwNumAddrs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA UDP row'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAUdpRow = WSA_UDPROW;</code>
 +
 
 +
<code>PWSAUdpRow = PWSA_UDPROW;</code>
 +
 
 +
<code>PWSA_UDPROW = ^WSA_UDPROW;</code>
 +
 
 +
<code>WSA_UDPROW = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwLocalAddr: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwLocalPort: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA UDP table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAUdpTable = WSA_UDPTABLE;</code>
 +
 
 +
<code>PWSAUdpTable = PWSA_UDPTABLE;</code>
 +
 
 +
<code>PWSA_UDPTABLE = ^WSA_UDPTABLE;</code>
 +
 
 +
<code>WSA_UDPTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_UDPROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''WSA TCP statistics '''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSATcpStats = WSA_TCPSTATS;</code>
 +
 
 +
<code>PWSATcpStats = PWSA_TCPSTATS;</code>
 +
 
 +
<code>PWSA_TCPSTATS = ^WSA_TCPSTATS;</code>
 +
 
 +
<code>WSA_TCPSTATS = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwRtoAlgorithm: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwRtoMin: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRtoMax: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwMaxConn: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwActiveOpens: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwPassiveOpens: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwAttemptFails: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwEstabResets: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwCurrEstab: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInSegs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutSegs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRetransSegs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInErrs: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutRsts: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwNumConns: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA TCP row'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSATcpRow = WSA_TCPROW;</code>
 +
 
 +
<code>PWSATcpRow = PWSA_TCPROW;</code>
 +
 
 +
<code>PWSA_TCPROW = ^WSA_TCPROW;</code>
 +
 
 +
<code>WSA_TCPROW = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwState: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwLocalAddr: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwLocalPort: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRemoteAddr: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRemotePort: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA TCP table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSATcpTable = WSA_TCPTABLE;</code>
 +
 
 +
<code>PWSATcpTable = PWSA_TCPTABLE;</code>
 +
 
 +
<code>PWSA_TCPTABLE = ^WSA_TCPTABLE;</code>
 +
 
 +
<code>WSA_TCPTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_TCPROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP statistics''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpStats = WSA_IPSTATS;</code>
 +
 
 +
<code>PWSAIpStats = PWSA_IPSTATS;</code>
 +
 
 +
<code>PWSA_IPSTATS = ^WSA_IPSTATS;</code>
 +
 
 +
<code>WSA_IPSTATS = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwForwarding: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwDefaultTTL: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInReceives: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInHdrErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInAddrErrors: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwDatagrams: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInUnknownProtos: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInDiscards: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwInDelivers: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutRequests: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwRoutingDiscards: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutDiscards: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwOutNoRoutes: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwReasmTimeout: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwReasmReqds: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwReasmOks: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwReasmFails: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwFragOks: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwFragFails: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwFragCreates: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwNumIf: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwNumAddr: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwNumRoutes: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA IP address row''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpAddrRow = WSA_IPADDRROW;</code>
 +
 
 +
<code>PWSAIpAddrRow = PWSA_IPADDRROW;</code>
 +
 
 +
<code>PWSA_IPADDRROW = ^WSA_IPADDRROW;</code>
 +
 
 +
<code>WSA_IPADDRROW = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwAddr: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwIndex: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwMask: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwBCastAddr: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwReasmSize: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>unused1: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>unused2: Word;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA IP address table''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpAddrTable = WSA_IPADDRTABLE;</code>
 +
 
 +
<code>PWSAIpAddrTable = PWSA_IPADDRTABLE;</code>
 +
 
 +
<code>PWSA_IPADDRTABLE = ^WSA_IPADDRTABLE;</code>
 +
 
 +
<code>WSA_IPADDRTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IPADDRROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP forward number'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpForwardNumber = WSA_IPFORWARDNUMBER;</code>
 +
 
 +
<code>PWSAIpForwardNumber = PWSA_IPFORWARDNUMBER;</code>
 +
 
 +
<code>PWSA_IPFORWARDNUMBER = ^WSA_IPFORWARDNUMBER;</code>
 +
 
 +
<code>WSA_IPFORWARDNUMBER = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwValue: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP forward row'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpForwardRow = WSA_IPFORWARDROW;</code>
 +
 
 +
<code>PWSAIpForwardRow = PWSA_IPFORWARDROW;</code>
 +
 
 +
<code>PWSA_IPFORWARDROW = ^WSA_IPFORWARDROW;</code>
 +
 
 +
<code>WSA_IPFORWARDROW = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwForwardDest: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwForwardMask: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardPolicy: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardNextHop: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardIfIndex: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardType: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardProto: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardAge: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardNextHopAS: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardMetric1: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardMetric2: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardMetric3: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardMetric4: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwForwardMetric5: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP forward table'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpForwardTable = WSA_IPFORWARDTABLE;</code>
 +
 
 +
<code>PWSAIpForwardTable = PWSA_IPFORWARDTABLE;</code>
 +
 
 +
<code>PWSA_IPFORWARDTABLE = ^WSA_IPFORWARDTABLE;</code>
 +
 
 +
<code>WSA_IPFORWARDTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IPFORWARDROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP net row'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpNetRow = WSA_IPNETROW;</code>
 +
 
 +
<code>PWSAIpNetRow = PWSA_IPNETROW;</code>
 +
 
 +
<code>PWSA_IPNETROW = ^WSA_IPNETROW;</code>
 +
 
 +
<code>WSA_IPNETROW = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwIndex: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>dwPhysAddrLen: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>bPhysAddr: array [0..WSA_MAXLEN_PHYSADDR - 1] of BYTE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwAddr: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>dwType: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''WSA IP net table''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpNetTable = WSA_IPNETTABLE;</code>
 +
 
 +
<code>PWSAIpNetTable = PWSA_IPNETTABLE;</code>
 +
 
 +
<code>PWSA_IPNETTABLE = ^WSA_IPNETTABLE;</code>
 +
 
 +
<code>WSA_IPNETTABLE = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>dwNumEntries: DWORD;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>table: array [0..WSA_ANY_SIZE - 1] of WSA_IPNETROW;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA IP adapter index map''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpAdapterIndexMap = WSA_IP_ADAPTER_INDEX_MAP;</code>
 +
 
 +
<code>PWSAIpAdapterIndexMap = PWSA_IP_ADAPTER_INDEX_MAP;</code>
 +
 
 +
<code>PWSA_IP_ADAPTER_INDEX_MAP = ^WSA_IP_ADAPTER_INDEX_MAP;</code>
 +
 
 +
<code>WSA_IP_ADAPTER_INDEX_MAP = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Index: ULONG;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Name: array [0..WSA_MAX_ADAPTER_NAME - 1] of WideChar;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA IP interface information''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpInterfaceInfo = WSA_IP_INTERFACE_INFO;</code>
 +
 
 +
<code>PWSAIpInterfaceInfo = PWSA_IP_INTERFACE_INFO;</code>
 +
 
 +
<code>PWSA_IP_INTERFACE_INFO = ^WSA_IP_INTERFACE_INFO;</code>
 +
 
 +
<code>WSA_IP_INTERFACE_INFO = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>NumAdapters: DWORD;</code>
 +
| LongInt
 +
|-
 +
| <code>Adapter: array [0..0] of WSA_IP_ADAPTER_INDEX_MAP;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA IP address string''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PWSA_IP_ADDRESS_STRING = ^WSA_IP_ADDRESS_STRING;</code>
 +
 
 +
<code>WSA_IP_MASK_STRING = WSA_IP_ADDRESS_STRING;</code>
 +
 
 +
<code>TWSAIpAddressString = WSA_IP_ADDRESS_STRING;</code>
 +
 
 +
<code>PWSAIpAddressString = PWSA_IP_MASK_STRING;</code>
 +
 
 +
<code>PWSA_IP_MASK_STRING = ^WSA_IP_MASK_STRING;</code>
 +
 
 +
<code>WSA_IP_ADDRESS_STRING = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>S: array [0..15] of Char;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA IP address string''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpAddrString = WSA_IP_ADDR_STRING;</code>
 +
 
 +
<code>PWSAIpAddrString = PWSA_IP_ADDR_STRING;</code>
 +
 
 +
<code>PWSA_IP_ADDR_STRING = ^WSA_IP_ADDR_STRING;</code>
 +
 
 +
<code>WSA_IP_ADDR_STRING = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Next: PWSA_IP_ADDR_STRING;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>IpAddress: WSA_IP_ADDRESS_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IpMask: WSA_IP_MASK_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Context: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA IP adapter information''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAIpAdapterInfo = WSA_IP_ADAPTER_INFO;</code>
 +
 
 +
<code>PWSAIpAdapterInfo = PWSA_IP_ADAPTER_INFO;</code>
 +
 
 +
<code>PWSA_IP_ADAPTER_INFO = ^WSA_IP_ADAPTER_INFO;</code>
 +
 
 +
<code>WSA_IP_ADAPTER_INFO = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>Next: PWSA_IP_ADAPTER_INFO;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ComboIndex: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterName: array [0..WSA_MAX_ADAPTER_NAME_LENGTH + 3] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Description: array [0..WSA_MAX_ADAPTER_DESCRIPTION_LENGTH + 3] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AddressLength: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Address: array [0..WSA_MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Index: DWORD;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Type_: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DhcpEnabled: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentIpAddress: PWSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>IpAddressList: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>GatewayList: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DhcpServer: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>HaveWins: BOOL;</code>
 +
| &nbsp;
 +
|-
 +
| <code>PrimaryWinsServer: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>SecondaryWinsServer: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LeaseObtained: time_t;</code>
 +
| &nbsp;
 +
|-
 +
| <code>LeaseExpires: time_t;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA fixed information''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAFixedInfo = WSA_FIXED_INFO;</code>
 +
 
 +
<code>PWSAFixedInfo = PWSA_FIXED_INFO;</code>
 +
 
 +
<code>PWSA_FIXED_INFO = ^WSA_FIXED_INFO;</code>
 +
 
 +
<code>WSA_FIXED_INFO = record</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| <code>HostName: array [0..WSA_MAX_HOSTNAME_LEN + 3] of Char;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>DomainName: array[0..WSA_MAX_DOMAIN_NAME_LEN + 3] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>CurrentDnsServer: PWSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DnsServerList: WSA_IP_ADDR_STRING;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NodeType: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ScopeId: array [0..WSA_MAX_SCOPE_ID_LEN + 3] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EnableRouting: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EnableProxy: UINT;</code>
 +
| &nbsp;
 +
|-
 +
| <code>EnableDns: UINT;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''Net to address'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| <code>PNetToAddr = ^TNetToAddr;</code>
 +
| style="width: 40%;"|
 +
|-
 +
| <code>TNetToAddr = array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
| style="width: 40%;"|
 +
|-
 +
|}
 +
 
 +
'''WSA binding'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSABinding = WSABinding;</code>
 +
 
 +
<code>PWSABinding = ^TWSABinding;</code>
 +
 
 +
<code>WSABinding = 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: A network Binding (Address)
 +
|-
 +
| <code>Version: Word;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>ConfigType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigServer: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingAddress: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingNetmask: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingGateway: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextBinding: PWSABinding;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA provider''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAProvider = WSAProvider;</code>
 +
 
 +
<code>PWSAProvider = ^TWSAProvider;</code>
 +
 
 +
<code>WSAProvider = 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: A network Provider (Transport)
 +
|-
 +
| <code>Version: Word;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>TransportFamily: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransportType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransportHandle: Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigServer: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ProviderAddress: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ProviderNetmask: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ProviderGateway: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ProviderName: array[0..MAX_NAME_SIZE] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextProvider: PWSAProvider;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA interface''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAInterface = WSAInterface;</code>
 +
 
 +
<code>PWSAInterface = ^TWSAInterface;</code>
 +
 
 +
<code>WSAInterface = 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: A network Interface (Adapter)
 +
|-
 +
| <code>Version: Word;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>AdapterType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterInt: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterPort: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterName: array[0..MAX_NAME_SIZE] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterHandle: Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FirstProvider: PWSAProvider;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextInterface: PWSAInterface;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA configuration''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAConfig = WSAConfig;</code>
 +
 
 +
<code>PWSAConfig = ^TWSAConfig;</code>
 +
 
 +
<code>WSAConfig = 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: General Network Configuration
 +
|-
 +
| <code>Version: Word;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Hostname: array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Namesuffix: array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Nameservers: array[0..MAX_NAME_SERVERS - 1] of TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FirstInterface: PWSAInterface;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA network binding''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAExtendedBinding = WSAExtendedBinding;</code>
 +
 
 +
<code>PWSAExtendedBinding = ^TWSAExtendedBinding;</code>
 +
 
 +
<code>WSAExtendedBinding = 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: A network Binding (Address)
 +
|-
 +
| <code>Size: LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Version: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigServer: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigServer6: TIn6Addr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigInitDelay: LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigRetryCount: LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ConfigRetryTimeout: LongWord;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingAddress: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingNetmask: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingGateway: TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingAddress6: TIn6Addr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingNetmask6: TIn6Addr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>BindingGateway6: TIn6Addr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Namesuffix: array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Nameservers: array[0..MAX_NAME_SERVERS - 1] of TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Nameservers6: array[0..MAX_NAME_SERVERS - 1] of TIn6Addr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextBinding: PWSAExtendedBinding;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA network provider''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAExtendedProvider = WSAExtendedProvider;</code>
 +
 
 +
<code>PWSAExtendedProvider = ^TWSAExtendedProvider;</code>
 +
 
 +
<code>WSAExtendedProvider = 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: A network Provider (Transport)
 +
|-
 +
| <code>Size: LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Version: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransportFamily: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransportType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>TransportHandle: Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>ProviderName: array[0..MAX_NAME_SIZE] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FirstBinding: PWSAExtendedBinding;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextProvider: PWSAExtendedProvider;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 +
'''WSA network interface''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAExtendedInterface = WSAExtendedInterface;</code>
 +
 
 +
<code>PWSAExtendedInterface = ^TWSAExtendedInterface;</code>
 +
 
 +
<code>WSAExtendedInterface = 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: A network Interface (Adapter)
 +
|-
 +
| <code>Size: LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Version: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterType: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterInt: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterPort: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterName: array[0..MAX_NAME_SIZE] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>AdapterHandle: Pointer;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FirstProvider: PWSAExtendedProvider;</code>
 +
| &nbsp;
 +
|-
 +
| <code>NextInterface: PWSAExtendedInterface;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 +
'''WSA network configuration''' 
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>TWSAExtendedConfig = WSAExtendedConfig;</code>
 +
 
 +
<code>PWSAExtendedConfig = ^TWSAExtendedConfig;</code>
 +
 
 +
<code>WSAExtendedConfig = 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: General Network Configuration
 +
|-
 +
| <code>Size: LongWord;</code>
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
| <code>Version: Word;</code>
 +
| &nbsp;
 +
|-
 +
| <code>Hostname: array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
| &nbsp;
 +
|-
 +
| <code>FirstInterface: PWSAExtendedInterface;</code>
 +
| &nbsp;
 +
|-
 +
|}
 +
</div></div>
 +
 
 +
'''Address information'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PAddrInfo = ^TAddrInfo;</code>
 +
 
 +
<code>TAddrInfo = 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: Structure used in getaddrinfo() call
 +
|-
 +
| <code>ai_flags:LongInt;</code>
 +
| AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST
 +
|-
 +
| <code>ai_family:LongInt;</code>
 +
| PF_xxx
 +
|-
 +
| <code>ai_socktype:LongInt;</code>
 +
| SOCK_xxx
 +
|-
 +
| <code>ai_protocol:LongInt;</code>
 +
| 0 or IPPROTO_xxx for IPv4 and IPv6
 +
|-
 +
| <code>ai_addrlen:size_t;</code>
 +
| Length of ai_addr
 +
|-
 +
| <code>ai_canonname:PChar;</code>
 +
| Canonical name for nodename
 +
|-
 +
| <code>ai_addr:PSockAddr;</code>
 +
| Binary address
 +
|-
 +
| <code>ai_next:PAddrInfo;</code>
 +
| Next structure in linked list
 +
|-
 +
|}
 +
</div></div> 
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===
Line 1,690: Line 3,909:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,702: Line 3,921:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,714: Line 3,933:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,726: Line 3,945:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,738: Line 3,957:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,750: Line 3,969:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,762: Line 3,981:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,774: Line 3,993:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 1,786: Line 4,005:
 
{| 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 02:54, 6 March 2025

Return to Unit Reference


Description


Ultibo Global Socket Definitions unit

Constants



[Expand]
Global socket constants FD_*


[Expand]
IP protocol IPPROTO_*


[Expand]
IP port IPPORT_*


[Expand]
IP options IP_*


[Expand]
Socket type SOCK_*


[Expand]
Socket options SO_*


[Expand]
TCP options TCP_*


[Expand]
UDP options UDP_*


[Expand]
Address family AF_*


[Expand]
Storage structure _SS_*


[Expand]
Protocol family PF_*


[Expand]
Message flag MSG_*


[Expand]
Socket error WSAE*, EAI_*


[Expand]
Shutdown options SD_*


[Expand]
WsControlEx options WSA_*


[Expand]
Address info flag AI_*


[Expand]
Name info flag NI_*


Type definitions



Integer types

tOS_INT = LongInt;
tOS_UINT = DWORD;
ptOS_INT = ^tOS_INT;
ptOS_UINT = ^tOS_UINT;
u_int = tOS_UINT;
pu_int = ^u_int;

Character types

u_char = Char;
pu_char = ^u_char;

Numeric types

u_short = Word;
pu_short = ^u_short;
u_long = DWORD;
pu_long = ^u_long;

Socket types

TSocket = GlobalTypes.TSocket;

WSA event

WSAEVENT = GlobalTypes.WSAEVENT;
PWSAEVENT = ^WSAEVENT;
LPWSAEVENT = PWSAEVENT;

MB character

PMBChar = PChar;

FD set

[Expand]

TFDSet = fdset;

PFDSet = ^TFDSet;

fdset = record

Time value

[Expand]

TTimeVal = timeval;

PTimeVal = ^TTimeVal;

timeval = record

Host entry

[Expand]

THostEnt = hostent;

PHostEnt = ^THostEnt;

hostent = record

Network entry

[Expand]

TNetEnt = netent;

PNetEnt = ^TNetEnt;

netent = record

Service entry

[Expand]

TServEnt = servent;

PServEnt = ^TServEnt;

servent = record

Protocol entry

[Expand]

TProtoEnt = protoent;

PProtoEnt = ^TProtoEnt;

protoent = record

Address types

[Expand]

SunB = packed record


[Expand]

SunW = packed record

IPv4 address

[Expand]

TInAddr = in_addr;

PInAddr = ^TInAddr;

in_addr = record

IPv6 address

[Expand]

TIn6Addr = in6_addr;

PIn6Addr = ^TIn6Addr;

in6_addr = record

IPX address

[Expand]

TIpxAddr = ipx_addr;

PIpxAddr = ^TIpxAddr;

ipx_addr = record

Socket address IPv4

[Expand]

TSockAddrIn = sockaddr_in;

PSockAddrIn = ^TSockAddrIn;

sockaddr_in = record

Socket address IPv6

[Expand]

TSockAddr6 = sockaddr_in6;

PSOCKADDR6 = ^TSockAddr6;

TSockAddrIn6 = sockaddr_in6;

PSockAddrIn6 = ^TSockAddrIn6;

sockaddr_in6 = record

Socket address IPX

[Expand]

TSockAddrIpx = sockaddr_ipx;

PSockAddrIpx = ^TSockAddrIpx;

sockaddr_ipx = record

Socket address

PSOCKADDR = ^TSockAddr;
TSockAddr = sockaddr_in;

Socket protocol

[Expand]

TSockProto = sockproto;

PSockProto = ^TSockProto;

sockproto = record

Storage

[Expand]

TSockAddrStorage = sockaddr_storage;

PSockAddrStorage = ^TSockAddrStorage;

sockaddr_storage = record

Linger

[Expand]

TLinger = linger;

PLinger = ^TLinger;

linger = record

WSA data

[Expand]

TWSAData = WSAData;

PWSAData = ^TWSAData;

WSAData = record

Transmit file buffers

[Expand]

TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;

TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;

PTransmitFileBuffers = ^TTransmitFileBuffers;

_TRANSMIT_FILE_BUFFERS = record

Multicast request

[Expand]

TMulticastRequest = ip_mreq;

PMulticastRequest = ^TMulticastRequest;

ip_mreq = record

WSA interface row

[Expand]

TWSAIfRow = WSA_IFROW;

PWSAIfRow = PWSA_IFROW;

PWSA_IFROW = ^WSA_IFROW;

WSA_IFROW = record

WSA interface table

[Expand]

TWSAIftable = WSA_IFTABLE;

PWSAIftable = PWSA_IFTABLE;

PWSA_IFTABLE = ^WSA_IFTABLE;

WSA_IFTABLE = record

WSA ICMP statistics

[Expand]

TWSAIcmpStats = WSAICMPSTATS;

PWSAIcmpStats = ^TWSAIcmpStats;

WSAICMPSTATS = record

WSA ICMP information

[Expand]

TWSAIcmpInfo = WSAICMPINFO;

PWSAIcmpInfo = ^TWSAIcmpInfo;

WSAICMPINFO = record

WSA ICMP

[Expand]

TWSAIcmp = WSA_ICMP;

PWSAIcmp = PWSA_ICMP;

PWSA_ICMP = ^WSA_ICMP;

WSA_ICMP = record

WSA UDP statistics

[Expand]

TWSAUdpStats = WSA_UDPSTATS;

PWSAUdpStats = PWSA_UDPSTATS;

PWSA_UDPSTATS = ^WSA_UDPSTATS;

WSA_UDPSTATS = record

WSA UDP row

[Expand]

TWSAUdpRow = WSA_UDPROW;

PWSAUdpRow = PWSA_UDPROW;

PWSA_UDPROW = ^WSA_UDPROW;

WSA_UDPROW = record

WSA UDP table

[Expand]

TWSAUdpTable = WSA_UDPTABLE;

PWSAUdpTable = PWSA_UDPTABLE;

PWSA_UDPTABLE = ^WSA_UDPTABLE;

WSA_UDPTABLE = record

WSA TCP statistics

[Expand]

TWSATcpStats = WSA_TCPSTATS;

PWSATcpStats = PWSA_TCPSTATS;

PWSA_TCPSTATS = ^WSA_TCPSTATS;

WSA_TCPSTATS = record

WSA TCP row

[Expand]

TWSATcpRow = WSA_TCPROW;

PWSATcpRow = PWSA_TCPROW;

PWSA_TCPROW = ^WSA_TCPROW;

WSA_TCPROW = record

WSA TCP table

[Expand]

TWSATcpTable = WSA_TCPTABLE;

PWSATcpTable = PWSA_TCPTABLE;

PWSA_TCPTABLE = ^WSA_TCPTABLE;

WSA_TCPTABLE = record

WSA IP statistics

[Expand]

TWSAIpStats = WSA_IPSTATS;

PWSAIpStats = PWSA_IPSTATS;

PWSA_IPSTATS = ^WSA_IPSTATS;

WSA_IPSTATS = record

WSA IP address row

[Expand]

TWSAIpAddrRow = WSA_IPADDRROW;

PWSAIpAddrRow = PWSA_IPADDRROW;

PWSA_IPADDRROW = ^WSA_IPADDRROW;

WSA_IPADDRROW = record

WSA IP address table

[Expand]

TWSAIpAddrTable = WSA_IPADDRTABLE;

PWSAIpAddrTable = PWSA_IPADDRTABLE;

PWSA_IPADDRTABLE = ^WSA_IPADDRTABLE;

WSA_IPADDRTABLE = record

WSA IP forward number

[Expand]

TWSAIpForwardNumber = WSA_IPFORWARDNUMBER;

PWSAIpForwardNumber = PWSA_IPFORWARDNUMBER;

PWSA_IPFORWARDNUMBER = ^WSA_IPFORWARDNUMBER;

WSA_IPFORWARDNUMBER = record

WSA IP forward row

[Expand]

TWSAIpForwardRow = WSA_IPFORWARDROW;

PWSAIpForwardRow = PWSA_IPFORWARDROW;

PWSA_IPFORWARDROW = ^WSA_IPFORWARDROW;

WSA_IPFORWARDROW = record

WSA IP forward table

[Expand]

TWSAIpForwardTable = WSA_IPFORWARDTABLE;

PWSAIpForwardTable = PWSA_IPFORWARDTABLE;

PWSA_IPFORWARDTABLE = ^WSA_IPFORWARDTABLE;

WSA_IPFORWARDTABLE = record

WSA IP net row

[Expand]

TWSAIpNetRow = WSA_IPNETROW;

PWSAIpNetRow = PWSA_IPNETROW;

PWSA_IPNETROW = ^WSA_IPNETROW;

WSA_IPNETROW = record

WSA IP net table

[Expand]

TWSAIpNetTable = WSA_IPNETTABLE;

PWSAIpNetTable = PWSA_IPNETTABLE;

PWSA_IPNETTABLE = ^WSA_IPNETTABLE;

WSA_IPNETTABLE = record

WSA IP adapter index map

[Expand]

TWSAIpAdapterIndexMap = WSA_IP_ADAPTER_INDEX_MAP;

PWSAIpAdapterIndexMap = PWSA_IP_ADAPTER_INDEX_MAP;

PWSA_IP_ADAPTER_INDEX_MAP = ^WSA_IP_ADAPTER_INDEX_MAP;

WSA_IP_ADAPTER_INDEX_MAP = record

WSA IP interface information

[Expand]

TWSAIpInterfaceInfo = WSA_IP_INTERFACE_INFO;

PWSAIpInterfaceInfo = PWSA_IP_INTERFACE_INFO;

PWSA_IP_INTERFACE_INFO = ^WSA_IP_INTERFACE_INFO;

WSA_IP_INTERFACE_INFO = record

WSA IP address string

[Expand]

PWSA_IP_ADDRESS_STRING = ^WSA_IP_ADDRESS_STRING;

WSA_IP_MASK_STRING = WSA_IP_ADDRESS_STRING;

TWSAIpAddressString = WSA_IP_ADDRESS_STRING;

PWSAIpAddressString = PWSA_IP_MASK_STRING;

PWSA_IP_MASK_STRING = ^WSA_IP_MASK_STRING;

WSA_IP_ADDRESS_STRING = record

WSA IP address string

[Expand]

TWSAIpAddrString = WSA_IP_ADDR_STRING;

PWSAIpAddrString = PWSA_IP_ADDR_STRING;

PWSA_IP_ADDR_STRING = ^WSA_IP_ADDR_STRING;

WSA_IP_ADDR_STRING = record

WSA IP adapter information

[Expand]

TWSAIpAdapterInfo = WSA_IP_ADAPTER_INFO;

PWSAIpAdapterInfo = PWSA_IP_ADAPTER_INFO;

PWSA_IP_ADAPTER_INFO = ^WSA_IP_ADAPTER_INFO;

WSA_IP_ADAPTER_INFO = record

WSA fixed information

[Expand]

TWSAFixedInfo = WSA_FIXED_INFO;

PWSAFixedInfo = PWSA_FIXED_INFO;

PWSA_FIXED_INFO = ^WSA_FIXED_INFO;

WSA_FIXED_INFO = record

Net to address

PNetToAddr = ^TNetToAddr;
TNetToAddr = array[0..MAX_NAME_SIZE - 1] of Char;

WSA binding

[Expand]

TWSABinding = WSABinding;

PWSABinding = ^TWSABinding;

WSABinding = record

WSA provider

[Expand]

TWSAProvider = WSAProvider;

PWSAProvider = ^TWSAProvider;

WSAProvider = record

WSA interface

[Expand]

TWSAInterface = WSAInterface;

PWSAInterface = ^TWSAInterface;

WSAInterface = record

WSA configuration

[Expand]

TWSAConfig = WSAConfig;

PWSAConfig = ^TWSAConfig;

WSAConfig = record

WSA network binding

[Expand]

TWSAExtendedBinding = WSAExtendedBinding;

PWSAExtendedBinding = ^TWSAExtendedBinding;

WSAExtendedBinding = record

WSA network provider

[Expand]

TWSAExtendedProvider = WSAExtendedProvider;

PWSAExtendedProvider = ^TWSAExtendedProvider;

WSAExtendedProvider = record

WSA network interface

[Expand]

TWSAExtendedInterface = WSAExtendedInterface;

PWSAExtendedInterface = ^TWSAExtendedInterface;

WSAExtendedInterface = record

WSA network configuration

[Expand]

TWSAExtendedConfig = WSAExtendedConfig;

PWSAExtendedConfig = ^TWSAExtendedConfig;

WSAExtendedConfig = record

Address information

[Expand]

PAddrInfo = ^TAddrInfo;

TAddrInfo = record


Public variables


None defined

Function declarations



Global socket functions

[Expand]
procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented


[Expand]
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
Description: To be documented


[Expand]
procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);
Description: To be documented


[Expand]
procedure FD_ZERO(var FDSet: TFDSet);
Description: To be documented


[Expand]
function SequenceLT(A,B:LongInt):Boolean; inline;
Description: To be documented


[Expand]
function SequenceLEQ(A,B:LongInt):Boolean; inline;
Description: To be documented


[Expand]
function SequenceGT(A,B:LongInt):Boolean; inline;
Description: To be documented


[Expand]
function SequenceGEQ(A,B:LongInt):Boolean; inline;
Description: To be documented


[Expand]
function ProtocolToString(Protocol:Word):String;
Description: To be documented


Return to Unit Reference