reactos/sdk/lib/dnslib/inc/dnslib.h

341 lines
5.4 KiB
C

/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS Ancillary Function Driver DLL
* FILE: include/mswsock.h
* PURPOSE: Ancillary Function Driver DLL header
*/
#pragma once
/* 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
);