--- /dev/null
+/*
+ * COPYRIGHT: See COPYING in the top level directory
+ * PROJECT: ReactOS Ancillary Function Driver DLL
+ * FILE: include/mswsock.h
+ * PURPOSE: Ancillary Function Driver DLL header
+ */
+#ifndef __DNSLIB_H
+#define __DNSLIB_H
+
+/* INCLUDES ******************************************************************/
+#include <ws2atm.h>
+
+/* ENUMERATIONS **************************************************************/
+
+typedef enum _DNS_STRING_TYPE
+{
+ UnicodeString = 1,
+ Utf8String,
+ AnsiString,
+} DNS_STRING_TYPE;
+
+#define IpV4Address 3
+
+/* TYPES *********************************************************************/
+
+typedef struct _DNS_IPV6_ADDRESS
+{
+ ULONG Unknown;
+ ULONG Unknown2;
+ IP6_ADDRESS Address;
+ ULONG Unknown3;
+ ULONG Unknown4;
+ DWORD Reserved;
+ ULONG Unknown5;
+} DNS_IPV6_ADDRESS, *PDNS_IPV6_ADDRESS;
+
+typedef struct _DNS_ADDRESS
+{
+ union
+ {
+ struct
+ {
+ WORD AddressFamily;
+ WORD Port;
+ ATM_ADDRESS AtmAddress;
+ };
+ SOCKADDR_IN Ip4Address;
+ SOCKADDR_IN6 Ip6Address;
+ };
+ ULONG AddressLength;
+ DWORD Sub;
+ ULONG Flag;
+} DNS_ADDRESS, *PDNS_ADDRESS;
+
+typedef struct _DNS_ARRAY
+{
+ ULONG AllocatedAddresses;
+ ULONG UsedAddresses;
+ ULONG Unknown[0x6];
+ DNS_ADDRESS Addresses[1];
+} DNS_ARRAY, *PDNS_ARRAY;
+
+typedef struct _DNS_BLOB
+{
+ LPWSTR Name;
+ PDNS_ARRAY DnsAddrArray;
+ PHOSTENT Hostent;
+ ULONG AliasCount;
+ ULONG Unknown;
+ LPWSTR Aliases[8];
+} DNS_BLOB, *PDNS_BLOB;
+
+typedef struct _DNS_FAMILY_INFO
+{
+ WORD AddrType;
+ WORD DnsType;
+ DWORD AddressSize;
+ DWORD SockaddrSize;
+ DWORD AddressOffset;
+} DNS_FAMILY_INFO, *PDNS_FAMILY_INFO;
+
+typedef struct _FLATBUFF
+{
+ PVOID Buffer;
+ PVOID BufferEnd;
+ ULONG_PTR BufferPos;
+ SIZE_T BufferSize;
+ SIZE_T BufferFreeSize;
+} FLATBUFF, *PFLATBUFF;
+
+/*
+ * memory.c
+ */
+VOID
+WINAPI
+Dns_Free(IN PVOID Address);
+
+PVOID
+WINAPI
+Dns_AllocZero(IN SIZE_T Size);
+
+/*
+ * addr.c
+ */
+PDNS_FAMILY_INFO
+WINAPI
+FamilyInfo_GetForFamily(IN WORD AddressFamily);
+
+/*
+ * dnsaddr.c
+ */
+VOID
+WINAPI
+DnsAddr_BuildFromIp4(
+ IN PDNS_ADDRESS DnsAddress,
+ IN IN_ADDR Address,
+ IN WORD Unknown
+);
+
+VOID
+WINAPI
+DnsAddr_BuildFromIp6(
+ IN PDNS_ADDRESS DnsAddress,
+ IN PIN6_ADDR Address,
+ IN ULONG ScopeId,
+ IN WORD Port
+);
+
+PDNS_ARRAY
+WINAPI
+DnsAddrArray_Create(ULONG Count);
+
+BOOL
+WINAPI
+DnsAddrArray_AddAddr(
+ IN PDNS_ARRAY DnsAddrArray,
+ IN PDNS_ADDRESS DnsAddress,
+ IN WORD AddressFamily OPTIONAL,
+ IN DWORD AddressType OPTIONAL
+);
+
+VOID
+WINAPI
+DnsAddrArray_Free(IN PDNS_ARRAY DnsAddrArray);
+
+BOOL
+WINAPI
+DnsAddrArray_AddIp4(
+ IN PDNS_ARRAY DnsAddrArray,
+ IN IN_ADDR Address,
+ IN DWORD AddressType
+);
+
+BOOL
+WINAPI
+DnsAddrArray_ContainsAddr(
+ IN PDNS_ARRAY DnsAddrArray,
+ IN PDNS_ADDRESS DnsAddress,
+ IN DWORD AddressType
+);
+
+BOOLEAN
+WINAPI
+DnsAddr_BuildFromDnsRecord(
+ IN PDNS_RECORD DnsRecord,
+ OUT PDNS_ADDRESS DnsAddr
+);
+
+/*
+ * hostent.c
+ */
+PHOSTENT
+WINAPI
+Hostent_Init(
+ IN PVOID *Buffer,
+ IN WORD AddressFamily,
+ IN ULONG AddressSize,
+ IN ULONG AddressCount,
+ IN ULONG AliasCount
+);
+
+VOID
+WINAPI
+Hostent_ConvertToOffsets(IN PHOSTENT Hostent);
+
+/*
+ * flatbuf.c
+ */
+VOID
+WINAPI
+FlatBuf_Init(
+ IN PFLATBUFF FlatBuffer,
+ IN PVOID Buffer,
+ IN SIZE_T Size
+);
+
+PVOID
+WINAPI
+FlatBuf_Arg_CopyMemory(
+ IN OUT PULONG_PTR Position,
+ IN OUT PSIZE_T FreeSize,
+ IN PVOID Buffer,
+ IN SIZE_T Size,
+ IN ULONG Align
+);
+
+PVOID
+WINAPI
+FlatBuf_Arg_Reserve(
+ IN OUT PULONG_PTR Position,
+ IN OUT PSIZE_T FreeSize,
+ IN SIZE_T Size,
+ IN ULONG Align
+);
+
+PVOID
+WINAPI
+FlatBuf_Arg_WriteString(
+ IN OUT PULONG_PTR Position,
+ IN OUT PSIZE_T FreeSize,
+ IN PVOID String,
+ IN BOOLEAN IsUnicode
+);
+
+/*
+ * sablob.c
+ */
+PDNS_BLOB
+WINAPI
+SaBlob_Create(
+ IN ULONG Count
+);
+
+PDNS_BLOB
+WINAPI
+SaBlob_CreateFromIp4(
+ IN LPWSTR Name,
+ IN ULONG Count,
+ IN PIN_ADDR AddressArray
+);
+
+VOID
+WINAPI
+SaBlob_Free(IN PDNS_BLOB Blob);
+
+PHOSTENT
+WINAPI
+SaBlob_CreateHostent(
+ IN OUT PULONG_PTR BufferPosition,
+ IN OUT PSIZE_T RemainingBufferSpace,
+ IN OUT PSIZE_T HostEntrySize,
+ IN PDNS_BLOB Blob,
+ IN DWORD StringType,
+ IN BOOLEAN Relative,
+ IN BOOLEAN BufferAllocated
+);
+
+INT
+WINAPI
+SaBlob_WriteNameOrAlias(
+ IN PDNS_BLOB Blob,
+ IN LPWSTR String,
+ IN BOOLEAN IsAlias
+);
+
+PDNS_BLOB
+WINAPI
+SaBlob_Query(
+ IN LPWSTR Name,
+ IN WORD DnsType,
+ IN ULONG Flags,
+ IN PVOID *Reserved,
+ IN DWORD AddressFamily
+);
+
+/*
+ * string.c
+ */
+ULONG
+WINAPI
+Dns_StringCopy(
+ OUT PVOID Destination,
+ IN OUT PULONG DestinationSize,
+ IN PVOID String,
+ IN ULONG StringSize OPTIONAL,
+ IN DWORD InputType,
+ IN DWORD OutputType
+);
+
+LPWSTR
+WINAPI
+Dns_CreateStringCopy_W(IN LPWSTR Name);
+
+ULONG
+WINAPI
+Dns_GetBufferLengthForStringCopy(
+ IN PVOID String,
+ IN ULONG Size OPTIONAL,
+ IN DWORD InputType,
+ IN DWORD OutputType
+);
+
+/*
+ * straddr.c
+ */
+BOOLEAN
+WINAPI
+Dns_StringToAddressW(
+ OUT PVOID Address,
+ IN OUT PULONG AddressSize,
+ IN LPWSTR AddressName,
+ IN OUT PDWORD AddressFamily
+);
+
+LPWSTR
+WINAPI
+Dns_Ip4AddressToReverseName_W(
+ OUT LPWSTR Name,
+ IN IN_ADDR Address
+);
+
+LPWSTR
+WINAPI
+Dns_Ip6AddressToReverseName_W(
+ OUT LPWSTR Name,
+ IN IN6_ADDR Address
+);
+
+BOOLEAN
+WINAPI
+Dns_ReverseNameToDnsAddr_W(
+ OUT PDNS_ADDRESS DnsAddr,
+ IN LPWSTR Name
+);
+
+BOOLEAN
+WINAPI
+Dns_Ip4ReverseNameToAddress_W(
+ OUT PIN_ADDR Address,
+ IN LPWSTR Name
+);
+
+#endif