Difference between revisions of "Unit DNS"

From Ultibo.org
Jump to: navigation, search
 
(11 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
----
 
----
  
'''Ultibo DNS client unit'''
+
'''Ultibo DNS Client unit'''
  
 
Note: DNS Client is IPv4 based, for IPv6 see new Winsock2 functions
 
Note: DNS Client is IPv4 based, for IPv6 see new Winsock2 functions
Line 20: Line 20:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
| <code>DNS_TIMEOUT = 5000;</code>
+
| <code>DNS_TIMEOUT = 2000;</code>
| We wait for 5 seconds for a DNS reply
+
| We wait for 2 seconds for a DNS reply
 
|-
 
|-
| <code>DNS_RETRIES = 4;</code>
+
| <code>DNS_RETRIES = 2;</code>
| Try the request 4 times
+
| Try the request 2 times
 
|-
 
|-
 
|colspan="2"|&nbsp;
 
|colspan="2"|&nbsp;
Line 54: Line 54:
 
<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;">'''DNS flag constants''' <code> DNS_FLAG_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS flag''' <code> DNS_FLAG_* </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 77: Line 77:
 
<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;">'''DNS field masks constants''' <code> DNS_OPCODE_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS field mask''' <code> DNS_*_MASK </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 91: Line 91:
 
<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;">'''DNS query code constants''' <code> DNS_QUERY* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS opcode''' <code> DNS_OPCODE_* </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;"
 
|-
 
|-
| <code>DNS_QUERY = 0;</code>
+
| <code>DNS_OPCODE_QUERY = 0;</code>
 
| A standard query
 
| A standard query
 
|-
 
|-
| <code>DNS_INV_QUERY = 1;</code>
+
| <code>DNS_OPCODE_IQUERY = 1;</code>
 
| An inverse query
 
| An inverse query
 
|-
 
|-
| <code>DNS_COMP_QUERY_MULTI = 2;</code>
+
| <code>DNS_OPCODE_SERVER_STATUS = 2;</code>
| A completion query, multiple reply (Obsolete)
+
| &nbsp;
 
|-
 
|-
| <code>DNS_COMP_QUERY_SINGLE = 3;</code>
+
| <code>DNS_OPCODE_UNKNOWN = 3;</code>
| A completion query, single reply (Obsolete)
+
| &nbsp;
 +
|-
 +
| <code>DNS_OPCODE_NOTIFY = 4;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_OPCODE_UPDATE = 5;</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 111: Line 117:
 
<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;">'''DNS response code constants''' <code> DNS_NO_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS response code''' <code> DNS_RESPONSE_* </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;"
 
|-
 
|-
| <code>DNS_NO_ERROR = 0;</code>
+
| <code>DNS_RESPONSE_NO_ERROR = 0;</code>
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>DNS_FORMAT_ERROR = 1;</code>
+
| <code>DNS_RESPONSE_FORMAT_ERROR = 1;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_SERVER_FAILURE = 2;</code>
+
| <code>DNS_RESPONSE_SERVER_FAILURE = 2;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_NAME_ERROR = 3;</code>
+
| <code>DNS_RESPONSE_NAME_ERROR = 3;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_NOT_IMPLEMENTED = 4;</code>
+
| <code>DNS_RESPONSE_NOT_IMPLEMENTED = 4;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_REFUSED = 5;</code>
+
| <code>DNS_RESPONSE_REFUSED = 5;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 137: Line 143:
 
<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;">'''DNS record type constants''' <code> DNS_TYPE_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS record type''' <code> DNS_TYPE_* </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;"
 
|-
 
|-
| <code>DNS_TYPE_A = 1;</code>
+
| <code>DNS_TYPE_A = $0001;</code>
 
| Host address resource record (RR)
 
| Host address resource record (RR)
 
|-
 
|-
| <code>DNS_TYPE_NS = 2;</code>
+
| <code>DNS_TYPE_NS = $0002;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MD = 3;</code>
+
| <code>DNS_TYPE_MD = $0003;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MF = 4;</code>
+
| <code>DNS_TYPE_MF = $0004;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_CNAME = 5;</code>
+
| <code>DNS_TYPE_CNAME = $0005;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_SOA = 6;</code>
+
| <code>DNS_TYPE_SOA = $0006;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MB = 7;</code>
+
| <code>DNS_TYPE_MB = $0007;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MG = 8;</code>
+
| <code>DNS_TYPE_MG = $0008;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MR = 9;</code>
+
| <code>DNS_TYPE_MR = $0009;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_RT_NULL = 10;</code>
+
| <code>DNS_TYPE_NULL = $000a;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_WKS = 11;</code>
+
| <code>DNS_TYPE_WKS = $000b;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_PTR = 12;</code>
+
| <code>DNS_TYPE_PTR = $000c;</code>
 
| A domain name ptr
 
| A domain name ptr
 
|-
 
|-
| <code>DNS_TYPE_HINFO = 13;</code>
+
| <code>DNS_TYPE_HINFO = $000d;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MINFO = 14;</code>
+
| <code>DNS_TYPE_MINFO = $000e;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_TYPE_MX = 15;</code>
+
| <code>DNS_TYPE_MX = $000f;</code>
 
| Mail exchange
 
| Mail exchange
 +
|-
 +
| <code>DNS_TYPE_TEXT = $0010;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_RP = $0011;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_AFSDB = $0012;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_X25 = $0013;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_ISDN = $0014;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_RT = $0015;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NSAP = $0016;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NSAPPTR = $0017;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_SIG = $0018;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_KEY = $0019;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_PX = $001a;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_GPOS = $001b;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_AAAA = $001c;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_LOC = $001d;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NXT = $001e;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_EID = $001f;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NIMLOC = $0020;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_SRV = $0021;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_ATMA = $0022;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NAPTR = $0023;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_KX = $0024;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_CERT = $0025;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_A6 = $0026;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_DNAME = $0027;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_SINK = $0028;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_OPT = $0029;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_DS = $002B;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_RRSIG = $002E;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NSEC = $002F;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_DNSKEY = $0030;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_DHCID = $0031;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_UINFO = $0064;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_UID = $0065;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_GID = $0066;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_UNSPEC = $0067;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_ADDRS = $00f8;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_TKEY = $00f9;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_TSIG = $00fa;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_IXFR = $00fb;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_AXFR = $00fc;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_MAILB = $00fd;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_MAILA = $00fe;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_ALL = $00ff;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_ANY = $00ff;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_WINS = $ff01;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_WINSR = $ff02;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_TYPE_NBSTAT = DNS_TYPE_WINSR;</code>
 +
| &nbsp;
 
|-
 
|-
 
|}
 
