]>
Commit | Line | Data |
---|---|---|
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 |
26 | Revision 1.50 2005/02/19 00:04:18 cheshire |
27 | Add comments | |
28 | ||
283ee3ff A |
29 | Revision 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 |
33 | Revision 1.48 2004/12/07 01:31:31 cheshire |
34 | mDNSMacOSXSystemBuildNumber() returns int, not mDNSBool | |
35 | ||
36 | Revision 1.47 2004/11/30 03:24:03 cheshire | |
37 | <rdar://problem/3854544> Defer processing network configuration changes until configuration has stabilized | |
38 | ||
39 | Revision 1.46 2004/11/03 03:45:16 cheshire | |
40 | <rdar://problem/3863627> mDNSResponder does not inform user of Computer Name collisions | |
41 | ||
42 | Revision 1.45 2004/10/28 00:53:57 cheshire | |
43 | Export mDNSMacOSXNetworkChanged() so it's callable from outside this mDNSMacOSX.c; | |
44 | Add LogOperation() call to record when we get network change events | |
45 | ||
46 | Revision 1.44 2004/10/23 01:16:01 cheshire | |
47 | <rdar://problem/3851677> uDNS operations not always reliable on multi-homed hosts | |
48 | ||
49 | Revision 1.43 2004/10/15 23:00:18 ksekar | |
50 | <rdar://problem/3799242> Need to update LLQs on location changes | |
51 | ||
52 | Revision 1.42 2004/10/04 05:56:04 cheshire | |
53 | <rdar://problem/3824730> mDNSResponder doesn't respond to certain AirPort changes | |
54 | ||
55 | Revision 1.41 2004/09/30 00:24:59 ksekar | |
56 | <rdar://problem/3695802> Dynamically update default registration domains on config change | |
57 | ||
58 | Revision 1.40 2004/09/17 01:08:52 cheshire | |
59 | Renamed 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 | ||
64 | Revision 1.39 2004/08/18 17:35:41 ksekar | |
65 | <rdar://problem/3651443>: Feature #9586: Need support for Legacy NAT gateways | |
66 | ||
67 | Revision 1.38 2004/07/13 21:24:25 rpantos | |
68 | Fix for <rdar://problem/3701120>. | |
69 | ||
8e92c31c A |
70 | Revision 1.37 2004/06/04 08:58:30 ksekar |
71 | <rdar://problem/3668624>: Keychain integration for secure dynamic update | |
72 | ||
73 | Revision 1.36 2004/05/26 17:06:33 cheshire | |
74 | <rdar://problem/3668515>: Don't rely on CFSocketInvalidate() to remove RunLoopSource | |
75 | ||
76 | Revision 1.35 2004/05/18 23:51:26 cheshire | |
77 | Tidy up all checkin comments to use consistent "<rdar://problem/xxxxxxx>" format for bug numbers | |
78 | ||
79 | Revision 1.34 2004/05/12 22:03:09 ksekar | |
80 | Made GetSearchDomainList a true platform-layer call (declaration moved | |
7f0064bd | 81 | from mDNSMacOSX.h to mDNSEmbeddedAPI.h), impelemted to return "local" |
8e92c31c A |
82 | only on non-OSX platforms. Changed call to return a copy of the list |
83 | to avoid shared memory issues. Added a routine to free the list. | |
84 | ||
85 | Revision 1.33 2004/05/12 02:03:25 ksekar | |
86 | Non-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 | ||
89 | Revision 1.32 2004/04/21 02:20:47 cheshire | |
90 | Rename interface field 'CurrentlyActive' to more descriptive 'Exists' | |
91 | ||
92 | Revision 1.31 2004/04/09 17:40:26 cheshire | |
93 | Remove unnecessary "Multicast" field -- it duplicates the semantics of the existing TxAndRx field | |
94 | ||
95 | Revision 1.30 2004/01/28 02:30:08 ksekar | |
96 | Added default Search Domains to unicast browsing, controlled via | |
97 | Networking sharing prefs pane. Stopped sending unicast messages on | |
98 | every interface. Fixed unicast resolving via mach-port API. | |
99 | ||
100 | Revision 1.29 2004/01/27 22:57:48 cheshire | |
101 | <rdar://problem/3534352>: Need separate socket for issuing unicast queries | |
102 | ||
103 | Revision 1.28 2004/01/27 20:15:23 cheshire | |
104 | <rdar://problem/3541288>: Time to prune obsolete code for listening on port 53 | |
105 | ||
106 | Revision 1.27 2004/01/24 08:46:26 bradley | |
107 | Added InterfaceID<->Index platform interfaces since they are now used by all platforms for the DNS-SD APIs. | |
108 | ||
109 | Revision 1.26 2003/12/08 21:00:46 rpantos | |
110 | Changes to support mDNSResponder on Linux. | |
111 | ||
112 | Revision 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 | ||
115 | Revision 1.24 2003/11/08 22:13:00 cheshire | |
116 | Move extern declarations inside '#ifdef __cplusplus extern "C" {' section | |
117 | ||
118 | Revision 1.23 2003/09/23 16:38:25 cheshire | |
119 | When LogAllOperations is false, treat LogOperation() like debugf() | |
120 | (i.e. show in debug builds), rather than unconditionally ignoring | |
121 | ||
122 | Revision 1.22 2003/09/23 02:12:43 cheshire | |
123 | Also include port number in list of services registered via new UDS API | |
124 | ||
c9b9ae52 A |
125 | Revision 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 | |
127 | More minor refinements | |
128 | ||
129 | Revision 1.20 2003/08/19 05:39:43 cheshire | |
130 | <rdar://problem/3380097> SIGINFO dump should include resolves started by DNSServiceQueryRecord | |
131 | ||
132 | Revision 1.19 2003/08/19 05:36:45 cheshire | |
133 | Add missing "extern" directives | |
134 | ||
135 | Revision 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 | ||
138 | Revision 1.17 2003/08/12 19:56:25 cheshire | |
139 | Update to APSL 2.0 | |
140 | ||
141 | Revision 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 | ||
144 | Revision 1.15 2003/08/05 00:32:28 cheshire | |
145 | <rdar://problem/3326712> Time to turn off MACOSX_MDNS_MALLOC_DEBUGGING | |
146 | ||
147 | Revision 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 | |
150 | Revision 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 | ||
153 | Revision 1.12 2003/07/12 03:15:20 cheshire | |
154 | <rdar://problem/3324848> After SCDynamicStore notification, mDNSResponder updates | |
155 | m->hostlabel even if user hasn't actually actually changed their dot-local hostname | |
156 | ||
157 | Revision 1.11 2003/07/02 21:19:51 cheshire | |
158 | <rdar://problem/3313413> Update copyright notices, etc., in source code comments | |
159 | ||
160 | Revision 1.10 2003/06/25 23:42:19 ksekar | |
7f0064bd | 161 | <rdar://problem/3249292>: Feature: New DNS-SD APIs (#7875) |
c9b9ae52 A |
162 | Reviewed by: Stuart Cheshire |
163 | Added files necessary to implement Unix domain sockets based enhanced | |
7f0064bd | 164 | DNS-SD APIs, and integrated with existing Mach-port based daemon. |
c9b9ae52 A |
165 | |
166 | Revision 1.9 2003/06/10 01:14:11 cheshire | |
167 | <rdar://problem/3286004> New APIs require a mDNSPlatformInterfaceIDfromInterfaceIndex() call | |
168 | ||
169 | Revision 1.8 2003/05/14 07:08:37 cheshire | |
170 | <rdar://problem/3159272> mDNSResponder should be smarter about reconfigurations | |
171 | Previously, when there was any network configuration change, mDNSResponder | |
172 | would tear down the entire list of active interfaces and start again. | |
173 | That was very disruptive, and caused the entire cache to be flushed, | |
174 | and caused lots of extra network traffic. Now it only removes interfaces | |
175 | that have really gone, and only adds new ones that weren't there before. | |
176 | ||
177 | Revision 1.7 2003/04/26 02:39:24 cheshire | |
178 | Remove extern void LogMsg(const char *format, ...); | |
179 | ||
180 | Revision 1.6 2003/03/05 21:59:56 cheshire | |
8e92c31c | 181 | <rdar://problem/3189097> Additional debugging code in mDNSResponder |
c9b9ae52 A |
182 | |
183 | Revision 1.5 2003/03/05 01:50:38 cheshire | |
8e92c31c | 184 | <rdar://problem/3189097> Additional debugging code in mDNSResponder |
c9b9ae52 A |
185 | |
186 | Revision 1.4 2003/02/21 01:54:10 cheshire | |
8e92c31c | 187 | <rdar://problem/3099194> mDNSResponder needs performance improvements |
c9b9ae52 A |
188 | Switched to using new "mDNS_Execute" model (see "Implementer Notes.txt") |
189 | ||
190 | Revision 1.3 2002/09/21 20:44:51 zarzycki | |
191 | Added APSL info | |
192 | ||
193 | Revision 1.2 2002/09/19 04:20:44 cheshire | |
194 | Remove high-ascii characters that confuse some systems | |
195 | ||
196 | Revision 1.1 2002/09/17 01:04:09 cheshire | |
197 | Defines 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 | |
214 | typedef struct NetworkInterfaceInfoOSX_struct NetworkInterfaceInfoOSX; | |
8e92c31c A |
215 | |
216 | typedef 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 |
228 | struct 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 | ||
243 | struct 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 |
258 | extern void mDNSMacOSXNetworkChanged(mDNS *const m); |
259 | extern int mDNSMacOSXSystemBuildNumber(char *HINFO_SWstring); | |
c9b9ae52 A |
260 | |
261 | extern const char mDNSResponderVersionString[]; | |
262 | ||
7f0064bd A |
263 | // Legacy NAT Traversal Support Setup/Teardown |
264 | extern int LegacyNATDestroy(void); | |
265 | extern int LegacyNATInit(void); | |
266 | ||
267 | // Allow platform layer to tell daemon when default registration/browse domains | |
268 | extern void DefaultRegDomainChanged(const domainname *d, mDNSBool add); | |
269 | extern void DefaultBrowseDomainChanged(const domainname *d, mDNSBool add); | |
270 | ||
c9b9ae52 A |
271 | #ifdef __cplusplus |
272 | } | |
273 | #endif | |
274 | ||
c9b9ae52 | 275 | #endif |