mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-25 01:10:01 +02:00
* lots of endian fixes
This commit is contained in:
parent
e0123f44ff
commit
f683702e94
@ -34,33 +34,14 @@ Unit resolve;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes,UriParser;
|
Sockets,Classes,UriParser;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
THostAddr = array[1..4] of byte;
|
THostAddr = in_addr;
|
||||||
PHostAddr = ^THostAddr;
|
PHostAddr = ^THostAddr;
|
||||||
TNetAddr = THostAddr;
|
TNetAddr = in_addr;
|
||||||
PNetAddr = ^TNetAddr;
|
PNetAddr = ^TNetAddr;
|
||||||
|
|
||||||
Const
|
|
||||||
NoAddress : THostAddr = (0,0,0,0);
|
|
||||||
NoNet : TNetAddr = (0,0,0,0);
|
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
|
||||||
Axuliary routines
|
|
||||||
---------------------------------------------------------------------}
|
|
||||||
|
|
||||||
function HostAddrToStr (Entry : THostAddr) : String;
|
|
||||||
function StrToHostAddr (IP : String) : THostAddr;
|
|
||||||
function NetAddrToStr (Entry : TNetAddr) : String;
|
|
||||||
function StrToNetAddr (IP : String) : TNetAddr;
|
|
||||||
Function HostToNet (Host : ThostAddr) : ThostAddr;
|
|
||||||
Function HostToNet (Host : Longint) : Longint;
|
|
||||||
Function NetToHost (Net : Longint) : Longint;
|
|
||||||
Function NetToHost (Net : TNetAddr) : TNetAddr;
|
|
||||||
Function ShortHostToNet (Host : Word) : Word;
|
|
||||||
Function ShortNetToHost (Net : Word) : Word;
|
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
@ -218,114 +199,6 @@ uses netdb;
|
|||||||
{$i resolve.inc}
|
{$i resolve.inc}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
function HostAddrToStr (Entry : THostAddr) : String;
|
|
||||||
|
|
||||||
Var Dummy : String[4];
|
|
||||||
I : Longint;
|
|
||||||
|
|
||||||
begin
|
|
||||||
HostAddrToStr:='';
|
|
||||||
For I:=1 to 4 do
|
|
||||||
begin
|
|
||||||
Str(Entry[I],Dummy);
|
|
||||||
HostAddrToStr:=HostAddrToStr+Dummy;
|
|
||||||
If I<4 Then
|
|
||||||
HostAddrToStr:=HostAddrToStr+'.';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function StrToHostAddr(IP : String) : THostAddr ;
|
|
||||||
|
|
||||||
Var
|
|
||||||
Dummy : String;
|
|
||||||
I : Longint;
|
|
||||||
J : Integer;
|
|
||||||
Temp : THostAddr;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result:=NoAddress;
|
|
||||||
For I:=1 to 4 do
|
|
||||||
begin
|
|
||||||
If I<4 Then
|
|
||||||
begin
|
|
||||||
J:=Pos('.',IP);
|
|
||||||
If J=0 then
|
|
||||||
exit;
|
|
||||||
Dummy:=Copy(IP,1,J-1);
|
|
||||||
Delete (IP,1,J);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
Dummy:=IP;
|
|
||||||
Val (Dummy,Temp[I],J);
|
|
||||||
If J<>0 then Exit;
|
|
||||||
end;
|
|
||||||
Result:=Temp;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function NetAddrToStr (Entry : TNetAddr) : String;
|
|
||||||
|
|
||||||
Var Dummy : String[4];
|
|
||||||
I : Longint;
|
|
||||||
|
|
||||||
begin
|
|
||||||
NetAddrToStr:='';
|
|
||||||
For I:=4 downto 1 do
|
|
||||||
begin
|
|
||||||
Str(Entry[I],Dummy);
|
|
||||||
NetAddrToStr:=NetAddrToStr+Dummy;
|
|
||||||
If I>1 Then
|
|
||||||
NetAddrToStr:=NetAddrToStr+'.';
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function StrToNetAddr(IP : String) : TNetAddr;
|
|
||||||
|
|
||||||
begin
|
|
||||||
StrToNetAddr:=TNetAddr(StrToHostAddr(IP));
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function HostToNet (Host : ThostAddr) : THostAddr;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result[1]:=Host[4];
|
|
||||||
Result[2]:=Host[3];
|
|
||||||
Result[3]:=Host[2];
|
|
||||||
Result[4]:=Host[1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function NetToHost (Net : TNetAddr) : TNetAddr;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result[1]:=Net[4];
|
|
||||||
Result[2]:=Net[3];
|
|
||||||
Result[3]:=Net[2];
|
|
||||||
Result[4]:=Net[1];
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function HostToNet (Host : Longint) : Longint;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result:=Longint(HostToNet(THostAddr(host)));
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function NetToHost (Net : Longint) : Longint;
|
|
||||||
|
|
||||||
begin
|
|
||||||
Result:=Longint(NetToHost(TNetAddr(Net)));
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function ShortHostToNet (Host : Word) : Word;
|
|
||||||
|
|
||||||
begin
|
|
||||||
ShortHostToNet:=lo(host)*256+Hi(Host);
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function ShortNetToHost (Net : Word) : Word;
|
|
||||||
|
|
||||||
begin
|
|
||||||
ShortNetToHost:=lo(Net)*256+Hi(Net);
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
TResolver
|
TResolver
|
||||||
---------------------------------------------------------------------}
|
---------------------------------------------------------------------}
|
||||||
@ -952,7 +825,10 @@ Finalization
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.10 2005-02-14 17:13:15 peter
|
Revision 1.11 2005-03-18 10:58:16 marco
|
||||||
|
* lots of endian fixes
|
||||||
|
|
||||||
|
Revision 1.10 2005/02/14 17:13:15 peter
|
||||||
* truncate log
|
* truncate log
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -546,8 +546,8 @@ Var
|
|||||||
addr: TInetSockAddr;
|
addr: TInetSockAddr;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
A := StrToHostAddr(FHost);
|
A := StrToNetAddr(FHost);
|
||||||
if A[1] = 0 then
|
if A.s_bytes[4] = 0 then
|
||||||
With THostResolver.Create(Nil) do
|
With THostResolver.Create(Nil) do
|
||||||
try
|
try
|
||||||
If Not NameLookup(FHost) then
|
If Not NameLookup(FHost) then
|
||||||
@ -558,7 +558,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
addr.family := AF_INET;
|
addr.family := AF_INET;
|
||||||
addr.port := ShortHostToNet(FPort);
|
addr.port := ShortHostToNet(FPort);
|
||||||
addr.addr := Cardinal(A);
|
addr.addr := a.s_addr; // hosttonet(A).s_addr;
|
||||||
|
//Cardinal(A);
|
||||||
|
|
||||||
If not Sockets.Connect(ASocket, addr, sizeof(addr)) then
|
If not Sockets.Connect(ASocket, addr, sizeof(addr)) then
|
||||||
raise ESocketError.Create(seConnectFailed, [Format('%s:%d',[FHost, FPort])]);
|
raise ESocketError.Create(seConnectFailed, [Format('%s:%d',[FHost, FPort])]);
|
||||||
@ -600,7 +601,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.25 2005-02-14 17:13:15 peter
|
Revision 1.26 2005-03-18 10:58:16 marco
|
||||||
|
* lots of endian fixes
|
||||||
|
|
||||||
|
Revision 1.25 2005/02/14 17:13:15 peter
|
||||||
* truncate log
|
* truncate log
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -482,8 +482,8 @@ procedure TCustomTCPClient.DoResolve;
|
|||||||
var
|
var
|
||||||
HostResolver: THostResolver;
|
HostResolver: THostResolver;
|
||||||
begin
|
begin
|
||||||
HostAddr := StrToHostAddr(Host);
|
HostAddr := StrToNetAddr(Host);
|
||||||
if HostAddr[1] = 0 then
|
if HostAddr.s_bytes[4] = 0 then
|
||||||
begin
|
begin
|
||||||
HostResolver := THostResolver.Create(nil);
|
HostResolver := THostResolver.Create(nil);
|
||||||
try
|
try
|
||||||
@ -588,7 +588,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.6 2005-02-14 17:13:15 peter
|
Revision 1.7 2005-03-18 10:58:16 marco
|
||||||
|
* lots of endian fixes
|
||||||
|
|
||||||
|
Revision 1.6 2005/02/14 17:13:15 peter
|
||||||
* truncate log
|
* truncate log
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,14 @@ unit netdb;
|
|||||||
|
|
||||||
Interface
|
Interface
|
||||||
|
|
||||||
{$i hsh.inc} // disappears if part of resolve.pp !!
|
{ i hsh.inc} // disappears if part of resolve.pp !!
|
||||||
|
|
||||||
|
Uses Sockets;
|
||||||
|
|
||||||
|
Type
|
||||||
|
THostAddr = in_addr; // historical aliases for these.
|
||||||
|
THostAddr6= Tin6_addr;
|
||||||
|
TNetAddr = THostAddr; // but in net order.
|
||||||
|
|
||||||
Const
|
Const
|
||||||
DNSPort = 53;
|
DNSPort = 53;
|
||||||
@ -102,9 +109,8 @@ uses
|
|||||||
{$else}
|
{$else}
|
||||||
BaseUnix,
|
BaseUnix,
|
||||||
{$endif}
|
{$endif}
|
||||||
sockets,sysutils;
|
sysutils;
|
||||||
|
|
||||||
{$i hs.inc}
|
|
||||||
|
|
||||||
const
|
const
|
||||||
{ from http://www.iana.org/assignments/dns-parameters }
|
{ from http://www.iana.org/assignments/dns-parameters }
|
||||||
@ -154,48 +160,6 @@ Var
|
|||||||
ResolveFileAge : Longint;
|
ResolveFileAge : Longint;
|
||||||
ResolveFileName : String;
|
ResolveFileName : String;
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
|
||||||
Auxiliary functions.
|
|
||||||
---------------------------------------------------------------------}
|
|
||||||
|
|
||||||
function htonl(const i:integer):integer;
|
|
||||||
begin
|
|
||||||
{$ifdef ENDIAN_LITTLE}
|
|
||||||
result := (i shr 24) or (i shr 8 and $ff00) or (i shl 8 and $ff0000) or (i shl 24 and $ff000000);
|
|
||||||
{$else}
|
|
||||||
result := i;
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function htons(const W : Word) : word;
|
|
||||||
|
|
||||||
begin
|
|
||||||
{$ifdef ENDIAN_LITTLE}
|
|
||||||
result := ((w and $ff00) shr 8) or ((w and $ff) shl 8);
|
|
||||||
{$else}
|
|
||||||
result := w;
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
Function ntohs(const W : Word) : Word;
|
|
||||||
|
|
||||||
begin
|
|
||||||
{$ifdef ENDIAN_LITTLE}
|
|
||||||
result := ((w and $ff00) shr 8) or ((w and $ff) shl 8);
|
|
||||||
{$else}
|
|
||||||
result := w;
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
function ntohl(const i:integer):integer;
|
|
||||||
begin
|
|
||||||
{$ifdef ENDIAN_LITTLE}
|
|
||||||
result := (i shr 24) or (i shr 8 and $ff00) or (i shl 8 and $ff0000) or (i shl 24 and $ff000000);
|
|
||||||
{$else}
|
|
||||||
result := i;
|
|
||||||
{$endif}
|
|
||||||
end;
|
|
||||||
|
|
||||||
{ ---------------------------------------------------------------------
|
{ ---------------------------------------------------------------------
|
||||||
Resolve.conf handling
|
Resolve.conf handling
|
||||||
---------------------------------------------------------------------}
|
---------------------------------------------------------------------}
|
||||||
@ -243,7 +207,7 @@ begin
|
|||||||
If CheckDirective('nameserver') then
|
If CheckDirective('nameserver') then
|
||||||
begin
|
begin
|
||||||
H:=HostToNet(StrToHostAddr(L));
|
H:=HostToNet(StrToHostAddr(L));
|
||||||
If (H[1]<>0) then
|
If H.s_bytes[1]<>0 then
|
||||||
begin
|
begin
|
||||||
Inc(Result);
|
Inc(Result);
|
||||||
DNSServers[Result]:=H;
|
DNSServers[Result]:=H;
|
||||||
@ -332,7 +296,6 @@ Var
|
|||||||
I : Integer;
|
I : Integer;
|
||||||
HaveName : Boolean;
|
HaveName : Boolean;
|
||||||
PA : ^TRRData;
|
PA : ^TRRData;
|
||||||
RClass,RType : Word;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=False;
|
Result:=False;
|
||||||
@ -464,8 +427,8 @@ end;
|
|||||||
Function Query(Resolver : Integer; Var Qry,Ans : TQueryData; QryLen : Integer; Var AnsLen : Integer) : Boolean;
|
Function Query(Resolver : Integer; Var Qry,Ans : TQueryData; QryLen : Integer; Var AnsLen : Integer) : Boolean;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
BA,SA : TInetSockAddr;
|
SA : TInetSockAddr;
|
||||||
Sock,L,I : Longint;
|
Sock,L : Longint;
|
||||||
Al,RTO : Longint;
|
Al,RTO : Longint;
|
||||||
ReadFDS : {$ifdef VER1_0}FDSet{$ELSE}TFDSet{$ENDIF};
|
ReadFDS : {$ifdef VER1_0}FDSet{$ELSE}TFDSet{$ENDIF};
|
||||||
|
|
||||||
@ -489,7 +452,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
family:=AF_INET;
|
family:=AF_INET;
|
||||||
port:=htons(DNSport);
|
port:=htons(DNSport);
|
||||||
addr:=cardinal(HostToNet(DNSServers[Resolver]));
|
addr:=cardinal(DNSServers[Resolver]); // dnsservers already in net order
|
||||||
end;
|
end;
|
||||||
sendto(sock,qry,qrylen+12,0,SA,SizeOf(SA));
|
sendto(sock,qry,qrylen+12,0,SA,SizeOf(SA));
|
||||||
// Wait for answer.
|
// Wait for answer.
|
||||||
@ -598,6 +561,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
//const NoAddress6 : array[0..7] of word = (0,0,0,0,0,0,0,0);
|
||||||
|
|
||||||
Function ResolveNameAt6(Resolver : Integer; HostName : String; Var Addresses : Array of THostAddr6; Recurse: Integer) : Integer;
|
Function ResolveNameAt6(Resolver : Integer; HostName : String; Var Addresses : Array of THostAddr6; Recurse: Integer) : Integer;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -625,8 +590,8 @@ begin
|
|||||||
{$endif}
|
{$endif}
|
||||||
for i := 0 to LIP4Count-2 do begin
|
for i := 0 to LIP4Count-2 do begin
|
||||||
Addresses[i] := NoAddress6;
|
Addresses[i] := NoAddress6;
|
||||||
Addresses[i][5] := $FFFF;
|
Addresses[i].u6_addr16[5] := $FFFF;
|
||||||
Move(LIP4Mapped[i], Addresses[i][6], 4);
|
Move(LIP4Mapped[i], Addresses[i].u6_addr16[6], 4);
|
||||||
end;
|
end;
|
||||||
Result := LIP4Count;
|
Result := LIP4Count;
|
||||||
end else begin
|
end else begin
|
||||||
@ -689,7 +654,7 @@ Var
|
|||||||
MaxAnswer,I,QryLen,
|
MaxAnswer,I,QryLen,
|
||||||
AnsLen,AnsStart : Longint;
|
AnsLen,AnsStart : Longint;
|
||||||
RR : TRRData;
|
RR : TRRData;
|
||||||
S : String;
|
|
||||||
begin
|
begin
|
||||||
Result:=0;
|
Result:=0;
|
||||||
QryLen:=BuildPayLoad(Qry,Address,DNSQRY_PTR,1);
|
QryLen:=BuildPayLoad(Qry,Address,DNSQRY_PTR,1);
|
||||||
@ -722,12 +687,14 @@ Function ResolveAddress(HostAddr : THostAddr; Var Addresses : Array of String) :
|
|||||||
Var
|
Var
|
||||||
I : Integer;
|
I : Integer;
|
||||||
S : String;
|
S : String;
|
||||||
|
nt : tnetaddr;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
CheckResolveFile;
|
CheckResolveFile;
|
||||||
I:=1;
|
I:=1;
|
||||||
Result:=0;
|
Result:=0;
|
||||||
S:=Format('%d.%d.%d.%d.in-addr.arpa',[HostAddr[4],HostAddr[3],HostAddr[2],HostAddr[1]]);
|
nt:=hosttonet(hostaddr);
|
||||||
|
S:=Format('%d.%d.%d.%d.in-addr.arpa',[nt.s_bytes[4],nt.s_bytes[3],nt.s_bytes[2],nt.s_bytes[1]]);
|
||||||
While (Result=0) and (I<=DNSServerCount) do
|
While (Result=0) and (I<=DNSServerCount) do
|
||||||
begin
|
begin
|
||||||
Result:=ResolveAddressAt(I,S,Addresses);
|
Result:=ResolveAddressAt(I,S,Addresses);
|
||||||
@ -749,10 +716,10 @@ begin
|
|||||||
Result:=0;
|
Result:=0;
|
||||||
S := '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int';
|
S := '0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int';
|
||||||
for i := 7 downto 0 do begin
|
for i := 7 downto 0 do begin
|
||||||
S[5+(7-i)*8] := hexdig[1+(HostAddr[i] and $000F) shr 00];
|
S[5+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $000F) shr 00];
|
||||||
S[7+(7-i)*8] := hexdig[1+(HostAddr[i] and $00F0) shr 04];
|
S[7+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $00F0) shr 04];
|
||||||
S[1+(7-i)*8] := hexdig[1+(HostAddr[i] and $0F00) shr 08];
|
S[1+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $0F00) shr 08];
|
||||||
S[3+(7-i)*8] := hexdig[1+(HostAddr[i] and $F000) shr 12];
|
S[3+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $F000) shr 12];
|
||||||
end;
|
end;
|
||||||
I := 1;
|
I := 1;
|
||||||
While (Result=0) and (I<=DNSServerCount) do
|
While (Result=0) and (I<=DNSServerCount) do
|
||||||
@ -765,12 +732,12 @@ end;
|
|||||||
function IN6_IS_ADDR_V4MAPPED(HostAddr: THostAddr6): boolean;
|
function IN6_IS_ADDR_V4MAPPED(HostAddr: THostAddr6): boolean;
|
||||||
begin
|
begin
|
||||||
Result :=
|
Result :=
|
||||||
(HostAddr[0] = 0) and
|
(HostAddr.u6_addr16[0] = 0) and
|
||||||
(HostAddr[1] = 0) and
|
(HostAddr.u6_addr16[1] = 0) and
|
||||||
(HostAddr[2] = 0) and
|
(HostAddr.u6_addr16[2] = 0) and
|
||||||
(HostAddr[3] = 0) and
|
(HostAddr.u6_addr16[3] = 0) and
|
||||||
(HostAddr[4] = 0) and
|
(HostAddr.u6_addr16[4] = 0) and
|
||||||
(HostAddr[5] = $FFFF);
|
(HostAddr.u6_addr16[5] = $FFFF);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -877,7 +844,6 @@ Function GetNextHostEntry(var F : Text; Var H : THostEntry): boolean;
|
|||||||
|
|
||||||
Var
|
Var
|
||||||
Line,S : String;
|
Line,S : String;
|
||||||
P : Integer;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Result:=False;
|
Result:=False;
|
||||||
@ -887,8 +853,8 @@ begin
|
|||||||
S:=NextWord(Line);
|
S:=NextWord(Line);
|
||||||
If (S<>'') then
|
If (S<>'') then
|
||||||
begin
|
begin
|
||||||
H.Addr:=StrToHostAddr(S);
|
H.Addr:=StrTonetAddr(S); // endianness problem here. (fixed)
|
||||||
if (H.Addr[1]<>0) then
|
if (H.Addr.s_bytes[4]<>0) then
|
||||||
begin
|
begin
|
||||||
S:=NextWord(Line);
|
S:=NextWord(Line);
|
||||||
If (S<>'') then
|
If (S<>'') then
|
||||||
@ -944,6 +910,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
//const NoAddress : in_addr = (s_addr: 0);
|
||||||
|
|
||||||
Function GetHostByName(HostName: String; Var H : THostEntry) : boolean;
|
Function GetHostByName(HostName: String; Var H : THostEntry) : boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -965,7 +933,6 @@ Function GetNextNetworkEntry(var F : Text; Var N : TNetworkEntry): boolean;
|
|||||||
|
|
||||||
Var
|
Var
|
||||||
NN,Line,S : String;
|
NN,Line,S : String;
|
||||||
P : Integer;
|
|
||||||
A : TNetAddr;
|
A : TNetAddr;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -977,8 +944,8 @@ begin
|
|||||||
If (S<>'') then
|
If (S<>'') then
|
||||||
begin
|
begin
|
||||||
NN:=S;
|
NN:=S;
|
||||||
A:=StrToHostAddr(NextWord(Line));
|
A:=StrToHostAddr(NextWord(Line)); // endianness?
|
||||||
Result:=(NN<>'') and (A[1]<>0); // Valid addr.
|
Result:=(NN<>'') and (A.s_bytes[1]<>0); // Valid addr.
|
||||||
If result then
|
If result then
|
||||||
begin
|
begin
|
||||||
N.Addr:=A;
|
N.Addr:=A;
|
||||||
@ -1023,6 +990,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Const NoNet : in_addr = (s_addr:0);
|
||||||
|
|
||||||
Function GetNetworkByName(NetName: String; Var N : TNetworkEntry) : boolean;
|
Function GetNetworkByName(NetName: String; Var N : TNetworkEntry) : boolean;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
@ -1153,10 +1122,37 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.13 2005-02-14 17:13:19 peter
|
Revision 1.14 2005-03-18 10:58:16 marco
|
||||||
* truncate log
|
* lots of endian fixes
|
||||||
|
|
||||||
Revision 1.12 2005/02/07 14:12:31 marco
|
Revision 1.12 2005/02/07 14:12:31 marco
|
||||||
* fixed endianess ugliness (3636)
|
* fixed endianess ugliness (3636)
|
||||||
|
|
||||||
|
Revision 1.11 2004/02/20 21:35:00 peter
|
||||||
|
* 1.0.x fix
|
||||||
|
|
||||||
|
Revision 1.10 2004/01/24 12:23:10 michael
|
||||||
|
+ Patch from Johannes Berg
|
||||||
|
|
||||||
|
Revision 1.9 2003/12/12 20:50:18 michael
|
||||||
|
+ Fixed trimming of nameserver entries
|
||||||
|
|
||||||
|
Revision 1.8 2003/11/22 23:17:50 michael
|
||||||
|
Patch for ipv6 and CNAME record support from Johannes Berg
|
||||||
|
|
||||||
|
Revision 1.7 2003/09/29 19:21:19 marco
|
||||||
|
* ; added to line 150
|
||||||
|
|
||||||
|
Revision 1.6 2003/09/29 07:44:11 michael
|
||||||
|
+ Endian patch from bas steendijk@xs4all.nl
|
||||||
|
|
||||||
|
Revision 1.5 2003/09/28 09:34:02 peter
|
||||||
|
* unix fix for 1.0.x
|
||||||
|
|
||||||
|
Revision 1.4 2003/09/18 16:30:23 marco
|
||||||
|
* unixreform fix
|
||||||
|
|
||||||
|
Revision 1.3 2003/05/17 20:54:03 michael
|
||||||
|
+ uriparser unit added. Header/Footer blocks added
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user