|}
Line 190: Line 337:
 
<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;">'''DNS address class constants''' <code> DNS_CLASS_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS address class''' <code> DNS_CLASS_* </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;"
 
|-
 
|-
| <code>DNS_CLASS_IN = 1;</code>
+
| <code>DNS_CLASS_INTERNET = $0001;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_CSNET = $0002;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_CHAOS = $0003;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_HESIOD = $0004;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_NONE = $00fe;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_ALL = $00ff;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_ANY = $00ff;</code>
 +
| &nbsp;
 +
|-
 +
| <code>DNS_CLASS_IN = DNS_CLASS_INTERNET;</code>
 
| ARPA internet class
 
| ARPA internet class
 
|-
 
|-
| <code>DNS_CLASS_CS = 2;</code>
+
| <code>DNS_CLASS_CS = DNS_CLASS_CSNET;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>DNS_CLASS_WILD = 255;</code>
+
| <code>DNS_CLASS_WILD = DNS_CLASS_ANY;</code>
 
| Wildcard for several of the classifications
 
| Wildcard for several of the classifications
 
|-
 
|-
 
|}
 
|}
 
</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 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;">'''DNS message compression constants''' <code> DNS_POINTER_* </code></div>
+
<div style="font-size: 14px; padding-left: 12px;">'''DNS message compression''' <code> DNS_POINTER_* </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 272: Line 440:
 
</div></div>   
 
</div></div>   
 
   
 
   
'''DNA name'''
+
'''DNS name'''
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
Line 282: Line 450:
 
|-
 
|-
 
| &nbsp;
 
| &nbsp;
| style="width: 90%;"|&nbsp;
+
| style="width: 50%;"|&nbsp;
 
|-
 
|-
 
|}
 
|}
Line 340: Line 508:
 
|-
 
|-
 
|}
 
|}
</div></div>
+
</div></div>
  
'''DNA client data'''
+
'''DNS client name'''
 +
 
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 +
<code>PDNSClientName = ^TDNSClientName;</code>
 +
 
 +
<code>TDNSClientName = array[0..MAX_NAME_SIZE - 1] of Char;</code>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
| &nbsp;
 +
| style="width: 50%;"|&nbsp;
 +
|-
 +
|}
 +
</div></div> 
 +
 
 +
'''DNS client data'''
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
Line 358: Line 541:
 
| style="width: 50%;"|&nbsp;
 
| style="width: 50%;"|&nbsp;
 
|-
 
|-
| <code>HostEntName:array[0..MAX_NAME_SIZE - 1] of Char;</code>
+
| <code>HostEntName:TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>HostAliasesPtr:PChar;</code>
+
| <code>HostAliasesPtr:array[0..MAX_NAME_ALIASES] of PChar;</code>
| &nbsp;
+
| One extra for terminating null pointer
 
|-
 
|-
| <code>HostAliases:array[0..(MAX_NAME_SIZE * MAX_NAME_ALIASES) - 1] of Char;</code>
+
| <code>HostAliases:array[0..MAX_NAME_ALIASES - 1] of TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>HostAddrListPtr:PChar;</code>
+
| <code>HostAddrListPtr:array[0..MAX_HOST_ALIASES] of PChar;</code>
| &nbsp;
+
| One extra for terminating null pointer
 
