xref: /titanic_52/usr/src/cmd/cmd-inet/usr.lib/mdnsd/uds_daemon.h (revision 940d71d237794874e18a0eb72f6564821a823517)
1 /* -*- Mode: C; tab-width: 4 -*-
2  *
3  * Copyright (c) 2002-2003 Apple Computer, Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16 
17  	File:		uds_daemon.h
18 
19  	Contains:	Interfaces necessary to talk to uds_daemon.c.
20 
21  	Version:	1.0
22 
23     Change History (most recent first):
24 
25 $Log: uds_daemon.h,v $
26 Revision 1.15  2006/08/14 23:24:57  cheshire
27 Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0
28 
29 Revision 1.14  2005/01/27 17:48:39  cheshire
30 Added comment about CFSocketInvalidate closing the underlying socket
31 
32 Revision 1.13  2004/12/10 05:27:26  cheshire
33 <rdar://problem/3909147> Guard against multiple autoname services of the same type on the same machine
34 
35 Revision 1.12  2004/12/10 04:28:28  cheshire
36 <rdar://problem/3914406> User not notified of name changes for services using new UDS API
37 
38 Revision 1.11  2004/12/06 21:15:23  ksekar
39 <rdar://problem/3884386> mDNSResponder crashed in CheckServiceRegistrations
40 
41 Revision 1.10  2004/10/26 04:31:44  cheshire
42 Rename CountSubTypes() as ChopSubTypes()
43 
44 Revision 1.9  2004/09/30 00:25:00  ksekar
45 <rdar://problem/3695802> Dynamically update default registration domains on config change
46 
47 Revision 1.8  2004/09/21 21:05:11  cheshire
48 Move duplicate code out of mDNSMacOSX/daemon.c and mDNSPosix/PosixDaemon.c,
49 into mDNSShared/uds_daemon.c
50 
51 Revision 1.7  2004/09/17 01:08:55  cheshire
52 Renamed mDNSClientAPI.h to mDNSEmbeddedAPI.h
53   The name "mDNSClientAPI.h" is misleading to new developers looking at this code. The interfaces
54   declared in that file are ONLY appropriate to single-address-space embedded applications.
55   For clients on general-purpose computers, the interfaces defined in dns_sd.h should be used.
56 
57 Revision 1.6  2004/08/11 01:58:49  cheshire
58 Remove "mDNS *globalInstance" parameter from udsserver_init()
59 
60 Revision 1.5  2004/06/18 04:44:58  rpantos
61 Use platform layer for socket types
62 
63 Revision 1.4  2004/06/12 00:51:58  cheshire
64 Changes for Windows compatibility
65 
66 Revision 1.3  2004/01/25 00:03:21  cheshire
67 Change to use mDNSVal16() instead of private PORT_AS_NUM() macro
68 
69 Revision 1.2  2004/01/24 08:46:26  bradley
70 Added InterfaceID<->Index platform interfaces since they are now used by all platforms for the DNS-SD APIs.
71 
72 Revision 1.1  2003/12/08 21:11:42  rpantos;
73 Changes necessary to support mDNSResponder on Linux.
74 
75 */
76 
77 #pragma ident	"%Z%%M%	%I%	%E% SMI"
78 
79 #include "mDNSEmbeddedAPI.h"
80 #include "dnssd_ipc.h"
81 
82 
83 /* Client interface: */
84 
85 #define SRS_PORT(S) mDNSVal16((S)->RR_SRV.resrec.rdata->u.srv.port)
86 
87 extern int udsserver_init(void);
88 
89 // takes the next scheduled event time, does idle work, and returns the updated nextevent time
90 extern mDNSs32 udsserver_idle(mDNSs32 nextevent);
91 
92 extern void udsserver_info(mDNS *const m);	// print out info about current state
93 
94 extern void udsserver_handle_configchange(void);
95 
96 extern int udsserver_exit(void);	// should be called prior to app exit
97 
98 extern void udsserver_default_reg_domain_changed(const domainname *d, mDNSBool add);
99 extern void udsserver_default_browse_domain_changed(const domainname *d, mDNSBool add);
100 
101 /* Routines that uds_daemon expects to link against: */
102 
103 typedef	void (*udsEventCallback)(void *context);
104 
105 extern mStatus udsSupportAddFDToEventLoop(dnssd_sock_t fd, udsEventCallback callback, void *context);
106 extern mStatus udsSupportRemoveFDFromEventLoop(dnssd_sock_t fd); // Note: This also CLOSES the file descriptor as well
107 
108 // RecordUpdatedNiceLabel() can be a no-op on platforms that don't care about updating the machine's
109 // global default service name (was OS X calls the "Computer Name") in response to name conflicts.
110 extern void RecordUpdatedNiceLabel(mDNS *const m, mDNSs32 delay);
111 
112 // Globals and functions defined in uds_daemon.c and also shared with the old "daemon.c" on OS X
113 extern mDNS mDNSStorage;
114 extern mDNSs32 ChopSubTypes(char *regtype);
115 extern AuthRecord *AllocateSubTypes(mDNSs32 NumSubTypes, char *p);
116 extern int CountExistingRegistrations(domainname *srv, mDNSIPPort port);
117 extern void FreeExtraRR(mDNS *const m, AuthRecord *const rr, mStatus result);
118 extern int CountPeerRegistrations(mDNS *const m, ServiceRecordSet *const srs);
119