Started work on DHCP.

git-svn-id: https://spexeah.com:8443/svn/Asuro@926 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron
2020-07-10 14:51:48 +00:00
parent 861f65abe0
commit 29f986a8e4
6 changed files with 229 additions and 45 deletions

View File

@ -189,6 +189,132 @@ type
end;
PUDPPseudoHeader = ^TUDPPseudoHeader;
{ DHCP }
TDHCPHeader = packed record
Message_Type : uint8;
Hardware_Type : uint8;
Hardware_Address_Length : uint8;
Hops : uint8;
Transaction_ID : uint32;
Seconds_Elapsed : uint16;
Bootp_Flags : uint16;
Client_IP : TIPv4Address;
Your_IP : TIPv4Address;
Server_IP : TIPV4Header;
Relay_Agent_IP : TIPV4Header;
Client_MAC : TMACAddress;
Padding : Array[0..9] of uint8;
Server_Hostname : Array[0..63] of uint8;
Boot_File : Array[0..127] of uint8;
Magic_Cookie : Array[0..3] of uint8;
Option_start : char;
end;
PDHCPHeader = ^TDHCPHeader;
TDHCPOpCode = (
//BootTP Vendor Information Extensions
PAD:= 0,
SUBNET_MASK:= 1,
TIME_OFFSET:= 2,
ROUTER:= 3,
TIME_SERVER:= 4,
NAME_SERVER:= 5,
DNS_SERVER:= 6,
LOG_SERVER:= 7,
COOKIE_SERVER:= 8,
LPR_SERVER:= 9,
IMPRESS_SERVER:= 10,
RESOURCE_LOCATION_SERVER:= 11,
HOST_NAME:= 12,
BOOT_FILE_SIZE:= 13,
MERIT_DUMP_FILE:= 14,
DOMAIN_NAME:= 15,
SWAP_SERVER:= 16,
ROOT_PATH:= 17,
EXTENSIONS_PATH:= 18,
END_VENDOR_OPTIONS:= 255,
//IP Layer Parameters Per Host
IP_FORWARDING:= 19,
NONLOCAL_SOURCE_ROUTING:= 20,
POLICY_FILTER:= 21,
MAXIMUM_DATAGRAM_REASSEMBLY_SIZE:= 22,
DEFAULT_IP_TTL:= 23,
PATH_MTU_AGING_TIMEOUT:= 24,
PATH_MTU_PLATEAU_TABLE:= 25,
//IP Layer Parameters Per Interface
INTERFACE_MTU:= 26,
ALL_SUBNETS_ARE_LOCAL:= 27,
BROADCAST_ADDRESS:= 28,
PERFORM_MASK_DISCOVERY:= 29,
MASK_SUPPLIER:= 30,
PERFORM_ROUTER_DISCOVERY:= 31,
ROUTER_SOLICITATION_ADDRESS:= 32,
STATIC_ROUTE:= 33,
//Link Layer Parameters Per Interface
TRAILER_ENCAPSULATION_OPTION:= 34,
ARP_CACHE_TIMEOUT:= 35,
ETHERNET_ENCAPSULATION:= 36,
//TCP Parameters
TCP_DEFAULT_TTL:= 37,
TCP_KEEPALIVE_INTERVAL:= 38,
TCP_KEEPALIVE_GARBAGE:= 39,
//Application and Service Parameters
NETWORK_INFORMATION_SERVICE_DOMAIN:= 40,
NETWORK_INFORMATION_SERVERS:= 41,
NTP_SERVERS:= 42,
VENDOR_SPECIFIC_INFORMATION:= 43,
NETBIOS_OVER_TCP_NAME_SERVER:= 44,
NETBIOS_OVER_TCP_DATAGRAM_DISTRIBUTION_SERVER:= 45,
NETBIOS_OVER_TCP_NODE_TYPE:= 46,
NETBIOS_OVER_TCP_SCOPE:= 47,
X_WINDOW_SYSTEM_FONT_SERVER:= 48,
X_WINDOW_SYSTEM_DISPLAY_MANAGER:= 49,
NETWORK_INFORMATION_SERVICE_PLUS_DOMAIN:= 64,
NETWORK_INFORMATION_SERVICE_PLUS_SERVERS:= 65,
MOBILE_IP_HOME_AGENT:= 68,
SMTP_SERVER:= 69,
POP3_SERVER:= 70,
NNTP_SERVER:= 71,
DEFAULT_WWW_SERVER:= 72,
DEFAULT_FINGER_SERVER:= 73,
DEFAULT_IRC_SERVER:= 74,
STREETTALK_SERVER:= 75,
STDA_SERVER:= 76,
//DHCP Extensions
REQUESTED_IP_ADDRESS:= 50,
IP_ADDRESS_LEASE_TIME:= 51,
OPTION_OVERLOAD:= 52,
DHCP_MESSAGE_TYPE:= 53,
SERVER_IDENTIFIER:= 54,
PARAMETER_REQUEST_LIST:= 55,
MESSAGE:= 56,
MAXIMUM_DHCP_MESSAGE_SIZE:= 57,
RENEWAL_T1_TIME_VALUE:= 58,
REBINDING_T2_TIME_VALUE:= 59,
VENDOR_CLASS_IDENTIFIER:= 60,
CLIENT_IDENTIFIER:= 61,
TFTP_SERVER_NAME:= 66,
BOOTFILE_NAME:= 67,
//Misc
RELAY_AGENT_INFORMATION:= 82,
NDS_SERVERS:= 85,
NDS_TREE_NAME:= 86,
NDS_CONTEXT:= 87,
POSIX_TIMEZONE:= 100,
TZ_TIMEZONE:= 101,
DOMAIN_SEARCH:= 119,
CLASSLESS_STATIC_ROUTE:= 121
);
TDHCPMessageType = (
DISCOVER := 1,
OFFER := 2,
REQUEST := 3,
DECLINE := 4,
PACK := 5,
NAK := 6,
RELEASE := 7,
INFORM := 8
);
{ Callback Types }
TNetSendCallback = function(p_data : void; p_len : uint16) : sint32;
@ -197,6 +323,9 @@ type
{ Constants }
const
{ DHCP Magic }
DHCP_MAGIC : Array[0..3] of uint8 = ($63, $82, $53, $63);
{ MACs }
BROADCAST_MAC : Array[0..5] of uint8 = ($FF, $FF, $FF, $FF, $FF, $FF);
NULL_MAC : Array[0..5] of uint8 = ($00, $00, $00, $00, $00, $00);