Bläddra i källkod

sockets: implement NetAddrIsPrivate6 vor IPv6 addresses

Ondrej Pokorny 4 månader sedan
förälder
incheckning
5b651bafd9
2 ändrade filer med 18 tillägg och 0 borttagningar
  1. 17 0
      packages/rtl-extra/src/inc/sockets.inc
  2. 1 0
      packages/rtl-extra/src/inc/socketsh.inc

+ 17 - 0
packages/rtl-extra/src/inc/sockets.inc

@@ -768,3 +768,20 @@ begin
      // 192.168.0.0 – 192.168.255.255
      or ((IP.s_bytes[1]=192) and (IP.s_bytes[2]=168));
 end;
+
+function NetAddrIsPrivate6(const IP: in6_addr): Boolean;
+var
+  W0: Word;
+begin
+  W0 := NToHs(IP.u6_addr16[0]);
+  NetAddrIsPrivate6:=
+     // The original IPv6 Site Local addresses (fec0::/10 - range fec0..feff) - deprecated
+     ((W0>=$FEC0) and (W0<=$FEFF))
+     // Unique Local Addresses (ULA) are used in place of Site Local. fc00..fdff
+     or ((W0>=$FC00) and (W0<=$FDFF))
+     // Link local addresses (prefixed with fe80) are not routable
+     or (W0=$FE80)
+     // Discard prefix 0100
+     or (W0=$0100);
+end;
+

+ 1 - 0
packages/rtl-extra/src/inc/socketsh.inc

@@ -205,6 +205,7 @@ Function ShortHostToNet(Host : Word) : Word; deprecated;
 Function ShortNetToHost(Net  : Word) : Word; deprecated;
 
 function NetAddrIsPrivate(const IP: in_addr): Boolean;
+function NetAddrIsPrivate6(const IP: in6_addr): Boolean;
 
 
 // ipv6