blob: 6b5b43566484cdc04ff5182f4fc723569c9e911c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
/* -*- Mode: C; tab-width: 4 -*-
*
* Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#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; // MUST BE FIRST FIELD -- mDNSCore expects every TCPSocket_struct to begin with TCPSocketFlags flags
SOCKET fd;
BOOL connected;
TCPUserCallback userCallback;
void * userContext;
BOOL closed;
mDNS * m;
};
struct UDPSocket_struct
{
mDNSIPPort port; // MUST BE FIRST FIELD -- mDNSCoreReceive expects every UDPSocket_struct to begin with mDNSIPPort port
mDNSAddr addr; // This is initialized by our code. If we don't get the
// dstAddr from WSARecvMsg we use this value instead.
SOCKET fd;
LPFN_WSARECVMSG recvMsgPtr;
DNSMessage packet;
struct mDNSInterfaceData *ifd;
UDPSocket *next;
mDNS *m;
};
//---------------------------------------------------------------------------------------------------------------------------
/*! @struct mDNSInterfaceData
@abstract Structure containing interface-specific data.
*/
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 ReportStatusFunc
*/
typedef void (*ReportStatusFunc)(int inType, const char *inFormat, ...);
//---------------------------------------------------------------------------------------------------------------------------
/*! @struct mDNS_PlatformSupport_struct
@abstract Structure containing platform-specific data.
*/
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
@abstract Interface information
*/
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__
|