Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

391 lines
8.8 KiB

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
resolver.h
Abstract:
Definitions etc. for Berkeley resolver
Author:
Richard L Firth (rfirth) 15-Jun-1996
Revision History:
15-Jun-1996 rfirth
Created
--*/
//
// includes
//
#include <nameser.h>
#include <resolv.h>
//
// manifests
//
#if PACKETSZ > 1024
#define MAXPACKET PACKETSZ
#else
#define MAXPACKET 1024
#endif
#define DBG_RESOLVER DBG_SOCKETS
#define DBG_VXD_IO DBG_SOCKETS
#define DLL_PRINT(x) DEBUG_PRINT(SOCKETS, INFO, x)
#define WS_PRINT(x) DEBUG_PRINT(SOCKETS, INFO, x)
#define WS_ASSERT INET_ASSERT
#define DLL_ASSERT INET_ASSERT
//
// macros
//
#ifndef unix
#define bcopy(s, d, c) memcpy((u_char *)(d), (u_char *)(s), (c))
#define bzero(d, l) memset((d), '\0', (l))
#endif /* unix */
#define bcmp(s1, s2, l) memcmp((s1), (s2), (l))
#define IS_DGRAM_SOCK(type) (((type) == SOCK_DGRAM) || ((type) == SOCK_RAW))
//
// types
//
typedef union {
HEADER hdr;
unsigned char buf[MAXPACKET];
} querybuf;
typedef union {
long al;
char ac;
} align;
//extern char VTCPPARM[];
//extern char NTCPPARM[];
//extern char TCPPARM[];
//extern char TTCPPARM[];
#ifndef unix
typedef long daddr_t;
typedef char FAR * caddr_t;
struct iovec {
caddr_t iov_base;
int iov_len;
};
struct uio {
struct iovec *uio_iov;
int uio_iovcnt;
int uio_offset;
int uio_segflg;
int uio_resid;
};
enum uio_rw { UIO_READ, UIO_WRITE };
#endif /* unix */
/*
* Segment flag values (should be enum).
*/
#define UIO_USERSPACE 0 /* from user data space */
#define UIO_SYSSPACE 1 /* from system space */
#define UIO_USERISPACE 2 /* from user I space */
#define MAXALIASES 35
#define MAXADDRS 35
#define HOSTDB_SIZE (_MAX_PATH + 7) // 7 == strlen("\\hosts") + 1
#define PROTODB_SIZE (_MAX_PATH + 10)
#define SERVDB_SIZE (_MAX_PATH + 10)
typedef struct _WINSOCK_TLS_DATA {
char * GETHOST_h_addr_ptrs[MAXADDRS + 1];
struct hostent GETHOST_host;
char * GETHOST_host_aliases[MAXALIASES];
char GETHOST_hostbuf[BUFSIZ + 1];
//struct in_addr GETHOST_host_addr;
//char GETHOST_HOSTDB[HOSTDB_SIZE];
//FILE *GETHOST_hostf;
//char GETHOST_hostaddr[MAXADDRS];
//char *GETHOST_host_addrs[2];
//int GETHOST_stayopen;
//char GETPROTO_PROTODB[PROTODB_SIZE];
//FILE *GETPROTO_protof;
//char GETPROTO_line[BUFSIZ+1];
//struct protoent GETPROTO_proto;
//char *GETPROTO_proto_aliases[MAXALIASES];
//int GETPROTO_stayopen;
//char GETSERV_SERVDB[SERVDB_SIZE];
//FILE *GETSERV_servf;
//char GETSERV_line[BUFSIZ+1];
//struct servent GETSERV_serv;
//char *GETSERV_serv_aliases[MAXALIASES];
//int GETSERV_stayopen;
struct state R_INIT__res;
//char INTOA_Buffer[18];
//CSOCKET * DnrSocketHandle;
//BOOLEAN IsBlocking;
BOOLEAN IoCancelled;
//BOOLEAN ProcessingGetXByY;
BOOLEAN GetXByYCancelled;
//BOOLEAN EnableWinsNameResolution;
//BOOLEAN DisableWinsNameResolution;
//SOCKET SocketHandle;
//PBLOCKING_HOOK BlockingHook;
//HANDLE EventHandle;
//ULONG CreateOptions;
INT DnrErrorCode;
//#if DBG
// ULONG IndentLevel;
//#endif
} WINSOCK_TLS_DATA, * LPWINSOCK_TLS_DATA;
//extern DWORD SockTlsSlot;
//#define ACCESS_THREAD_DATA(a, file) \
// (((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))-> \
// ## file ## _ ## a )
#define ACCESS_THREAD_DATA(a, file) (lpResolverInfo->file ## _ ## a)
#define _h_addr_ptrs ACCESS_THREAD_DATA(h_addr_ptrs, GETHOST)
#define _host ACCESS_THREAD_DATA(host, GETHOST)
#define _host_aliases ACCESS_THREAD_DATA(host_aliases, GETHOST)
#define _hostbuf ACCESS_THREAD_DATA(hostbuf, GETHOST)
#define _host_addr ACCESS_THREAD_DATA(host_addr, GETHOST)
//#define HOSTDB ACCESS_THREAD_DATA(HOSTDB, GETHOST)
//#define hostf ACCESS_THREAD_DATA(hostf, GETHOST)
//#define hostaddr ACCESS_THREAD_DATA(hostaddr, GETHOST)
//#define host_addrs ACCESS_THREAD_DATA(host_addrs, GETHOST)
//#define stayopen ACCESS_THREAD_DATA(stayopen, GETHOST)
#define _res ACCESS_THREAD_DATA( _res, R_INIT )
//#define SockThreadProcessingGetXByY lpResolverInfo->ProcessingGetXByY
#define SockThreadGetXByYCancelled lpResolverInfo->GetXByYCancelled
#define SockDnrSocket lpResolverInfo->DnrSocketHandle
#define SockThreadDnrErrorCode lpResolverInfo->DnrErrorCode
//#define SockThreadIsBlocking \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->IsBlocking )
//
//#define SockThreadIoCancelled \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->IoCancelled )
//
//#define SockThreadProcessingGetXByY \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->ProcessingGetXByY )
//
//#define SockThreadGetXByYCancelled \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->GetXByYCancelled )
//
//#define SockThreadSocketHandle \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->SocketHandle )
//
//#define SockThreadBlockingHook \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->BlockingHook )
//
//#define SockThreadEvent \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->EventHandle )
//
//#define SockDnrSocket \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->DnrSocketHandle )
//
//#define SockEnableWinsNameResolution \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->EnableWinsNameResolution )
//
//#define SockDisableWinsNameResolution \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->DisableWinsNameResolution )
//
//#define SockCreateOptions \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->CreateOptions )
//
//#define SockThreadDnrErrorCode \
// ( ((LPWINSOCK_TLS_DATA)TlsGetValue( SockTlsSlot ))->DnrErrorCode )
#define LPSOCK_THREAD LPWINSOCK_TLS_DATA
#define GET_THREAD_DATA(p) p = InternetGetResolverInfo()
//#define I_SetLastError SetLastError
#define DllAllocMem(n) ALLOCATE_MEMORY(LMEM_FIXED, n)
#define DllFreeMem FREE_MEMORY
//
// well-known DHCP VxD ID (from netvxd.h)
//
#define VDHCP_Device_ID 0x049A
//
// prototypes
//
int
dn_expand(
IN unsigned char *msg,
IN unsigned char *eomorig,
IN unsigned char *comp_dn,
OUT unsigned char *exp_dn,
IN int length
);
static
int
dn_find(
unsigned char *exp_dn,
unsigned char *msg,
unsigned char **dnptrs,
unsigned char **lastdnptr
);
int
dn_skipname(
unsigned char *comp_dn,
unsigned char *eom
);
void
fp_query(
char *msg,
FILE *file
);
//int
//gethostname(
// OUT char *name,
// IN int namelen
// );
void
p_query(
char *msg
);
extern
void
putshort(
u_short s,
u_char *msgp
);
void
putlong(
u_long l,
u_char *msgp
);
void
_res_close(
void
);
//DWORD
//sendv(
// CSOCKET * s, /* socket descriptor */
// struct iovec *iov, /* array of vectors */
// int iovcnt /* size of array */
// );
//int
//strcasecmp(
// char *s1,
// char *s2
// );
//
//int
//strncasecmp(
// char *s1,
// char *s2,
// int n
// );
//
//struct hostent *
//myhostent (
// void
// );
//
//struct hostent *
//localhostent (
// void
// );
//
//struct hostent *
//dnshostent (
// void
// );
//
//BOOL
//querydnsaddrs (
// IN LPDWORD *Array,
// IN PVOID Buffer
// );
//
//DWORD
//BytesInHostent (
// PHOSTENT Hostent
// );
//
//DWORD
//CopyHostentToBuffer (
// char FAR *Buffer,
// int BufferLength,
// PHOSTENT Hostent
// );
//
//struct hostent *
//_gethtbyname (
// IN char *name
// );
BOOL
OkToUseInternetAsyncGetHostByName(
VOID
);
LPHOSTENT
InternetAsyncGetHostByName(
IN LPSTR lpszHostName,
OUT LPDWORD lpdwTtl
);
LPWINSOCK_TLS_DATA
InternetGetResolverInfo(
VOID
);
LPHOSTENT
getanswer(
OUT querybuf *answer,
OUT int *ttl,
IN int anslen,
IN int iquery
);
//ULONG
//SockNbtResolveName (
// IN PCHAR Name
// );
//PHOSTENT
//QueryHostentCache (
// IN LPSTR Name OPTIONAL,
// IN DWORD IpAddress OPTIONAL
// );
//FILE *
//SockOpenNetworkDataBase(
// IN char *Database,
// OUT char *Pathname,
// IN int PathnameLen,
// IN char *OpenFlags
// );
//