function makeinaddrv(addr:tbinip;port:ansistring;var inaddr:tinetsockaddrv):integer;\r
function inaddrsize(inaddr:tinetsockaddrv):integer;\r
\r
function makeinaddrv(addr:tbinip;port:ansistring;var inaddr:tinetsockaddrv):integer;\r
function inaddrsize(inaddr:tinetsockaddrv):integer;\r
\r
+function getbinipbitlength(const ip:tbinip):integer;\r
+function getipstrbitlength(const ip:thostname):integer;\r
+function getfamilybitlength(family:integer):integer;\r
+\r
implementation\r
\r
uses sysutils;\r
implementation\r
\r
uses sysutils;\r
{$ifdef ipv6}\r
if ip.family = AF_INET then begin\r
ip.family := AF_INET6;\r
{$ifdef ipv6}\r
if ip.family = AF_INET then begin\r
ip.family := AF_INET6;\r
- ip.ip6.s6_addr32[3] := ip.ip; \r
- ip.ip6.u6_addr32[0] := 0; \r
+ ip.ip6.s6_addr32[3] := ip.ip;\r
+ ip.ip6.u6_addr32[0] := 0;\r
ip.ip6.u6_addr32[1] := 0;\r
ip.ip6.u6_addr16[4] := 0;\r
ip.ip6.u6_addr16[5] := $ffff;\r
ip.ip6.u6_addr32[1] := 0;\r
ip.ip6.u6_addr16[4] := 0;\r
ip.ip6.u6_addr16[5] := $ffff;\r
+function getfamilybitlength(family:integer):integer;\r
+begin\r
+ {$ifdef ipv6}\r
+ if family = AF_INET6 then result := 128 else\r
+ {$endif}\r
+ if family = AF_INET then result := 32\r
+ else result := 0;\r
+end;\r
+\r
+function getbinipbitlength(const ip:tbinip):integer;\r
+begin\r
+ result := getfamilybitlength(ip.family);\r
+end;\r
+\r
+function getipstrbitlength(const ip:thostname):integer;\r
+var\r
+ biniptemp:tbinip;\r
+begin\r
+ ipstrtobin(ip,biniptemp);\r
+ result := getbinipbitlength(biniptemp);\r
+end;\r