X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/9951872c6c46881c8b414bcd04a18320c457b811..2e969e5e75fb8f544ff468584fb4e33d891e2954:/binipstuff.pas diff --git a/binipstuff.pas b/binipstuff.pas index e7d891c..9f84721 100644 --- a/binipstuff.pas +++ b/binipstuff.pas @@ -88,7 +88,12 @@ type {$endif} TLInetSockAddr4 = packed Record + {$ifdef bsd} + len:byte; + family:byte; + {$else} family:Word; + {$endif} port :Word; addr :uint32; pad :array [0..7] of byte; //zipplet 20170204 - originally this was 1..8 for some reason @@ -96,7 +101,12 @@ type {$ifdef ipv6} TLInetSockAddr6 = packed record + {$ifdef bsd} + sin6_len:byte; + sin6_family:byte; + {$else} sin6_family: word; + {$endif} sin6_port: word; sin6_flowinfo: uint32; sin6_addr: tin6_addr; @@ -206,6 +216,9 @@ begin fillchar(inaddr,sizeof(inaddr),0); //writeln('converted address '+addr+' to binip '+ipbintostr(biniptemp)); if addr.family = AF_INET then begin + {$ifdef bsd} + inAddr.InAddr.Len := sizeof(tlinetsockaddr4); + {$endif} inAddr.InAddr.family:=AF_INET; inAddr.InAddr.port:=htons(strtointdef(port,0)); inAddr.InAddr.addr:=addr.ip; @@ -213,6 +226,9 @@ begin end else {$ifdef ipv6} if addr.family = AF_INET6 then begin + {$ifdef bsd} + inAddr.InAddr6.sin6_len := sizeof(tlinetsockaddr6); + {$endif} inAddr.InAddr6.sin6_family:=AF_INET6; inAddr.InAddr6.sin6_port:=htons(strtointdef(port,0)); inAddr.InAddr6.sin6_addr:=addr.ip6; @@ -300,7 +316,10 @@ begin {$endif} {try v4} - binip.ip := htonl(longip(s)); + // zipplet: htonl() expects a uint32 but longip() spits out longint. + // Because longip() is deprecated, we do not fix it but typecast. + //binip.ip := htonl(longip(s)); + binip.ip := htonl(uint32(longip(s))); if (binip.ip <> 0) or (s = '0.0.0.0') then begin result := true; binip.family := AF_INET;