Difference between revisions of "Unit DHCP"
From Ultibo.org
								
												
				| (16 intermediate revisions by the same user not shown) | |||
| Line 5: | Line 5: | ||
----  | ----  | ||
| − | ''  | + | '''Ultibo DHCP/BOOTP Protocol Client unit'''  | 
=== Constants ===  | === Constants ===  | ||
| Line 16: | Line 16: | ||
{| class="wikitable" style="font-size: 14px; background: white;"  | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
|-  | |-  | ||
| − | | <code>BOOTP_DELAY =   | + | | <code>BOOTP_DELAY = 250;</code>  | 
| − | | (Previously   | + | | Wait 250 ms before starting initial request (Previously 1000 ms)  | 
|-  | |-  | ||
| − | | <code>BOOTP_TIMEOUT =   | + | | <code>BOOTP_TIMEOUT = 8=4000;</code>  | 
| − | |   | + | | Wait up to 4 seconds for a BOOTP reply (Previous 8 seconds)  | 
|-  | |-  | ||
| <code>BOOTP_RETRIES = 6;</code>  | | <code>BOOTP_RETRIES = 6;</code>  | ||
| − | |   | + | | Retry BOOTP requests up to 6 times  | 
|-  | |-  | ||
|colspan="2"|   | |colspan="2"|   | ||
| Line 47: | Line 47: | ||
|colspan="2"|   | |colspan="2"|   | ||
|-  | |-  | ||
| − | | <code>DHCP_DELAY =   | + | | <code>DHCP_DELAY = 250;</code>  | 
| − | | (Previously   | + | | Wait 250 ms before starting initial request (Previously 1000 ms)  | 
|-  | |-  | ||
| − | | <code>DHCP_TIMEOUT =   | + | | <code>DHCP_TIMEOUT = 4000;</code>  | 
| − | |   | + | | Wait up to 4 seconds for a DHCP reply (Previous 8 seconds)  | 
|-  | |-  | ||
| <code>DHCP_RETRIES = 6;</code>  | | <code>DHCP_RETRIES = 6;</code>  | ||
| − | |   | + | | Retry DHCP requests up to 6 times  | 
| + | |-  | ||
| + | | <code>DHCP_BROADCAST = False;</code>  | ||
| + | | If True set the broadcast flag in the DHCP request  | ||
|-  | |-  | ||
|colspan="2"|   | |colspan="2"|   | ||
| Line 93: | Line 96: | ||
<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;">'''BOOTP/DHCP request   | + | <div style="font-size: 14px; padding-left: 12px;">'''BOOTP/DHCP request''' <code> BOOTP_REQUEST* </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 107: | Line 110: | ||
<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;">'''DHCP message   | + | <div style="font-size: 14px; padding-left: 12px;">'''DHCP message''' <code> DHCP_* </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 147: | Line 150: | ||
<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;">'''BOOTP/DHCP   | + | <div style="font-size: 14px; padding-left: 12px;">'''BOOTP/DHCP options'''</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 385: | Line 388: | ||
<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;">'''DHCP flag   | + | <div style="font-size: 14px; padding-left: 12px;">'''DHCP flag''' <code> DHCP_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 396: | 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;">'''ARP   | + | <div style="font-size: 14px; padding-left: 12px;">'''ARP configuration''' <code> ARP_CONFIG_* </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 413: | Line 416: | ||
----  | ----  | ||
| − | ''  | + | |
| + | '''DHCP specific types'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">  | ||
| + | <code>PBOOTPHeader = ^TBOOTPHeader;</code>  | ||
| + | |||
| + | <code>TBOOTPHeader = packed record</code>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>Opcode:Byte;</code>  | ||
| + | | packet op code/message type  | ||
| + | |-  | ||
| + | | <code>HardwareType:Byte;</code>  | ||
| + | | hardware address type, 1 = 10 mb ethernet  | ||
| + | |-  | ||
| + | | <code>HardwareLength:Byte;</code>  | ||
| + | | hardware address len, eg '6' for 10mb eth  | ||
| + | |-  | ||
| + | | <code>Hops:Byte;</code>  | ||
| + | | client sets to zero, optionally used by gateways in cross-gateway booting  | ||
| + | |-  | ||
| + | | <code>Identifier:LongWord;</code>  | ||
| + | | transaction Id, a random number  | ||
| + | |-  | ||
| + | | <code>Seconds:Word;</code>  | ||
| + | | filled in by client, seconds elapsed since client started trying to boot  | ||
| + | |-  | ||
| + | | <code>Reserved:Word;</code>  | ||
| + | |    | ||
| + | |-  | ||
| + | | <code>ClientIP:TInAddr;</code>  | ||
| + | | client IP address filled in by client if known  | ||
| + | |-  | ||
| + | | <code>YourIP:TInAddr;</code>  | ||
| + | | 'your' (client) IP address filled by server if client doesn't know  | ||
| + | |-  | ||
| + | | <code>ServerIP:TInAddr;</code>  | ||
| + | | server IP address returned in bootreply  | ||
| + | |-  | ||
| + | | <code>GatewayIP:TInAddr;</code>  | ||
| + | | gateway IP address, used in optional cross-gateway booting  | ||
| + | |-  | ||
| + | | <code>ClientHardware:THardwareAddress;</code>  | ||
| + | | client hardware address, filled by client  | ||
| + | |-  | ||
| + | | <code>DummyData:array[0..9] of Byte;</code>  | ||
| + | | dummy to fill out remaining bytes of above  | ||
| + | |-  | ||
| + | | <code>ServerName:array[0..63] of Byte;</code>  | ||
| + | | optional server host name, null terminated  | ||
| + | |-  | ||
| + | | <code>FileName:array[0..127] of Byte;</code>  | ||
| + | | boot file name, null terminated string 'generic' name or null in bootrequest, fully qualified directory-path name in bootreply  | ||
| + | |-  | ||
| + | | <code>VendorData:array[0..BOOTP_VENDOR_SIZE - 1] of Byte;</code>  | ||
| + | | optional vendor-specific area  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | |||
| + | '''DHCP header'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">  | ||
| + | <code>PDHCPHeader = ^TDHCPHeader;</code>  | ||
| + | |||
| + | <code>TDHCPHeader = packed record</code>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>Opcode:Byte;</code>  | ||
| + | | packet op code/message type  | ||
| + | |-  | ||
| + | | <code>HardwareType:Byte;</code>  | ||
| + | | hardware address type, 1 = 10 mb ethernet  | ||
| + | |-  | ||
| + | | <code>HardwareLength:Byte;</code>  | ||
| + | | hardware address len, eg '6' for 10mb eth  | ||
| + | |-  | ||
| + | | <code>Hops:Byte;</code>  | ||
| + | | client sets to zero, optionally used by gateways in cross-gateway booting  | ||
| + | |-  | ||
| + | | <code>Identifier:LongWord;</code>  | ||
| + | | transaction Id, a random number  | ||
| + | |-  | ||
| + | | <code>Seconds:Word;</code>  | ||
| + | | filled in by client, seconds elapsed since client started trying to boot  | ||
| + | |-  | ||
| + | | <code>Flags:Word;</code>  | ||
| + | |    | ||
| + | |-  | ||
| + | | <code>ClientIP:TInAddr;</code>  | ||
| + | | client IP address filled in by client if known  | ||
| + | |-  | ||
| + | | <code>YourIP:TInAddr;</code>  | ||
| + | | 'your' (client) IP address filled by server if client doesn't know  | ||
| + | |-  | ||
| + | | <code>ServerIP:TInAddr;</code>  | ||
| + | | server IP address returned in bootreply  | ||
| + | |-  | ||
| + | | <code>GatewayIP:TInAddr;</code>  | ||
| + | | gateway IP address, used in optional cross-gateway booting  | ||
| + | |-  | ||
| + | | <code>ClientHardware:THardwareAddress;</code>  | ||
| + | | client hardware address, filled by client  | ||
| + | |-  | ||
| + | | <code>DummyData:array[0..9] of Byte;</code>  | ||
| + | | dummy to fill out remaining bytes of above  | ||
| + | |-  | ||
| + | | <code>ServerName:array[0..63] of Byte;</code>  | ||
| + | | optional server host name, null terminated  | ||
| + | |-  | ||
| + | | <code>FileName:array[0..127] of Byte;</code>  | ||
| + | | boot file name, null terminated string 'generic' name or null in bootrequest, fully qualified directory-path name in bootreply  | ||
| + | |-  | ||
| + | | <code>Options:array[0..DHCP_OPTIONS_SIZE - 1] of Byte;</code>  | ||
| + | | DHCP options area (minimum 312 bytes)  | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>    | ||
| + | |||
| + | '''DHCP client Id'''  | ||
| + | |||
| + | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">  | ||
| + | <code>PDHCPClientId = ^TDHCPClientId;</code>  | ||
| + | |||
| + | <code>TDHCPClientId = packed record</code>  | ||
| + | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
| + | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
| + | |-  | ||
| + | | <code>Tag:Byte;</code>  | ||
| + | | style="width: 50%;"|   | ||
| + | |-  | ||
| + | | <code>Hardware:THardwareAddress;</code>  | ||
| + | |    | ||
| + | |-  | ||
| + | |}  | ||
| + | </div></div>  | ||
| + | <br />  | ||
| + | |||
| + | === Class definitions ===  | ||
| + | ----  | ||
| + | |||
| + | |||
| + | '''DHCP specific classes'''  | ||
| + | |||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TDHCPConfigTransport|<code>TDHCPConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TDHCPConfig|<code>TDHCPConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TBOOTPConfigTransport|<code>TBOOTPConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TBOOTPConfig|<code>TBOOTPConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TARPConfigTransport|<code>TARPConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TARPConfig|<code>TARPConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TRARPConfigTransport|<code>TRARPConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TRARPConfig|<code>TRARPConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TStaticConfigTransport|<code>TStaticConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TStaticConfig|<code>TStaticConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TLoopbackConfigTransport|<code>TLoopbackConfigTransport = class(TConfigTransport)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;"  | ||
| + | |-  | ||
| + | | [[TLoopbackConfig|<code>TLoopbackConfig = class(TNetworkConfig)</code>]]  | ||
| + | |-  | ||
| + | |}  | ||
| + | <br />  | ||
=== Public variables ===  | === Public variables ===  | ||
----  | ----  | ||
| − | ''  | + | ''None defined''  | 
=== Function declarations ===  | === Function declarations ===  | ||
| Line 428: | Line 637: | ||
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">  | ||
<pre style="border: 0; padding-bottom:0px;">procedure DHCPInit;</pre>  | <pre style="border: 0; padding-bottom:0px;">procedure DHCPInit;</pre>  | ||
| − | <div style="font-size: 14px; padding-left: 12px;">'''Description:'''   | + | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Initialize the DHCP unit and create the Loopback, Static, DHCP, BOOTP, RARP and ARP configuration handlers</div>  | 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">  | ||
{| class="wikitable" style="font-size: 14px; background: white;"  | {| class="wikitable" style="font-size: 14px; background: white;"  | ||
|-  | |-  | ||
| − | !   | + | ! Note  | 
| − | |   | + | | Called only during system startup  | 
|-  | |-  | ||
|}  | |}  | ||
Latest revision as of 03:18, 10 October 2025
Return to Unit Reference
Contents
Description
Ultibo DHCP/BOOTP Protocol Client unit
Constants
DHCP specific constants 
 BOOTP_*  BOOTP_DELAY = 250;
 | 
Wait 250 ms before starting initial request (Previously 1000 ms) | 
 BOOTP_TIMEOUT = 8=4000;
 | 
Wait up to 4 seconds for a BOOTP reply (Previous 8 seconds) | 
 BOOTP_RETRIES = 6;
 | 
Retry BOOTP requests up to 6 times | 
 BOOTP_MIN_DELAY = 0;
 | 
|
 BOOTP_MAX_DELAY = 10000;
 | 
|
 BOOTP_MIN_TIMEOUT = 500;
 | 
|
 BOOTP_MAX_TIMEOUT = 15000;
 | 
|
 BOOTP_MIN_RETRIES = 1;
 | 
|
 BOOTP_MAX_RETRIES = 100;
 | 
|
 DHCP_DELAY = 250;
 | 
Wait 250 ms before starting initial request (Previously 1000 ms) | 
 DHCP_TIMEOUT = 4000;
 | 
Wait up to 4 seconds for a DHCP reply (Previous 8 seconds) | 
 DHCP_RETRIES = 6;
 | 
Retry DHCP requests up to 6 times | 
 DHCP_BROADCAST = False;
 | 
If True set the broadcast flag in the DHCP request | 
 DHCP_MIN_DELAY = 0;
 | 
|
 DHCP_MAX_DELAY = 10000;
 | 
|
 DHCP_MIN_TIMEOUT = 500;
 | 
|
 DHCP_MAX_TIMEOUT = 15000;
 | 
|
 DHCP_MIN_RETRIES = 1;
 | 
|
 DHCP_MAX_RETRIES = 100;
 | 
|
 BOOTP_VENDOR_SIZE = 64;
 | 
Size of the Vendor area | 
 DHCP_OPTIONS_SIZE = 312;
 | 
Size of the Options area | 
 DHCP_MESSAGE_SIZE = 576;
 | 
Size of the max message | 
 
BOOTP/DHCP request 
 BOOTP_REQUEST*  BOOTP_REQUEST = 1;
 | 
|
 BOOTP_REPLY = 2;
 | 
 
DHCP message 
 DHCP_*  DHCP_DISCOVER = 1;
 | 
|
 DHCP_OFFER = 2;
 | 
|
 DHCP_REQUEST = 3;
 | 
|
 DHCP_DECLINE = 4;
 | 
|
 DHCP_ACK = 5;
 | 
|
 DHCP_NAK = 6;
 | 
|
 DHCP_RELEASE = 7;
 | 
|
 DHCP_INFORM = 8;
 | 
|
 DHCP_RENEWAL_TO = 1;
 | 
|
 DHCP_REBIND_TO = 2;
 | 
|
 
BOOTP/DHCP options
 PAD_OPT = 0;
 | 
|
 END_OPT = 255;
 | 
|
 SUBNET_MASK = 1;
 | 
|
 TIME_OFFSET = 2;
 | 
|
 ROUTERS_ON_SNET = 3;
 | 
|
 TIME_SRV = 4;
 | 
|
 NAME_SRV = 5;
 | 
|
 DNS_SRV = 6;
 | 
|
 LOG_SRV = 7;
 | 
|
 COOKIE_SRV = 8;
 | 
|
 LPR_SRV = 9;
 | 
|
 IMPRESS_SRV = 10;
 | 
|
 RES_LOCATION_SRV = 11;
 | 
|
 HOST_NAME = 12;
 | 
|
 BOOT_FSIZE = 13;
 | 
|
 MERIT_DUMPFILE = 14;
 | 
|
 DOMAIN_NAME = 15;
 | 
|
 SWAP_SRV = 16;
 | 
|
 ROOT_PATH = 17;
 | 
|
 EXTENTIONS_PATH = 18;
 | 
|
 IP_FORWARDING = 19;
 | 
|
 NON_LOCAL_SRC_ROUTE = 20;
 | 
|
 POLICY_FILTER = 21;
 | 
|
 MAX_DGRAM_REASM_SIZE = 22;
 | 
|
 IP_DEFAULT_TTL = 23;
 | 
|
 PATH_MTU_AGING_TIMEOUT = 24;
 | 
|
 PATH_MTU_PLATEAU_TABLE = 25;
 | 
|
 IF_MTU = 26;
 | 
|
 ALL_SUBNETS_LOCAL = 27;
 | 
|
 BROADCAST_ADDR = 28;
 | 
|
 PERFORM_MASK_DISCOVERY = 29;
 | 
|
 MASK_SUPPLIER = 30;
 | 
|
 PERFORM_ROUTER_DISCOVERY = 31;
 | 
|
 ROUTER_SOLICITATION_ADDR = 32;
 | 
|
 STATIC_ROUTE = 33;
 | 
|
 TRAILER_ENCAPSULATION = 34;
 | 
|
 ARP_CACHE_TIMEOUT = 35;
 | 
|
 ETHERNET_ENCAPSULATION = 36;
 | 
|
 TCP_DEFAULT_TTL = 37;
 | 
|
 TCP_KEEPALIVE_INTERVAL = 38;
 | 
|
 TCP_KEEPALIVE_GARBAGE = 39;
 | 
|
 NIS_DOMAIN_NAME = 40;
 | 
|
 NIS_SRVS = 41;
 | 
|
 NTP_SRVS = 42;
 | 
|
 VENDOR_SPECIFIC_INFO = 43;
 | 
|
 NBIOS_NAME_SRV = 44;
 | 
|
 NBIOS_DGRAM_DIST_SRV = 45;
 | 
|
 NBIOS_NODE_TYPE = 46;
 | 
|
 NBIOS_SCOPE = 47;
 | 
|
 XFONT_SRV = 48;
 | 
|
 XDISPLAY_MANAGER = 49;
 | 
|
| DHCP Options | |
 DHCP_REQUESTED_IP_ADDR = 50;
 | 
|
 DHCP_IP_ADDR_LEASE_TIME = 51;
 | 
|
 DHCP_OPT_OVERLOAD = 52;
 | 
|
 DHCP_MSG_TYPE = 53;
 | 
|
 DHCP_SRV_IDENTIFIER = 54;
 | 
|
 DHCP_PARAM_REQUEST = 55;
 | 
|
 DHCP_MSG = 56;
 | 
|
 DHCP_MAX_MSG_SIZE = 57;
 | 
|
 DHCP_T1_VALUE = 58;
 | 
|
 DHCP_T2_VALUE = 59;
 | 
|
 DHCP_CLASS_ID = 60;
 | 
|
 DHCP_CLIENT_ID = 61;
 | 
|
 DHCP_NIS_DOMAIN_OPT = 64;
 | 
|
 DHCP_NIS_SRV_OPT = 65;
 | 
|
 DHCP_TFTP_SERVER = 66;
 | 
|
 DHCP_BOOT_FILENAME = 67;
 | 
|
 DHCP_MOBIP_HOME_AGENTS = 68;
 | 
|
 DHCP_SMTP_SRVS = 69;
 | 
|
 DHCP_POP3_SRVS = 70;
 | 
|
 DHCP_NNTP_SRVS = 71;
 | 
|
 DHCP_WWW_SRVS = 72;
 | 
|
 DHCP_FINGER_SRVS = 73;
 | 
|
 DHCP_IRC_SRVS = 74;
 | 
|
 DHCP_STREET_TALK_SRVS = 75;
 | 
|
 DHCP_STDA_SRVS = 76;
 | 
|
 
DHCP flag 
 DHCP_FLAG_*  DHCP_FLAG_BROADCAST = $8000;
 | 
 
ARP configuration 
 ARP_CONFIG_*  ARP_CONFIG_START = $C0A86401;
 | 
192.168.100.1 | 
 ARP_CONFIG_STOP = $C0A864FE;
 | 
192.168.100.254 | 
Type definitions
DHCP specific types
PBOOTPHeader = ^TBOOTPHeader;
TBOOTPHeader = packed record
 Opcode:Byte;
 | 
packet op code/message type | 
 HardwareType:Byte;
 | 
hardware address type, 1 = 10 mb ethernet | 
 HardwareLength:Byte;
 | 
hardware address len, eg '6' for 10mb eth | 
 Hops:Byte;
 | 
client sets to zero, optionally used by gateways in cross-gateway booting | 
 Identifier:LongWord;
 | 
transaction Id, a random number | 
 Seconds:Word;
 | 
filled in by client, seconds elapsed since client started trying to boot | 
 Reserved:Word;
 | 
|
 ClientIP:TInAddr;
 | 
client IP address filled in by client if known | 
 YourIP:TInAddr;
 | 
'your' (client) IP address filled by server if client doesn't know | 
 ServerIP:TInAddr;
 | 
server IP address returned in bootreply | 
 GatewayIP:TInAddr;
 | 
gateway IP address, used in optional cross-gateway booting | 
 ClientHardware:THardwareAddress;
 | 
client hardware address, filled by client | 
 DummyData:array[0..9] of Byte;
 | 
dummy to fill out remaining bytes of above | 
 ServerName:array[0..63] of Byte;
 | 
optional server host name, null terminated | 
 FileName:array[0..127] of Byte;
 | 
boot file name, null terminated string 'generic' name or null in bootrequest, fully qualified directory-path name in bootreply | 
 VendorData:array[0..BOOTP_VENDOR_SIZE - 1] of Byte;
 | 
optional vendor-specific area | 
DHCP header
PDHCPHeader = ^TDHCPHeader;
TDHCPHeader = packed record
 Opcode:Byte;
 | 
packet op code/message type | 
 HardwareType:Byte;
 | 
hardware address type, 1 = 10 mb ethernet | 
 HardwareLength:Byte;
 | 
hardware address len, eg '6' for 10mb eth | 
 Hops:Byte;
 | 
client sets to zero, optionally used by gateways in cross-gateway booting | 
 Identifier:LongWord;
 | 
transaction Id, a random number | 
 Seconds:Word;
 | 
filled in by client, seconds elapsed since client started trying to boot | 
 Flags:Word;
 | 
|
 ClientIP:TInAddr;
 | 
client IP address filled in by client if known | 
 YourIP:TInAddr;
 | 
'your' (client) IP address filled by server if client doesn't know | 
 ServerIP:TInAddr;
 | 
server IP address returned in bootreply | 
 GatewayIP:TInAddr;
 | 
gateway IP address, used in optional cross-gateway booting | 
 ClientHardware:THardwareAddress;
 | 
client hardware address, filled by client | 
 DummyData:array[0..9] of Byte;
 | 
dummy to fill out remaining bytes of above | 
 ServerName:array[0..63] of Byte;
 | 
optional server host name, null terminated | 
 FileName:array[0..127] of Byte;
 | 
boot file name, null terminated string 'generic' name or null in bootrequest, fully qualified directory-path name in bootreply | 
 Options:array[0..DHCP_OPTIONS_SIZE - 1] of Byte;
 | 
DHCP options area (minimum 312 bytes) | 
DHCP client Id
PDHCPClientId = ^TDHCPClientId;
TDHCPClientId = packed record
 Tag:Byte;
 | 
|
 Hardware:THardwareAddress;
 | 
Class definitions
DHCP specific classes
 TDHCPConfigTransport = class(TConfigTransport)
 | 
 TDHCPConfig = class(TNetworkConfig)
 | 
 TBOOTPConfigTransport = class(TConfigTransport)
 | 
 TBOOTPConfig = class(TNetworkConfig)
 | 
 TARPConfigTransport = class(TConfigTransport)
 | 
 TARPConfig = class(TNetworkConfig)
 | 
 TRARPConfigTransport = class(TConfigTransport)
 | 
 TRARPConfig = class(TNetworkConfig)
 | 
 TStaticConfigTransport = class(TConfigTransport)
 | 
 TStaticConfig = class(TNetworkConfig)
 | 
 TLoopbackConfigTransport = class(TConfigTransport)
 | 
 TLoopbackConfig = class(TNetworkConfig)
 | 
Public variables
None defined
Function declarations
Initialization functions
procedure DHCPInit;
Description: Initialize the DHCP unit and create the Loopback, Static, DHCP, BOOTP, RARP and ARP configuration handlers
| Note | Called only during system startup | 
|---|
Return to Unit Reference