#ifndef __MDNS_WIN32__
#define __MDNS_WIN32__
#include "CommonServices.h"
#if( !defined( _WIN32_WCE ) )
#include <mswsock.h>
#endif
#include "mDNSEmbeddedAPI.h"
#include "uDNS.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void ( *TCPUserCallback )();
struct TCPSocket_struct
{
TCPSocketFlags flags; SOCKET fd;
BOOL connected;
TCPUserCallback userCallback;
void * userContext;
BOOL closed;
mDNS * m;
};
struct UDPSocket_struct
{
mDNSIPPort port; mDNSAddr addr; SOCKET fd;
LPFN_WSARECVMSG recvMsgPtr;
DNSMessage packet;
struct mDNSInterfaceData *ifd;
UDPSocket *next;
mDNS *m;
};
typedef struct mDNSInterfaceData mDNSInterfaceData;
struct mDNSInterfaceData
{
char name[ 128 ];
uint32_t index;
uint32_t scopeID;
struct UDPSocket_struct sock;
NetworkInterfaceInfo interfaceInfo;
mDNSBool hostRegistered;
mDNSInterfaceData * next;
};
typedef void (*ReportStatusFunc)(int inType, const char *inFormat, ...);
struct mDNS_PlatformSupport_struct
{
HANDLE mainThread;
HANDLE checkFileSharesTimer;
mDNSs32 checkFileSharesTimeout;
ReportStatusFunc reportStatusFunc;
time_t nextDHCPLeaseExpires;
char nbname[ 32 ];
char nbdomain[ 32 ];
mDNSBool smbFileSharing;
mDNSBool smbPrintSharing;
ServiceRecordSet smbSRS;
AuthRecord smbSubTypes[ 2 ];
mDNSBool registeredLoopback4;
int interfaceCount;
mDNSInterfaceData * interfaceList;
mDNSInterfaceData * inactiveInterfaceList;
struct UDPSocket_struct unicastSock4;
struct UDPSocket_struct unicastSock6;
DWORD osMajorVersion;
DWORD osMinorVersion;
};
struct ifaddrs
{
struct ifaddrs * ifa_next;
char * ifa_name;
u_int ifa_flags;
struct sockaddr * ifa_addr;
struct sockaddr * ifa_netmask;
struct sockaddr * ifa_broadaddr;
struct sockaddr * ifa_dstaddr;
BYTE ifa_physaddr[6];
BOOL ifa_dhcpEnabled;
time_t ifa_dhcpLeaseExpires;
mDNSu8 ifa_womp;
void * ifa_data;
struct
{
uint32_t index;
} ifa_extra;
};
extern void InterfaceListDidChange( mDNS * const inMDNS );
extern void ComputerDescriptionDidChange( mDNS * const inMDNS );
extern void TCPIPConfigDidChange( mDNS * const inMDNS );
extern void DynDNSConfigDidChange( mDNS * const inMDNS );
extern void FileSharingDidChange( mDNS * const inMDNS );
extern void FirewallDidChange( mDNS * const inMDNS );
extern mStatus TCPAddSocket( mDNS * const inMDNS, TCPSocket *sock );
extern mStatus SetupInterfaceList( mDNS * const inMDNS );
extern mStatus TearDownInterfaceList( mDNS * const inMDNS );
extern BOOL IsWOMPEnabled();
extern void DispatchSocketEvents( mDNS * const inMDNS );
#ifdef __cplusplus
}
#endif
#endif // __MDNS_WIN32__