]> git.saurik.com Git - apple/mdnsresponder.git/blame - mDNSMacOSX/mDNSMacOSX.h
mDNSResponder-107.tar.gz
[apple/mdnsresponder.git] / mDNSMacOSX / mDNSMacOSX.h
CommitLineData
c9b9ae52
A
1/*
2 * Copyright (c) 2002-2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22
23 Change History (most recent first):
24
25$Log: mDNSMacOSX.h,v $
7cb34e5c
A
26Revision 1.50 2005/02/19 00:04:18 cheshire
27Add comments
28
283ee3ff
A
29Revision 1.49 2004/12/17 23:37:47 cheshire
30<rdar://problem/3485365> Guard against repeating wireless dissociation/re-association
31(and other repetitive configuration changes)
32
7f0064bd
A
33Revision 1.48 2004/12/07 01:31:31 cheshire
34mDNSMacOSXSystemBuildNumber() returns int, not mDNSBool
35
36Revision 1.47 2004/11/30 03:24:03 cheshire
37<rdar://problem/3854544> Defer processing network configuration changes until configuration has stabilized
38
39Revision 1.46 2004/11/03 03:45:16 cheshire
40<rdar://problem/3863627> mDNSResponder does not inform user of Computer Name collisions
41
42Revision 1.45 2004/10/28 00:53:57 cheshire
43Export mDNSMacOSXNetworkChanged() so it's callable from outside this mDNSMacOSX.c;
44Add LogOperation() call to record when we get network change events
45
46Revision 1.44 2004/10/23 01:16:01 cheshire
47<rdar://problem/3851677> uDNS operations not always reliable on multi-homed hosts
48
49Revision 1.43 2004/10/15 23:00:18 ksekar
50<rdar://problem/3799242> Need to update LLQs on location changes
51
52Revision 1.42 2004/10/04 05:56:04 cheshire
53<rdar://problem/3824730> mDNSResponder doesn't respond to certain AirPort changes
54
55Revision 1.41 2004/09/30 00:24:59 ksekar
56<rdar://problem/3695802> Dynamically update default registration domains on config change
57
58Revision 1.40 2004/09/17 01:08:52 cheshire
59Renamed mDNSClientAPI.h to mDNSEmbeddedAPI.h
60 The name "mDNSClientAPI.h" is misleading to new developers looking at this code. The interfaces
61 declared in that file are ONLY appropriate to single-address-space embedded applications.
62 For clients on general-purpose computers, the interfaces defined in dns_sd.h should be used.
63
64Revision 1.39 2004/08/18 17:35:41 ksekar
65<rdar://problem/3651443>: Feature #9586: Need support for Legacy NAT gateways
66
67Revision 1.38 2004/07/13 21:24:25 rpantos
68Fix for <rdar://problem/3701120>.
69
8e92c31c
A
70Revision 1.37 2004/06/04 08:58:30 ksekar
71<rdar://problem/3668624>: Keychain integration for secure dynamic update
72
73Revision 1.36 2004/05/26 17:06:33 cheshire
74<rdar://problem/3668515>: Don't rely on CFSocketInvalidate() to remove RunLoopSource
75
76Revision 1.35 2004/05/18 23:51:26 cheshire
77Tidy up all checkin comments to use consistent "<rdar://problem/xxxxxxx>" format for bug numbers
78
79Revision 1.34 2004/05/12 22:03:09 ksekar
80Made GetSearchDomainList a true platform-layer call (declaration moved
7f0064bd 81from mDNSMacOSX.h to mDNSEmbeddedAPI.h), impelemted to return "local"
8e92c31c
A
82only on non-OSX platforms. Changed call to return a copy of the list
83to avoid shared memory issues. Added a routine to free the list.
84
85Revision 1.33 2004/05/12 02:03:25 ksekar
86Non-local domains will only be browsed by default, and show up in
87_browse domain enumeration, if they contain an _browse._dns-sd ptr record.
88
89Revision 1.32 2004/04/21 02:20:47 cheshire
90Rename interface field 'CurrentlyActive' to more descriptive 'Exists'
91
92Revision 1.31 2004/04/09 17:40:26 cheshire
93Remove unnecessary "Multicast" field -- it duplicates the semantics of the existing TxAndRx field
94
95Revision 1.30 2004/01/28 02:30:08 ksekar
96Added default Search Domains to unicast browsing, controlled via
97Networking sharing prefs pane. Stopped sending unicast messages on
98every interface. Fixed unicast resolving via mach-port API.
99
100Revision 1.29 2004/01/27 22:57:48 cheshire
101<rdar://problem/3534352>: Need separate socket for issuing unicast queries
102
103Revision 1.28 2004/01/27 20:15:23 cheshire
104<rdar://problem/3541288>: Time to prune obsolete code for listening on port 53
105
106Revision 1.27 2004/01/24 08:46:26 bradley
107Added InterfaceID<->Index platform interfaces since they are now used by all platforms for the DNS-SD APIs.
108
109Revision 1.26 2003/12/08 21:00:46 rpantos
110Changes to support mDNSResponder on Linux.
111
112Revision 1.25 2003/11/08 22:18:29 cheshire
113<rdar://problem/3477870>: Don't need to show process ID in *every* mDNSResponder syslog message
114
115Revision 1.24 2003/11/08 22:13:00 cheshire
116Move extern declarations inside '#ifdef __cplusplus extern "C" {' section
117
118Revision 1.23 2003/09/23 16:38:25 cheshire
119When LogAllOperations is false, treat LogOperation() like debugf()
120(i.e. show in debug builds), rather than unconditionally ignoring
121
122Revision 1.22 2003/09/23 02:12:43 cheshire
123Also include port number in list of services registered via new UDS API
124
c9b9ae52
A
125Revision 1.21 2003/08/19 22:20:00 cheshire
126<rdar://problem/3376721> Don't use IPv6 on interfaces that have a routable IPv4 address configured
127More minor refinements
128
129Revision 1.20 2003/08/19 05:39:43 cheshire
130<rdar://problem/3380097> SIGINFO dump should include resolves started by DNSServiceQueryRecord
131
132Revision 1.19 2003/08/19 05:36:45 cheshire
133Add missing "extern" directives
134
135Revision 1.18 2003/08/19 03:04:43 cheshire
136<rdar://problem/3376721> Don't use IPv6 on interfaces that have a routable IPv4 address configured
137
138Revision 1.17 2003/08/12 19:56:25 cheshire
139Update to APSL 2.0
140
141Revision 1.16 2003/08/08 18:36:04 cheshire
142<rdar://problem/3344154> Only need to revalidate on interface removal on platforms that have the PhantomInterfaces bug
143
144Revision 1.15 2003/08/05 00:32:28 cheshire
145<rdar://problem/3326712> Time to turn off MACOSX_MDNS_MALLOC_DEBUGGING
146
147Revision 1.14 2003/07/20 03:38:51 ksekar
8e92c31c 148<rdar://problem/3320722> Completed support for Unix-domain socket based API.
c9b9ae52
A
149
150Revision 1.13 2003/07/18 00:30:00 cheshire
151<rdar://problem/3268878> Remove mDNSResponder version from packet header and use HINFO record instead
152
153Revision 1.12 2003/07/12 03:15:20 cheshire
154<rdar://problem/3324848> After SCDynamicStore notification, mDNSResponder updates
155m->hostlabel even if user hasn't actually actually changed their dot-local hostname
156
157Revision 1.11 2003/07/02 21:19:51 cheshire
158<rdar://problem/3313413> Update copyright notices, etc., in source code comments
159
160Revision 1.10 2003/06/25 23:42:19 ksekar
7f0064bd 161<rdar://problem/3249292>: Feature: New DNS-SD APIs (#7875)
c9b9ae52
A
162Reviewed by: Stuart Cheshire
163Added files necessary to implement Unix domain sockets based enhanced
7f0064bd 164DNS-SD APIs, and integrated with existing Mach-port based daemon.
c9b9ae52
A
165
166Revision 1.9 2003/06/10 01:14:11 cheshire
167<rdar://problem/3286004> New APIs require a mDNSPlatformInterfaceIDfromInterfaceIndex() call
168
169Revision 1.8 2003/05/14 07:08:37 cheshire
170<rdar://problem/3159272> mDNSResponder should be smarter about reconfigurations
171Previously, when there was any network configuration change, mDNSResponder
172would tear down the entire list of active interfaces and start again.
173That was very disruptive, and caused the entire cache to be flushed,
174and caused lots of extra network traffic. Now it only removes interfaces
175that have really gone, and only adds new ones that weren't there before.
176
177Revision 1.7 2003/04/26 02:39:24 cheshire
178Remove extern void LogMsg(const char *format, ...);
179
180Revision 1.6 2003/03/05 21:59:56 cheshire
8e92c31c 181<rdar://problem/3189097> Additional debugging code in mDNSResponder
c9b9ae52
A
182
183Revision 1.5 2003/03/05 01:50:38 cheshire
8e92c31c 184<rdar://problem/3189097> Additional debugging code in mDNSResponder
c9b9ae52
A
185
186Revision 1.4 2003/02/21 01:54:10 cheshire
8e92c31c 187<rdar://problem/3099194> mDNSResponder needs performance improvements
c9b9ae52
A
188Switched to using new "mDNS_Execute" model (see "Implementer Notes.txt")
189
190Revision 1.3 2002/09/21 20:44:51 zarzycki
191Added APSL info
192
193Revision 1.2 2002/09/19 04:20:44 cheshire
194Remove high-ascii characters that confuse some systems
195
196Revision 1.1 2002/09/17 01:04:09 cheshire
197Defines mDNS_PlatformSupport_struct for OS X
198
199*/
200
201#ifndef __mDNSOSX_h
202#define __mDNSOSX_h
203
204#ifdef __cplusplus
205 extern "C" {
206#endif
207
208#include <SystemConfiguration/SystemConfiguration.h>
209#include <IOKit/pwr_mgt/IOPMLib.h>
210#include <sys/socket.h>
211#include <netinet/in.h>
7f0064bd 212#include "mDNSEmbeddedAPI.h" // for domain name structure
c9b9ae52
A
213
214typedef struct NetworkInterfaceInfoOSX_struct NetworkInterfaceInfoOSX;
8e92c31c
A
215
216typedef struct
217 {
218 mDNS *m;
219 NetworkInterfaceInfoOSX *info;
220 int sktv4;
221 CFSocketRef cfsv4;
222 CFRunLoopSourceRef rlsv4;
223 int sktv6;
224 CFSocketRef cfsv6;
225 CFRunLoopSourceRef rlsv6;
226 } CFSocketSet;
227
c9b9ae52
A
228struct NetworkInterfaceInfoOSX_struct
229 {
230 NetworkInterfaceInfo ifinfo; // MUST be the first element in this structure
231 NetworkInterfaceInfoOSX *next;
8e92c31c
A
232 mDNSu32 Exists; // 1 = currently exists in getifaddrs list; 0 = doesn't
233 // 2 = exists, but McastTxRx state changed
283ee3ff 234 mDNSs32 LastSeen; // If Exists==0, last time this interface appeared in getifaddrs list
c9b9ae52
A
235 char *ifa_name; // Memory for this is allocated using malloc
236 mDNSu32 scope_id; // interface index / IPv6 scope ID
7f0064bd 237 mDNSEthAddr BSSID; // BSSID of 802.11 base station, if applicable
c9b9ae52 238 u_short sa_family;
8e92c31c
A
239 mDNSBool Multicast;
240 CFSocketSet ss;
c9b9ae52
A
241 };
242
243struct mDNS_PlatformSupport_struct
244 {
245 NetworkInterfaceInfoOSX *InterfaceList;
8e92c31c 246 CFSocketSet unicastsockets;
7cb34e5c
A
247 domainlabel userhostlabel; // The hostlabel as it was set in System Preferences the last time we looked
248 domainlabel usernicelabel; // The nicelabel as it was set in System Preferences the last time we looked
7f0064bd
A
249 mDNSs32 NotifyUser;
250 mDNSs32 NetworkChanged;
c9b9ae52
A
251 SCDynamicStoreRef Store;
252 CFRunLoopSourceRef StoreRLS;
253 io_connect_t PowerConnection;
254 io_object_t PowerNotifier;
255 CFRunLoopSourceRef PowerRLS;
256 };
257
7f0064bd
A
258extern void mDNSMacOSXNetworkChanged(mDNS *const m);
259extern int mDNSMacOSXSystemBuildNumber(char *HINFO_SWstring);
c9b9ae52
A
260
261extern const char mDNSResponderVersionString[];
262
7f0064bd
A
263// Legacy NAT Traversal Support Setup/Teardown
264extern int LegacyNATDestroy(void);
265extern int LegacyNATInit(void);
266
267// Allow platform layer to tell daemon when default registration/browse domains
268extern void DefaultRegDomainChanged(const domainname *d, mDNSBool add);
269extern void DefaultBrowseDomainChanged(const domainname *d, mDNSBool add);
270
c9b9ae52
A
271#ifdef __cplusplus
272 }
273#endif
274
c9b9ae52 275#endif