uds_daemon.h revision 4904:cd464a980538
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 $
26Revision 1.15  2006/08/14 23:24:57  cheshire
27Re-licensed mDNSResponder daemon source code under Apache License, Version 2.0
28
29Revision 1.14  2005/01/27 17:48:39  cheshire
30Added comment about CFSocketInvalidate closing the underlying socket
31
32Revision 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
35Revision 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
38Revision 1.11  2004/12/06 21:15:23  ksekar
39<rdar://problem/3884386> mDNSResponder crashed in CheckServiceRegistrations
40
41Revision 1.10  2004/10/26 04:31:44  cheshire
42Rename CountSubTypes() as ChopSubTypes()
43
44Revision 1.9  2004/09/30 00:25:00  ksekar
45<rdar://problem/3695802> Dynamically update default registration domains on config change
46
47Revision 1.8  2004/09/21 21:05:11  cheshire
48Move duplicate code out of mDNSMacOSX/daemon.c and mDNSPosix/PosixDaemon.c,
49into mDNSShared/uds_daemon.c
50
51Revision 1.7  2004/09/17 01:08:55  cheshire
52Renamed 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
57Revision 1.6  2004/08/11 01:58:49  cheshire
58Remove "mDNS *globalInstance" parameter from udsserver_init()
59
60Revision 1.5  2004/06/18 04:44:58  rpantos
61Use platform layer for socket types
62
63Revision 1.4  2004/06/12 00:51:58  cheshire
64Changes for Windows compatibility
65
66Revision 1.3  2004/01/25 00:03:21  cheshire
67Change to use mDNSVal16() instead of private PORT_AS_NUM() macro
68
69Revision 1.2  2004/01/24 08:46:26  bradley
70Added InterfaceID<->Index platform interfaces since they are now used by all platforms for the DNS-SD APIs.
71
72Revision 1.1  2003/12/08 21:11:42  rpantos;
73Changes 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
87extern int udsserver_init(void);
88
89// takes the next scheduled event time, does idle work, and returns the updated nextevent time
90extern mDNSs32 udsserver_idle(mDNSs32 nextevent);
91
92extern void udsserver_info(mDNS *const m);	// print out info about current state
93
94extern void udsserver_handle_configchange(void);
95
96extern int udsserver_exit(void);	// should be called prior to app exit
97
98extern void udsserver_default_reg_domain_changed(const domainname *d, mDNSBool add);
99extern void udsserver_default_browse_domain_changed(const domainname *d, mDNSBool add);
100
101/* Routines that uds_daemon expects to link against: */
102
103typedef	void (*udsEventCallback)(void *context);
104
105extern mStatus udsSupportAddFDToEventLoop(dnssd_sock_t fd, udsEventCallback callback, void *context);
106extern 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.
110extern 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
113extern mDNS mDNSStorage;
114extern mDNSs32 ChopSubTypes(char *regtype);
115extern AuthRecord *AllocateSubTypes(mDNSs32 NumSubTypes, char *p);
116extern int CountExistingRegistrations(domainname *srv, mDNSIPPort port);
117extern void FreeExtraRR(mDNS *const m, AuthRecord *const rr, mStatus result);
118extern int CountPeerRegistrations(mDNS *const m, ServiceRecordSet *const srs);
119