Browse Source

+ add SOCKADDR_STORAGE type

git-svn-id: trunk@37365 -
svenbarth 7 years ago
parent
commit
68f94d2d2d
1 changed files with 28 additions and 0 deletions
  1. 28 0
      packages/rtl-extra/src/win/winsock2.pp

+ 28 - 0
packages/rtl-extra/src/win/winsock2.pp

@@ -387,6 +387,7 @@ const
   PF_MAX          = AF_MAX;
   PF_MAX          = AF_MAX;
 
 
 type
 type
+  ADDRESS_FAMILY = USHORT;
 
 
   SunB = record
   SunB = record
     s_b1, s_b2, s_b3, s_b4: u_char;
     s_b1, s_b2, s_b3, s_b4: u_char;
@@ -976,8 +977,35 @@ Const
 
 
 { SockAddr Information }
 { SockAddr Information }
 
 
+const
+        _SS_MAXSIZE = 128;
+        _SS_ALIGNSIZE = SizeOf(Int64);
+
+        _SS_PAD1SIZE_XP = _SS_ALIGNSIZE - SizeOf(SmallInt);
+        _SS_PAD2SIZE_XP = _SS_MAXSIZE - (SizeOf(SmallInt) + _SS_PAD1SIZE_XP + _SS_ALIGNSIZE);
+
+        _SS_PAD1SIZE_LH = _SS_ALIGNSIZE - SizeOf(USHORT);
+        _SS_PAD2SIZE_LH = _SS_MAXSIZE - (SizeOf(USHORT) + _SS_PAD1SIZE_LH + _SS_ALIGNSIZE);
 
 
 Type
 Type
+        SOCKADDR_STORAGE_XP = record
+          ss_family: SmallInt;
+          __ss_pad1: array[0.._SS_PAD1SIZE_XP - 1] of Byte;
+          __ss_align: Int64;
+          __ss_pad2: array[0.._SS_PAD2SIZE_XP - 1] of Byte;
+        end;
+
+        SOCKADDR_STORAGE_LH = record
+          ss_family: ADDRESS_FAMILY;
+          __ss_pad1: array[0.._SS_PAD1SIZE_LH - 1] of Byte;
+          __ss_align: Int64;
+          __ss_pad2: array[0.._SS_PAD2SIZE_LH - 1] of Byte;
+        end;
+
+        SOCKADDR_STORAGE = SOCKADDR_STORAGE_LH;
+        PSOCKADDR_STORAGE = ^SOCKADDR_STORAGE_LH;
+        LPSOCKADDR_STORAGE = ^SOCKADDR_STORAGE_LH;
+
         SOCKET_ADDRESS = record
         SOCKET_ADDRESS = record
                 lpSockaddr : PSockAddr;
                 lpSockaddr : PSockAddr;
                 iSockaddrLength : Longint;
                 iSockaddrLength : Longint;