Merge branch 'feature/fpc-3.2.2' into feature/lvgl
# Conflicts: # .drone.yml # virtualbox-wrapper.ps1
This commit is contained in:
commit
ceb03a9d7e
12 files changed
+1536
-256
No files matched your search
@@ -58,16 +58,19 @@ begin
|
||||
end;
|
||||
|
||||
function sinb(port : uint16) : uint8;
|
||||
var
|
||||
tmp : uint8;
|
||||
begin
|
||||
asm
|
||||
PUSH EAX
|
||||
PUSH EDX
|
||||
MOV DX, port
|
||||
IN AL, DX
|
||||
MOV sinb, AL
|
||||
MOV tmp, AL
|
||||
POP EDX
|
||||
POP EAX
|
||||
end;
|
||||
sinb := tmp;
|
||||
io_wait;
|
||||
end;
|
||||
|
||||
|
||||
@@ -491,22 +491,26 @@ begin
|
||||
|
||||
{ Create a new header to the use in our DHCP REQUEST packet }
|
||||
SendHeader:= createHeader();
|
||||
CopyIPv4(puint8(@Header^.Your_IP[0]), puint8(@SendHeader^.Client_IP[0]));
|
||||
CopyIPv4(@getIPv4Config^.Address[0], puint8(@SendHeader^.Client_IP[0]));
|
||||
CopyIPv4(puint8(@Header^.Server_IP[0]), puint8(@SendHeader^.Server_IP[0]));
|
||||
processHeader(SendHeader);
|
||||
|
||||
{ Setup Options }
|
||||
SendOptions:= newOptions();
|
||||
|
||||
{ Create a message type option and assign it the value REQUEST }
|
||||
SendMsgType:= ord(TDHCPMessageType.REQUEST);
|
||||
NewOption(SendOptions, TDHCPOpCode.DHCP_MESSAGE_TYPE, void(@SendMsgType), 1, false);
|
||||
|
||||
{ Create a Requested IP option and assign it the value from the OFFER packet header }
|
||||
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@SendHeader^.Client_IP[0]), 4, false);
|
||||
NewOption(SendOptions, TDHCPOpCode.REQUESTED_IP_ADDRESS, void(@Header^.Your_IP[0]), 4, false);
|
||||
|
||||
{ Create a Server Identifier Option and assign it the value from the OFFER packet options }
|
||||
Option:= getOptionByOpcode(Options, TDHCPOpCode.SERVER_IDENTIFIER);
|
||||
if Option <> nil then begin
|
||||
NewOption(SendOptions, TDHCPOpCode.SERVER_IDENTIFIER, void(@Option^.Value[0]), 4, false);
|
||||
end;
|
||||
|
||||
{ Create a Parameter Request List, Request the following: Netmask, Gateway, DNS Name & DNS Server }
|
||||
RequestParams[0]:= Ord(TDHCPOpCode.SUBNET_MASK);
|
||||
RequestParams[1]:= Ord(TDHCPOpCode.ROUTER);
|
||||
@@ -522,9 +526,13 @@ begin
|
||||
MAC:= getMAC();
|
||||
packetCtx:= PPacketContext(Kalloc(sizeof(TPacketContext)));
|
||||
packetCtx^.TTL:= 128;
|
||||
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
||||
|
||||
{ Copy over MAC - src: broadcast - dst: DHCP Server }
|
||||
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
||||
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
|
||||
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
||||
|
||||
{ Copy over IP - src: NULL - dst: Broadcast }
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
|
||||
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
||||
|
||||
{ Setup UDPContext (UDP) & copy in the correct details }
|
||||
@@ -570,7 +578,7 @@ begin
|
||||
|
||||
{ Check the frame is for us and then process }
|
||||
MAC:= getMAC;
|
||||
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) then begin
|
||||
if MACEqual(@context^.PacketContext^.MAC.Destination[0], MAC) or MACEqual(@context^.PacketContext^.MAC.Destination[0], BROADCAST_MAC) then begin
|
||||
Outputln('DHCP','Frame is addressed to us.');
|
||||
{ Check the message type is client specific }
|
||||
If Header^.Message_Type = $02 then begin
|
||||
@@ -655,7 +663,7 @@ begin
|
||||
copyMAC(@BROADCAST_MAC[0], @packetCtx^.MAC.Destination[0]);
|
||||
MAC:= getMAC;
|
||||
copyMAC(MAC, @packetCtx^.MAC.Source[0]);
|
||||
copyIPv4(@NULL_IP[0], @packetCtx^.IP.Source[0]);
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @packetCtx^.IP.Source[0]);
|
||||
copyIPv4(@BROADCAST_IP[0], @packetCtx^.IP.Destination[0]);
|
||||
|
||||
{ Setup UDPContext (UDP) }
|
||||
|
||||
+1110
-238
File diff suppressed because it is too large.
Load diff
+348
-1
File diff suppressed because it is too large.
Load diff
+16
-4
@@ -150,10 +150,13 @@ begin
|
||||
end;
|
||||
|
||||
function getESP : uint32;
|
||||
var
|
||||
tmp: uint32;
|
||||
begin
|
||||
asm
|
||||
MOV getESP, ESP
|
||||
MOV tmp, ESP
|
||||
end;
|
||||
getESP := tmp;
|
||||
end;
|
||||
|
||||
function HexCharToDecimal(hex : char) : uint8;
|
||||
@@ -382,6 +385,8 @@ begin
|
||||
end;
|
||||
|
||||
function inl(port : uint16) : uint32; [public, alias: 'util_inl'];
|
||||
var
|
||||
tmp : uint32;
|
||||
begin
|
||||
//serial.sendString('[inl]');
|
||||
//serial.sendHex(port);
|
||||
@@ -390,14 +395,17 @@ begin
|
||||
PUSH EDX
|
||||
MOV DX, port
|
||||
IN EAX, DX
|
||||
MOV inl, EAX
|
||||
MOV tmp, EAX
|
||||
POP EDX
|
||||
POP EAX
|
||||
end;
|
||||
inl := tmp;
|
||||
io_wait;
|
||||
end;
|
||||
|
||||
function inw(port : uint16) : uint16; [public, alias: 'util_inw'];
|
||||
var
|
||||
tmp : uint16;
|
||||
begin
|
||||
//serial.sendString('[inw]');
|
||||
//serial.sendHex(port);
|
||||
@@ -406,14 +414,17 @@ begin
|
||||
PUSH EDX
|
||||
MOV DX, port
|
||||
IN AX, DX
|
||||
MOV inw, AX
|
||||
MOV tmp, AX
|
||||
POP EDX
|
||||
POP EAX
|
||||
end;
|
||||
inw := tmp;
|
||||
io_wait;
|
||||
end;
|
||||
|
||||
function inb(port : uint16) : uint8; [public, alias: 'util_inb'];
|
||||
var
|
||||
tmp : uint8;
|
||||
begin
|
||||
//serial.sendString('[inb]');
|
||||
//serial.sendHex(port);
|
||||
@@ -422,10 +433,11 @@ begin
|
||||
PUSH EDX
|
||||
MOV DX, port
|
||||
IN AL, DX
|
||||
MOV inb, AL
|
||||
MOV tmp, AL
|
||||
POP EDX
|
||||
POP EAX
|
||||
end;
|
||||
inb := tmp;
|
||||
io_wait;
|
||||
end;
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@ begin
|
||||
klalloc:= Address;
|
||||
end;
|
||||
|
||||
function kalloc(size : uint32) : void;
|
||||
function kalloc(size : uint32) : void; [public, alias: 'kernel_kalloc'];
|
||||
var
|
||||
Heap_Entries : uint32;
|
||||
i, j : uint32;
|
||||
@@ -217,7 +217,7 @@ begin
|
||||
//pop_trace;
|
||||
end;
|
||||
|
||||
procedure kfree(area : void);
|
||||
procedure kfree(area : void); [public, alias: 'kernel_kfree'];
|
||||
var
|
||||
hp : PHeapPage;
|
||||
entry : uint32;
|
||||
|
||||
Reference in new issue
Block a user