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