|-
 
|-
 
| <code>HostAddrList:array[0..MAX_HOST_ALIASES - 1] of TInAddr;</code>
 
| <code>HostAddrList:array[0..MAX_HOST_ALIASES - 1] of TInAddr;</code>
 +
| &nbsp;
 +
|-
 +
| <code>HostAddr6ListPtr:array[0..MAX_HOST_ALIASES] of PChar;</code>
 +
| One extra for terminating null pointer
 +
|-
 +
| <code>HostAddr6List:array[0..MAX_HOST_ALIASES - 1] of TIn6Addr;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 378: Line 567:
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>NetEntName:array[0..MAX_NAME_SIZE - 1] of Char;</code>
+
| <code>NetEntName:TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>NetAliasesPtr:PChar;</code>
+
| <code>NetAliasesPtr:array[0..MAX_NAME_ALIASES] of PChar;</code>
| &nbsp;
+
| One extra for terminating null pointer
 
|-
 
|-
| <code>NetAliases:array[0..(MAX_NAME_SIZE * MAX_NAME_ALIASES) - 1] of Char;</code>
+
| <code>NetAliases:array[0..MAX_NAME_ALIASES - 1] of TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 392: Line 581:
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ServEntName:array[0..MAX_NAME_SIZE - 1] of Char;</code>
+
| <code>ServEntName:TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ServAliasesPtr:PChar;</code>
+
| <code>ServAliasesPtr:array[0..MAX_NAME_ALIASES] of PChar;</code>
| &nbsp;
+
| One extra for terminating null pointer
 
|-
 
|-
| <code>ServAliases:array[0..(MAX_NAME_SIZE * MAX_NAME_ALIASES) - 1] of Char;</code>
+
| <code>ServAliases:array[0..MAX_NAME_ALIASES - 1] of TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ServEntProto:array[0..MAX_NAME_SIZE - 1] of Char;</code>
+
| <code>ServEntProto:TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 409: Line 598:
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ProtoEntName:array[0..MAX_NAME_SIZE - 1] of Char;</code>
+
| <code>ProtoEntName:TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
| <code>ProtoAliasesPtr:PChar;</code>
+
| <code>ProtoAliasesPtr:array[0..MAX_NAME_ALIASES] of PChar;</code>
| &nbsp;
+
| One extra for terminating null pointer
 
|-
 
|-
| <code>ProtoAliases:array[0..(MAX_NAME_SIZE * MAX_NAME_ALIASES) - 1] of Char;</code>
+
| <code>ProtoAliases:array[0..MAX_NAME_ALIASES - 1] of TDNSClientName;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 425: Line 614:
 
----
 
----
  
''To be documented''
+
 
 +
'''DNS specific classes'''
 +
 
 +
{| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"
 +
|-
 +
| [[TDNSClient|<code>TDNSClient = class(TNetworkClient)</code>]]
 +
|-
 +
|}
 +
<br />
  
 
=== Public variables ===
 
=== Public variables ===
Line 444: Line 641:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 456: 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 468: Line 665:
 
{| 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:24, 6 March 2025

Return to Unit Reference


Description


Ultibo DNS Client unit

Note: DNS Client is IPv4 based, for IPv6 see new Winsock2 functions

See RFC 1035 Section 4 for details

Constants



[Expand]
DNS specific constants DNS_*


[Expand]
DNS flag DNS_FLAG_*


[Expand]
DNS field mask DNS_*_MASK


[Expand]
DNS opcode DNS_OPCODE_*


[Expand]
DNS response code DNS_RESPONSE_*


[Expand]
DNS record type DNS_TYPE_*


[Expand]
DNS address class DNS_CLASS_*


[Expand]
DNS message compression DNS_POINTER_*


Type definitions



DNS specific types

[Expand]

PDNSHeader = ^TDNSHeader;

TDNSHeader = packed record

DNS message

[Expand]

PDNSMessage = ^TDNSMessage;

TDNSMessage = packed record

DNS name

[Expand]

PDNSName = ^TDNSName;

TDNSName = array[0..MAX_DNS_NAME - 1] of Char;

DNS question

[Expand]

PDNSQuestion = ^TDNSQuestion;

TDNSQuestion = packed record

DNS resource

[Expand]

PDNSResource = ^TDNSResource;

TDNSResource = packed record

DNS client name

[Expand]

PDNSClientName = ^TDNSClientName;

TDNSClientName = array[0..MAX_NAME_SIZE - 1] of Char;

DNS client data

[Expand]

PDNSClientData = ^TDNSClientData;

TDNSClientData = record


Class definitions



DNS specific classes

TDNSClient = class(TNetworkClient)


Public variables


None defined

Function declarations



Initialization functions

[Expand]
procedure DNSInit;
Description: To be documented


[Expand]
function DNSStart:LongWord;
Description: To be documented


[Expand]
function DNSStop:LongWord;
Description: To be documented


Return to Unit Reference