xref: /aosp_15_r20/external/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
1*48a54d36SAndroid Build Coastguard Worker /* -*- Mode: C; tab-width: 4 -*-
2*48a54d36SAndroid Build Coastguard Worker  *
3*48a54d36SAndroid Build Coastguard Worker  * Copyright (c) 2009, Apple Computer, Inc. All rights reserved.
4*48a54d36SAndroid Build Coastguard Worker  *
5*48a54d36SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*48a54d36SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions are met:
7*48a54d36SAndroid Build Coastguard Worker  *
8*48a54d36SAndroid Build Coastguard Worker  * 1.  Redistributions of source code must retain the above copyright notice,
9*48a54d36SAndroid Build Coastguard Worker  *     this list of conditions and the following disclaimer.
10*48a54d36SAndroid Build Coastguard Worker  * 2.  Redistributions in binary form must reproduce the above copyright notice,
11*48a54d36SAndroid Build Coastguard Worker  *     this list of conditions and the following disclaimer in the documentation
12*48a54d36SAndroid Build Coastguard Worker  *     and/or other materials provided with the distribution.
13*48a54d36SAndroid Build Coastguard Worker  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of its
14*48a54d36SAndroid Build Coastguard Worker  *     contributors may be used to endorse or promote products derived from this
15*48a54d36SAndroid Build Coastguard Worker  *     software without specific prior written permission.
16*48a54d36SAndroid Build Coastguard Worker  *
17*48a54d36SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18*48a54d36SAndroid Build Coastguard Worker  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19*48a54d36SAndroid Build Coastguard Worker  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20*48a54d36SAndroid Build Coastguard Worker  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21*48a54d36SAndroid Build Coastguard Worker  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22*48a54d36SAndroid Build Coastguard Worker  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23*48a54d36SAndroid Build Coastguard Worker  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24*48a54d36SAndroid Build Coastguard Worker  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25*48a54d36SAndroid Build Coastguard Worker  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26*48a54d36SAndroid Build Coastguard Worker  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*48a54d36SAndroid Build Coastguard Worker  */
28*48a54d36SAndroid Build Coastguard Worker 
29*48a54d36SAndroid Build Coastguard Worker #include "DLLStub.h"
30*48a54d36SAndroid Build Coastguard Worker 
31*48a54d36SAndroid Build Coastguard Worker static int		g_defaultErrorCode = kDNSServiceErr_Unknown;
32*48a54d36SAndroid Build Coastguard Worker static DLLStub	g_glueLayer;
33*48a54d36SAndroid Build Coastguard Worker 
34*48a54d36SAndroid Build Coastguard Worker 
35*48a54d36SAndroid Build Coastguard Worker // ------------------------------------------
36*48a54d36SAndroid Build Coastguard Worker // DLLStub implementation
37*48a54d36SAndroid Build Coastguard Worker // ------------------------------------------
38*48a54d36SAndroid Build Coastguard Worker DLLStub * DLLStub::m_instance;
39*48a54d36SAndroid Build Coastguard Worker 
DLLStub()40*48a54d36SAndroid Build Coastguard Worker DLLStub::DLLStub()
41*48a54d36SAndroid Build Coastguard Worker :
42*48a54d36SAndroid Build Coastguard Worker 	m_library( LoadLibrary( TEXT( "dnssd.dll" ) ) )
43*48a54d36SAndroid Build Coastguard Worker {
44*48a54d36SAndroid Build Coastguard Worker 	m_instance = this;
45*48a54d36SAndroid Build Coastguard Worker }
46*48a54d36SAndroid Build Coastguard Worker 
47*48a54d36SAndroid Build Coastguard Worker 
~DLLStub()48*48a54d36SAndroid Build Coastguard Worker DLLStub::~DLLStub()
49*48a54d36SAndroid Build Coastguard Worker {
50*48a54d36SAndroid Build Coastguard Worker 	if ( m_library != NULL )
51*48a54d36SAndroid Build Coastguard Worker 	{
52*48a54d36SAndroid Build Coastguard Worker 		FreeLibrary( m_library );
53*48a54d36SAndroid Build Coastguard Worker 		m_library = NULL;
54*48a54d36SAndroid Build Coastguard Worker 	}
55*48a54d36SAndroid Build Coastguard Worker 
56*48a54d36SAndroid Build Coastguard Worker 	m_instance = NULL;
57*48a54d36SAndroid Build Coastguard Worker }
58*48a54d36SAndroid Build Coastguard Worker 
59*48a54d36SAndroid Build Coastguard Worker 
60*48a54d36SAndroid Build Coastguard Worker bool
GetProcAddress(FARPROC * func,LPCSTR lpProcName)61*48a54d36SAndroid Build Coastguard Worker DLLStub::GetProcAddress( FARPROC * func, LPCSTR lpProcName )
62*48a54d36SAndroid Build Coastguard Worker {
63*48a54d36SAndroid Build Coastguard Worker 	if ( m_instance && m_instance->m_library )
64*48a54d36SAndroid Build Coastguard Worker 	{
65*48a54d36SAndroid Build Coastguard Worker 		// Only call ::GetProcAddress if *func is NULL. This allows
66*48a54d36SAndroid Build Coastguard Worker 		// the calling code to cache the funcptr value, and we get
67*48a54d36SAndroid Build Coastguard Worker 		// some performance benefit.
68*48a54d36SAndroid Build Coastguard Worker 
69*48a54d36SAndroid Build Coastguard Worker 		if ( *func == NULL )
70*48a54d36SAndroid Build Coastguard Worker 		{
71*48a54d36SAndroid Build Coastguard Worker 			*func = ::GetProcAddress( m_instance->m_library, lpProcName );
72*48a54d36SAndroid Build Coastguard Worker 		}
73*48a54d36SAndroid Build Coastguard Worker 	}
74*48a54d36SAndroid Build Coastguard Worker 	else
75*48a54d36SAndroid Build Coastguard Worker 	{
76*48a54d36SAndroid Build Coastguard Worker 		*func = NULL;
77*48a54d36SAndroid Build Coastguard Worker 	}
78*48a54d36SAndroid Build Coastguard Worker 
79*48a54d36SAndroid Build Coastguard Worker 	return ( *func != NULL );
80*48a54d36SAndroid Build Coastguard Worker }
81*48a54d36SAndroid Build Coastguard Worker 
82*48a54d36SAndroid Build Coastguard Worker 
83*48a54d36SAndroid Build Coastguard Worker int DNSSD_API
DNSServiceRefSockFD(DNSServiceRef sdRef)84*48a54d36SAndroid Build Coastguard Worker DNSServiceRefSockFD(DNSServiceRef sdRef)
85*48a54d36SAndroid Build Coastguard Worker {
86*48a54d36SAndroid Build Coastguard Worker 	typedef int (DNSSD_API * Func)(DNSServiceRef sdRef);
87*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
88*48a54d36SAndroid Build Coastguard Worker 	int ret = -1;
89*48a54d36SAndroid Build Coastguard Worker 
90*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
91*48a54d36SAndroid Build Coastguard Worker 	{
92*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef );
93*48a54d36SAndroid Build Coastguard Worker 	}
94*48a54d36SAndroid Build Coastguard Worker 
95*48a54d36SAndroid Build Coastguard Worker 	return ret;
96*48a54d36SAndroid Build Coastguard Worker }
97*48a54d36SAndroid Build Coastguard Worker 
98*48a54d36SAndroid Build Coastguard Worker 
99*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceProcessResult(DNSServiceRef sdRef)100*48a54d36SAndroid Build Coastguard Worker DNSServiceProcessResult(DNSServiceRef sdRef)
101*48a54d36SAndroid Build Coastguard Worker {
102*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef sdRef);
103*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
104*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
105*48a54d36SAndroid Build Coastguard Worker 
106*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
107*48a54d36SAndroid Build Coastguard Worker 	{
108*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef );
109*48a54d36SAndroid Build Coastguard Worker 	}
110*48a54d36SAndroid Build Coastguard Worker 
111*48a54d36SAndroid Build Coastguard Worker 	return ret;
112*48a54d36SAndroid Build Coastguard Worker }
113*48a54d36SAndroid Build Coastguard Worker 
114*48a54d36SAndroid Build Coastguard Worker 
115*48a54d36SAndroid Build Coastguard Worker void DNSSD_API
DNSServiceRefDeallocate(DNSServiceRef sdRef)116*48a54d36SAndroid Build Coastguard Worker DNSServiceRefDeallocate(DNSServiceRef sdRef)
117*48a54d36SAndroid Build Coastguard Worker {
118*48a54d36SAndroid Build Coastguard Worker 	typedef void (DNSSD_API * Func)(DNSServiceRef sdRef);
119*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
120*48a54d36SAndroid Build Coastguard Worker 
121*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
122*48a54d36SAndroid Build Coastguard Worker 	{
123*48a54d36SAndroid Build Coastguard Worker 		func( sdRef );
124*48a54d36SAndroid Build Coastguard Worker 	}
125*48a54d36SAndroid Build Coastguard Worker }
126*48a54d36SAndroid Build Coastguard Worker 
127*48a54d36SAndroid Build Coastguard Worker 
128*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceEnumerateDomains(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,DNSServiceDomainEnumReply callBack,void * context)129*48a54d36SAndroid Build Coastguard Worker DNSServiceEnumerateDomains
130*48a54d36SAndroid Build Coastguard Worker 		(
131*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       *sdRef,
132*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
133*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
134*48a54d36SAndroid Build Coastguard Worker 		DNSServiceDomainEnumReply           callBack,
135*48a54d36SAndroid Build Coastguard Worker 		void                                *context
136*48a54d36SAndroid Build Coastguard Worker 		)
137*48a54d36SAndroid Build Coastguard Worker {
138*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, DNSServiceDomainEnumReply, void* );
139*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
140*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
141*48a54d36SAndroid Build Coastguard Worker 
142*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
143*48a54d36SAndroid Build Coastguard Worker 	{
144*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, callBack, context );
145*48a54d36SAndroid Build Coastguard Worker 	}
146*48a54d36SAndroid Build Coastguard Worker 
147*48a54d36SAndroid Build Coastguard Worker 	return ret;
148*48a54d36SAndroid Build Coastguard Worker }
149*48a54d36SAndroid Build Coastguard Worker 
150*48a54d36SAndroid Build Coastguard Worker 
151*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceRegister(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,const char * name,const char * regtype,const char * domain,const char * host,uint16_t port,uint16_t txtLen,const void * txtRecord,DNSServiceRegisterReply callBack,void * context)152*48a54d36SAndroid Build Coastguard Worker DNSServiceRegister
153*48a54d36SAndroid Build Coastguard Worker 		(
154*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       *sdRef,
155*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
156*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
157*48a54d36SAndroid Build Coastguard Worker 		const char                          *name,
158*48a54d36SAndroid Build Coastguard Worker 		const char                          *regtype,
159*48a54d36SAndroid Build Coastguard Worker 		const char                          *domain,
160*48a54d36SAndroid Build Coastguard Worker 		const char                          *host,
161*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            port,
162*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            txtLen,
163*48a54d36SAndroid Build Coastguard Worker 		const void                          *txtRecord,
164*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRegisterReply             callBack,
165*48a54d36SAndroid Build Coastguard Worker 		void                                *context
166*48a54d36SAndroid Build Coastguard Worker 		)
167*48a54d36SAndroid Build Coastguard Worker {
168*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, const char*, const char*, const char*, const char*, uint16_t, uint16_t, const void*, DNSServiceRegisterReply, void* );
169*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
170*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
171*48a54d36SAndroid Build Coastguard Worker 
172*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
173*48a54d36SAndroid Build Coastguard Worker 	{
174*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, name, regtype, domain, host, port, txtLen, txtRecord, callBack, context );
175*48a54d36SAndroid Build Coastguard Worker 	}
176*48a54d36SAndroid Build Coastguard Worker 
177*48a54d36SAndroid Build Coastguard Worker 	return ret;
178*48a54d36SAndroid Build Coastguard Worker }
179*48a54d36SAndroid Build Coastguard Worker 
180*48a54d36SAndroid Build Coastguard Worker 
181*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceAddRecord(DNSServiceRef sdRef,DNSRecordRef * RecordRef,DNSServiceFlags flags,uint16_t rrtype,uint16_t rdlen,const void * rdata,uint32_t ttl)182*48a54d36SAndroid Build Coastguard Worker DNSServiceAddRecord
183*48a54d36SAndroid Build Coastguard Worker 		(
184*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
185*48a54d36SAndroid Build Coastguard Worker 		DNSRecordRef                        *RecordRef,
186*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
187*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrtype,
188*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rdlen,
189*48a54d36SAndroid Build Coastguard Worker 		const void                          *rdata,
190*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            ttl
191*48a54d36SAndroid Build Coastguard Worker 		)
192*48a54d36SAndroid Build Coastguard Worker {
193*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef, DNSRecordRef*, DNSServiceFlags, uint16_t, uint16_t, const void*, uint32_t );
194*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
195*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
196*48a54d36SAndroid Build Coastguard Worker 
197*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
198*48a54d36SAndroid Build Coastguard Worker 	{
199*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, RecordRef, flags, rrtype, rdlen, rdata, ttl );
200*48a54d36SAndroid Build Coastguard Worker 	}
201*48a54d36SAndroid Build Coastguard Worker 
202*48a54d36SAndroid Build Coastguard Worker 	return ret;
203*48a54d36SAndroid Build Coastguard Worker }
204*48a54d36SAndroid Build Coastguard Worker 
205*48a54d36SAndroid Build Coastguard Worker 
206*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceUpdateRecord(DNSServiceRef sdRef,DNSRecordRef RecordRef,DNSServiceFlags flags,uint16_t rdlen,const void * rdata,uint32_t ttl)207*48a54d36SAndroid Build Coastguard Worker DNSServiceUpdateRecord
208*48a54d36SAndroid Build Coastguard Worker 		(
209*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
210*48a54d36SAndroid Build Coastguard Worker 		DNSRecordRef                        RecordRef,     /* may be NULL */
211*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
212*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rdlen,
213*48a54d36SAndroid Build Coastguard Worker 		const void                          *rdata,
214*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            ttl
215*48a54d36SAndroid Build Coastguard Worker 		)
216*48a54d36SAndroid Build Coastguard Worker {
217*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef, DNSRecordRef, DNSServiceFlags, uint16_t, const void*, uint32_t );
218*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
219*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
220*48a54d36SAndroid Build Coastguard Worker 
221*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
222*48a54d36SAndroid Build Coastguard Worker 	{
223*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, RecordRef, flags, rdlen, rdata, ttl );
224*48a54d36SAndroid Build Coastguard Worker 	}
225*48a54d36SAndroid Build Coastguard Worker 
226*48a54d36SAndroid Build Coastguard Worker 	return ret;
227*48a54d36SAndroid Build Coastguard Worker }
228*48a54d36SAndroid Build Coastguard Worker 
229*48a54d36SAndroid Build Coastguard Worker 
230*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceRemoveRecord(DNSServiceRef sdRef,DNSRecordRef RecordRef,DNSServiceFlags flags)231*48a54d36SAndroid Build Coastguard Worker DNSServiceRemoveRecord
232*48a54d36SAndroid Build Coastguard Worker 		(
233*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                 sdRef,
234*48a54d36SAndroid Build Coastguard Worker 		DNSRecordRef                  RecordRef,
235*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags               flags
236*48a54d36SAndroid Build Coastguard Worker 		)
237*48a54d36SAndroid Build Coastguard Worker {
238*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef, DNSRecordRef, DNSServiceFlags );
239*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
240*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
241*48a54d36SAndroid Build Coastguard Worker 
242*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
243*48a54d36SAndroid Build Coastguard Worker 	{
244*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, RecordRef, flags );
245*48a54d36SAndroid Build Coastguard Worker 	}
246*48a54d36SAndroid Build Coastguard Worker 
247*48a54d36SAndroid Build Coastguard Worker 	return ret;
248*48a54d36SAndroid Build Coastguard Worker }
249*48a54d36SAndroid Build Coastguard Worker 
250*48a54d36SAndroid Build Coastguard Worker 
251*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceBrowse(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,const char * regtype,const char * domain,DNSServiceBrowseReply callBack,void * context)252*48a54d36SAndroid Build Coastguard Worker DNSServiceBrowse
253*48a54d36SAndroid Build Coastguard Worker 		(
254*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       *sdRef,
255*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
256*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
257*48a54d36SAndroid Build Coastguard Worker 		const char                          *regtype,
258*48a54d36SAndroid Build Coastguard Worker 		const char                          *domain,    /* may be NULL */
259*48a54d36SAndroid Build Coastguard Worker 		DNSServiceBrowseReply               callBack,
260*48a54d36SAndroid Build Coastguard Worker 		void                                *context    /* may be NULL */
261*48a54d36SAndroid Build Coastguard Worker 		)
262*48a54d36SAndroid Build Coastguard Worker {
263*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, const char*, const char*, DNSServiceBrowseReply, void* );
264*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
265*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
266*48a54d36SAndroid Build Coastguard Worker 
267*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
268*48a54d36SAndroid Build Coastguard Worker 	{
269*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, regtype, domain, callBack, context );
270*48a54d36SAndroid Build Coastguard Worker 	}
271*48a54d36SAndroid Build Coastguard Worker 
272*48a54d36SAndroid Build Coastguard Worker 	return ret;
273*48a54d36SAndroid Build Coastguard Worker }
274*48a54d36SAndroid Build Coastguard Worker 
275*48a54d36SAndroid Build Coastguard Worker 
276*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceResolve(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,const char * name,const char * regtype,const char * domain,DNSServiceResolveReply callBack,void * context)277*48a54d36SAndroid Build Coastguard Worker DNSServiceResolve
278*48a54d36SAndroid Build Coastguard Worker 		(
279*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       *sdRef,
280*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
281*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
282*48a54d36SAndroid Build Coastguard Worker 		const char                          *name,
283*48a54d36SAndroid Build Coastguard Worker 		const char                          *regtype,
284*48a54d36SAndroid Build Coastguard Worker 		const char                          *domain,
285*48a54d36SAndroid Build Coastguard Worker 		DNSServiceResolveReply              callBack,
286*48a54d36SAndroid Build Coastguard Worker 		void                                *context  /* may be NULL */
287*48a54d36SAndroid Build Coastguard Worker 		)
288*48a54d36SAndroid Build Coastguard Worker {
289*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, const char*, const char*, const char*, DNSServiceResolveReply, void* );
290*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
291*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
292*48a54d36SAndroid Build Coastguard Worker 
293*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
294*48a54d36SAndroid Build Coastguard Worker 	{
295*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, name, regtype, domain, callBack, context );
296*48a54d36SAndroid Build Coastguard Worker 	}
297*48a54d36SAndroid Build Coastguard Worker 
298*48a54d36SAndroid Build Coastguard Worker 	return ret;
299*48a54d36SAndroid Build Coastguard Worker }
300*48a54d36SAndroid Build Coastguard Worker 
301*48a54d36SAndroid Build Coastguard Worker 
302*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceConstructFullName(char * fullName,const char * service,const char * regtype,const char * domain)303*48a54d36SAndroid Build Coastguard Worker DNSServiceConstructFullName
304*48a54d36SAndroid Build Coastguard Worker 		(
305*48a54d36SAndroid Build Coastguard Worker 		char                            *fullName,
306*48a54d36SAndroid Build Coastguard Worker 		const char                      *service,      /* may be NULL */
307*48a54d36SAndroid Build Coastguard Worker 		const char                      *regtype,
308*48a54d36SAndroid Build Coastguard Worker 		const char                      *domain
309*48a54d36SAndroid Build Coastguard Worker 		)
310*48a54d36SAndroid Build Coastguard Worker {
311*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( char*, const char*, const char*, const char* );
312*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
313*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
314*48a54d36SAndroid Build Coastguard Worker 
315*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
316*48a54d36SAndroid Build Coastguard Worker 	{
317*48a54d36SAndroid Build Coastguard Worker 		ret = func( fullName, service, regtype, domain );
318*48a54d36SAndroid Build Coastguard Worker 	}
319*48a54d36SAndroid Build Coastguard Worker 
320*48a54d36SAndroid Build Coastguard Worker 	return ret;
321*48a54d36SAndroid Build Coastguard Worker }
322*48a54d36SAndroid Build Coastguard Worker 
323*48a54d36SAndroid Build Coastguard Worker 
324*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceCreateConnection(DNSServiceRef * sdRef)325*48a54d36SAndroid Build Coastguard Worker DNSServiceCreateConnection(DNSServiceRef *sdRef)
326*48a54d36SAndroid Build Coastguard Worker {
327*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( DNSServiceRef* );
328*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
329*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
330*48a54d36SAndroid Build Coastguard Worker 
331*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
332*48a54d36SAndroid Build Coastguard Worker 	{
333*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef );
334*48a54d36SAndroid Build Coastguard Worker 	}
335*48a54d36SAndroid Build Coastguard Worker 
336*48a54d36SAndroid Build Coastguard Worker 	return ret;
337*48a54d36SAndroid Build Coastguard Worker }
338*48a54d36SAndroid Build Coastguard Worker 
339*48a54d36SAndroid Build Coastguard Worker 
340*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceRegisterRecord(DNSServiceRef sdRef,DNSRecordRef * RecordRef,DNSServiceFlags flags,uint32_t interfaceIndex,const char * fullname,uint16_t rrtype,uint16_t rrclass,uint16_t rdlen,const void * rdata,uint32_t ttl,DNSServiceRegisterRecordReply callBack,void * context)341*48a54d36SAndroid Build Coastguard Worker DNSServiceRegisterRecord
342*48a54d36SAndroid Build Coastguard Worker 		(
343*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       sdRef,
344*48a54d36SAndroid Build Coastguard Worker 		DNSRecordRef                        *RecordRef,
345*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
346*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
347*48a54d36SAndroid Build Coastguard Worker 		const char                          *fullname,
348*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrtype,
349*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrclass,
350*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rdlen,
351*48a54d36SAndroid Build Coastguard Worker 		const void                          *rdata,
352*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            ttl,
353*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRegisterRecordReply       callBack,
354*48a54d36SAndroid Build Coastguard Worker 		void                                *context    /* may be NULL */
355*48a54d36SAndroid Build Coastguard Worker 		)
356*48a54d36SAndroid Build Coastguard Worker {
357*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef, DNSRecordRef*, DNSServiceFlags, uint32_t, const char*, uint16_t, uint16_t, uint16_t, const void*, uint16_t, DNSServiceRegisterRecordReply, void* );
358*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
359*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
360*48a54d36SAndroid Build Coastguard Worker 
361*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
362*48a54d36SAndroid Build Coastguard Worker 	{
363*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, RecordRef, flags, interfaceIndex, fullname, rrtype, rrclass, rdlen, rdata, ttl, callBack, context );
364*48a54d36SAndroid Build Coastguard Worker 	}
365*48a54d36SAndroid Build Coastguard Worker 
366*48a54d36SAndroid Build Coastguard Worker 	return ret;
367*48a54d36SAndroid Build Coastguard Worker }
368*48a54d36SAndroid Build Coastguard Worker 
369*48a54d36SAndroid Build Coastguard Worker 
370*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceQueryRecord(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,const char * fullname,uint16_t rrtype,uint16_t rrclass,DNSServiceQueryRecordReply callBack,void * context)371*48a54d36SAndroid Build Coastguard Worker DNSServiceQueryRecord
372*48a54d36SAndroid Build Coastguard Worker 		(
373*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                       *sdRef,
374*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                     flags,
375*48a54d36SAndroid Build Coastguard Worker 		uint32_t                            interfaceIndex,
376*48a54d36SAndroid Build Coastguard Worker 		const char                          *fullname,
377*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrtype,
378*48a54d36SAndroid Build Coastguard Worker 		uint16_t                            rrclass,
379*48a54d36SAndroid Build Coastguard Worker 		DNSServiceQueryRecordReply          callBack,
380*48a54d36SAndroid Build Coastguard Worker 		void                                *context  /* may be NULL */
381*48a54d36SAndroid Build Coastguard Worker 		)
382*48a54d36SAndroid Build Coastguard Worker {
383*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, const char*, uint16_t, uint16_t, DNSServiceQueryRecordReply, void* );
384*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
385*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
386*48a54d36SAndroid Build Coastguard Worker 
387*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
388*48a54d36SAndroid Build Coastguard Worker 	{
389*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, fullname, rrtype, rrclass, callBack, context );
390*48a54d36SAndroid Build Coastguard Worker 	}
391*48a54d36SAndroid Build Coastguard Worker 
392*48a54d36SAndroid Build Coastguard Worker 	return ret;
393*48a54d36SAndroid Build Coastguard Worker }
394*48a54d36SAndroid Build Coastguard Worker 
395*48a54d36SAndroid Build Coastguard Worker 
396*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceReconfirmRecord(DNSServiceFlags flags,uint32_t interfaceIndex,const char * fullname,uint16_t rrtype,uint16_t rrclass,uint16_t rdlen,const void * rdata)397*48a54d36SAndroid Build Coastguard Worker DNSServiceReconfirmRecord
398*48a54d36SAndroid Build Coastguard Worker 		(
399*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                    flags,
400*48a54d36SAndroid Build Coastguard Worker 		uint32_t                           interfaceIndex,
401*48a54d36SAndroid Build Coastguard Worker 		const char                         *fullname,
402*48a54d36SAndroid Build Coastguard Worker 		uint16_t                           rrtype,
403*48a54d36SAndroid Build Coastguard Worker 		uint16_t                           rrclass,
404*48a54d36SAndroid Build Coastguard Worker 		uint16_t                           rdlen,
405*48a54d36SAndroid Build Coastguard Worker 		const void                         *rdata
406*48a54d36SAndroid Build Coastguard Worker 		)
407*48a54d36SAndroid Build Coastguard Worker {
408*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( DNSServiceFlags, uint32_t, const char*, uint16_t, uint16_t, uint16_t, const void* );
409*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
410*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
411*48a54d36SAndroid Build Coastguard Worker 
412*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
413*48a54d36SAndroid Build Coastguard Worker 	{
414*48a54d36SAndroid Build Coastguard Worker 		ret = func( flags, interfaceIndex, fullname, rrtype, rrclass, rdlen, rdata );
415*48a54d36SAndroid Build Coastguard Worker 	}
416*48a54d36SAndroid Build Coastguard Worker 
417*48a54d36SAndroid Build Coastguard Worker 	return ret;
418*48a54d36SAndroid Build Coastguard Worker }
419*48a54d36SAndroid Build Coastguard Worker 
420*48a54d36SAndroid Build Coastguard Worker 
421*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceNATPortMappingCreate(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,DNSServiceProtocol protocol,uint16_t internalPort,uint16_t externalPort,uint32_t ttl,DNSServiceNATPortMappingReply callBack,void * context)422*48a54d36SAndroid Build Coastguard Worker DNSServiceNATPortMappingCreate
423*48a54d36SAndroid Build Coastguard Worker 		(
424*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                    *sdRef,
425*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                  flags,
426*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         interfaceIndex,
427*48a54d36SAndroid Build Coastguard Worker 		DNSServiceProtocol               protocol,          /* TCP and/or UDP          */
428*48a54d36SAndroid Build Coastguard Worker 		uint16_t                         internalPort,      /* network byte order      */
429*48a54d36SAndroid Build Coastguard Worker 		uint16_t                         externalPort,      /* network byte order      */
430*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         ttl,               /* time to live in seconds */
431*48a54d36SAndroid Build Coastguard Worker 		DNSServiceNATPortMappingReply    callBack,
432*48a54d36SAndroid Build Coastguard Worker 		void                             *context           /* may be NULL             */
433*48a54d36SAndroid Build Coastguard Worker 		)
434*48a54d36SAndroid Build Coastguard Worker {
435*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, DNSServiceProtocol, uint16_t, uint16_t, uint16_t, DNSServiceNATPortMappingReply, void* );
436*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
437*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
438*48a54d36SAndroid Build Coastguard Worker 
439*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
440*48a54d36SAndroid Build Coastguard Worker 	{
441*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, protocol, internalPort, externalPort, ttl, callBack, context );
442*48a54d36SAndroid Build Coastguard Worker 	}
443*48a54d36SAndroid Build Coastguard Worker 
444*48a54d36SAndroid Build Coastguard Worker 	return ret;
445*48a54d36SAndroid Build Coastguard Worker }
446*48a54d36SAndroid Build Coastguard Worker 
447*48a54d36SAndroid Build Coastguard Worker 
448*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceGetAddrInfo(DNSServiceRef * sdRef,DNSServiceFlags flags,uint32_t interfaceIndex,DNSServiceProtocol protocol,const char * hostname,DNSServiceGetAddrInfoReply callBack,void * context)449*48a54d36SAndroid Build Coastguard Worker DNSServiceGetAddrInfo
450*48a54d36SAndroid Build Coastguard Worker 		(
451*48a54d36SAndroid Build Coastguard Worker 		DNSServiceRef                    *sdRef,
452*48a54d36SAndroid Build Coastguard Worker 		DNSServiceFlags                  flags,
453*48a54d36SAndroid Build Coastguard Worker 		uint32_t                         interfaceIndex,
454*48a54d36SAndroid Build Coastguard Worker 		DNSServiceProtocol               protocol,
455*48a54d36SAndroid Build Coastguard Worker 		const char                       *hostname,
456*48a54d36SAndroid Build Coastguard Worker 		DNSServiceGetAddrInfoReply       callBack,
457*48a54d36SAndroid Build Coastguard Worker 		void                             *context          /* may be NULL */
458*48a54d36SAndroid Build Coastguard Worker 		)
459*48a54d36SAndroid Build Coastguard Worker {
460*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)(DNSServiceRef*, DNSServiceFlags, uint32_t, DNSServiceProtocol, const char*, DNSServiceGetAddrInfoReply, void* );
461*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
462*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
463*48a54d36SAndroid Build Coastguard Worker 
464*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
465*48a54d36SAndroid Build Coastguard Worker 	{
466*48a54d36SAndroid Build Coastguard Worker 		ret = func( sdRef, flags, interfaceIndex, protocol, hostname, callBack, context );
467*48a54d36SAndroid Build Coastguard Worker 	}
468*48a54d36SAndroid Build Coastguard Worker 
469*48a54d36SAndroid Build Coastguard Worker 	return ret;
470*48a54d36SAndroid Build Coastguard Worker }
471*48a54d36SAndroid Build Coastguard Worker 
472*48a54d36SAndroid Build Coastguard Worker 
473*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
DNSServiceGetProperty(const char * property,void * result,uint32_t * size)474*48a54d36SAndroid Build Coastguard Worker DNSServiceGetProperty
475*48a54d36SAndroid Build Coastguard Worker 		(
476*48a54d36SAndroid Build Coastguard Worker 		const char *property,  /* Requested property (i.e. kDNSServiceProperty_DaemonVersion) */
477*48a54d36SAndroid Build Coastguard Worker 		void       *result,    /* Pointer to place to store result */
478*48a54d36SAndroid Build Coastguard Worker 		uint32_t   *size       /* size of result location */
479*48a54d36SAndroid Build Coastguard Worker 		)
480*48a54d36SAndroid Build Coastguard Worker {
481*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( const char*, void*, uint32_t* );
482*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
483*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
484*48a54d36SAndroid Build Coastguard Worker 
485*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
486*48a54d36SAndroid Build Coastguard Worker 	{
487*48a54d36SAndroid Build Coastguard Worker 		ret = func( property, result, size );
488*48a54d36SAndroid Build Coastguard Worker 	}
489*48a54d36SAndroid Build Coastguard Worker 
490*48a54d36SAndroid Build Coastguard Worker 	return ret;
491*48a54d36SAndroid Build Coastguard Worker }
492*48a54d36SAndroid Build Coastguard Worker 
493*48a54d36SAndroid Build Coastguard Worker 
494*48a54d36SAndroid Build Coastguard Worker void DNSSD_API
TXTRecordCreate(TXTRecordRef * txtRecord,uint16_t bufferLen,void * buffer)495*48a54d36SAndroid Build Coastguard Worker TXTRecordCreate
496*48a54d36SAndroid Build Coastguard Worker 		(
497*48a54d36SAndroid Build Coastguard Worker 		TXTRecordRef     *txtRecord,
498*48a54d36SAndroid Build Coastguard Worker 		uint16_t         bufferLen,
499*48a54d36SAndroid Build Coastguard Worker 		void             *buffer
500*48a54d36SAndroid Build Coastguard Worker 		)
501*48a54d36SAndroid Build Coastguard Worker {
502*48a54d36SAndroid Build Coastguard Worker 	typedef void (DNSSD_API * Func)( TXTRecordRef*, uint16_t, void* );
503*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
504*48a54d36SAndroid Build Coastguard Worker 
505*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
506*48a54d36SAndroid Build Coastguard Worker 	{
507*48a54d36SAndroid Build Coastguard Worker 		func( txtRecord, bufferLen, buffer );
508*48a54d36SAndroid Build Coastguard Worker 	}
509*48a54d36SAndroid Build Coastguard Worker }
510*48a54d36SAndroid Build Coastguard Worker 
511*48a54d36SAndroid Build Coastguard Worker 
512*48a54d36SAndroid Build Coastguard Worker void DNSSD_API
TXTRecordDeallocate(TXTRecordRef * txtRecord)513*48a54d36SAndroid Build Coastguard Worker TXTRecordDeallocate
514*48a54d36SAndroid Build Coastguard Worker 		(
515*48a54d36SAndroid Build Coastguard Worker 		TXTRecordRef     *txtRecord
516*48a54d36SAndroid Build Coastguard Worker 		)
517*48a54d36SAndroid Build Coastguard Worker {
518*48a54d36SAndroid Build Coastguard Worker 	typedef void (DNSSD_API * Func)( TXTRecordRef* );
519*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
520*48a54d36SAndroid Build Coastguard Worker 
521*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
522*48a54d36SAndroid Build Coastguard Worker 	{
523*48a54d36SAndroid Build Coastguard Worker 		func( txtRecord );
524*48a54d36SAndroid Build Coastguard Worker 	}
525*48a54d36SAndroid Build Coastguard Worker }
526*48a54d36SAndroid Build Coastguard Worker 
527*48a54d36SAndroid Build Coastguard Worker 
528*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
TXTRecordSetValue(TXTRecordRef * txtRecord,const char * key,uint8_t valueSize,const void * value)529*48a54d36SAndroid Build Coastguard Worker TXTRecordSetValue
530*48a54d36SAndroid Build Coastguard Worker 		(
531*48a54d36SAndroid Build Coastguard Worker 		TXTRecordRef     *txtRecord,
532*48a54d36SAndroid Build Coastguard Worker 		const char       *key,
533*48a54d36SAndroid Build Coastguard Worker 		uint8_t          valueSize,        /* may be zero */
534*48a54d36SAndroid Build Coastguard Worker 		const void       *value            /* may be NULL */
535*48a54d36SAndroid Build Coastguard Worker 		)
536*48a54d36SAndroid Build Coastguard Worker {
537*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( TXTRecordRef*, const char*, uint8_t, const void* );
538*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
539*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
540*48a54d36SAndroid Build Coastguard Worker 
541*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
542*48a54d36SAndroid Build Coastguard Worker 	{
543*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtRecord, key, valueSize, value );
544*48a54d36SAndroid Build Coastguard Worker 	}
545*48a54d36SAndroid Build Coastguard Worker 
546*48a54d36SAndroid Build Coastguard Worker 	return ret;
547*48a54d36SAndroid Build Coastguard Worker }
548*48a54d36SAndroid Build Coastguard Worker 
549*48a54d36SAndroid Build Coastguard Worker 
550*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
TXTRecordRemoveValue(TXTRecordRef * txtRecord,const char * key)551*48a54d36SAndroid Build Coastguard Worker TXTRecordRemoveValue
552*48a54d36SAndroid Build Coastguard Worker 		(
553*48a54d36SAndroid Build Coastguard Worker 		TXTRecordRef     *txtRecord,
554*48a54d36SAndroid Build Coastguard Worker 		const char       *key
555*48a54d36SAndroid Build Coastguard Worker 		)
556*48a54d36SAndroid Build Coastguard Worker {
557*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( TXTRecordRef*, const char* );
558*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
559*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
560*48a54d36SAndroid Build Coastguard Worker 
561*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
562*48a54d36SAndroid Build Coastguard Worker 	{
563*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtRecord, key );
564*48a54d36SAndroid Build Coastguard Worker 	}
565*48a54d36SAndroid Build Coastguard Worker 
566*48a54d36SAndroid Build Coastguard Worker 	return ret;
567*48a54d36SAndroid Build Coastguard Worker }
568*48a54d36SAndroid Build Coastguard Worker 
569*48a54d36SAndroid Build Coastguard Worker 
570*48a54d36SAndroid Build Coastguard Worker int DNSSD_API
TXTRecordContainsKey(uint16_t txtLen,const void * txtRecord,const char * key)571*48a54d36SAndroid Build Coastguard Worker TXTRecordContainsKey
572*48a54d36SAndroid Build Coastguard Worker 		(
573*48a54d36SAndroid Build Coastguard Worker 		uint16_t         txtLen,
574*48a54d36SAndroid Build Coastguard Worker 		const void       *txtRecord,
575*48a54d36SAndroid Build Coastguard Worker 		const char       *key
576*48a54d36SAndroid Build Coastguard Worker 		)
577*48a54d36SAndroid Build Coastguard Worker {
578*48a54d36SAndroid Build Coastguard Worker 	typedef int (DNSSD_API * Func)( uint16_t, const void*, const char* );
579*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
580*48a54d36SAndroid Build Coastguard Worker 	int ret = 0;
581*48a54d36SAndroid Build Coastguard Worker 
582*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
583*48a54d36SAndroid Build Coastguard Worker 	{
584*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtLen, txtRecord, key );
585*48a54d36SAndroid Build Coastguard Worker 	}
586*48a54d36SAndroid Build Coastguard Worker 
587*48a54d36SAndroid Build Coastguard Worker 	return ret;
588*48a54d36SAndroid Build Coastguard Worker }
589*48a54d36SAndroid Build Coastguard Worker 
590*48a54d36SAndroid Build Coastguard Worker 
591*48a54d36SAndroid Build Coastguard Worker uint16_t DNSSD_API
TXTRecordGetCount(uint16_t txtLen,const void * txtRecord)592*48a54d36SAndroid Build Coastguard Worker TXTRecordGetCount
593*48a54d36SAndroid Build Coastguard Worker 		(
594*48a54d36SAndroid Build Coastguard Worker 		uint16_t         txtLen,
595*48a54d36SAndroid Build Coastguard Worker 		const void       *txtRecord
596*48a54d36SAndroid Build Coastguard Worker 		)
597*48a54d36SAndroid Build Coastguard Worker {
598*48a54d36SAndroid Build Coastguard Worker 	typedef uint16_t (DNSSD_API * Func)( uint16_t, const void* );
599*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
600*48a54d36SAndroid Build Coastguard Worker 	uint16_t ret = 0;
601*48a54d36SAndroid Build Coastguard Worker 
602*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
603*48a54d36SAndroid Build Coastguard Worker 	{
604*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtLen, txtRecord );
605*48a54d36SAndroid Build Coastguard Worker 	}
606*48a54d36SAndroid Build Coastguard Worker 
607*48a54d36SAndroid Build Coastguard Worker 	return ret;
608*48a54d36SAndroid Build Coastguard Worker }
609*48a54d36SAndroid Build Coastguard Worker 
610*48a54d36SAndroid Build Coastguard Worker 
611*48a54d36SAndroid Build Coastguard Worker uint16_t DNSSD_API
TXTRecordGetLength(const TXTRecordRef * txtRecord)612*48a54d36SAndroid Build Coastguard Worker TXTRecordGetLength
613*48a54d36SAndroid Build Coastguard Worker 		(
614*48a54d36SAndroid Build Coastguard Worker 		const TXTRecordRef *txtRecord
615*48a54d36SAndroid Build Coastguard Worker 		)
616*48a54d36SAndroid Build Coastguard Worker {
617*48a54d36SAndroid Build Coastguard Worker 	typedef uint16_t (DNSSD_API * Func)( const TXTRecordRef* );
618*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
619*48a54d36SAndroid Build Coastguard Worker 	uint16_t ret = 0;
620*48a54d36SAndroid Build Coastguard Worker 
621*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
622*48a54d36SAndroid Build Coastguard Worker 	{
623*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtRecord );
624*48a54d36SAndroid Build Coastguard Worker 	}
625*48a54d36SAndroid Build Coastguard Worker 
626*48a54d36SAndroid Build Coastguard Worker 	return ret;
627*48a54d36SAndroid Build Coastguard Worker }
628*48a54d36SAndroid Build Coastguard Worker 
629*48a54d36SAndroid Build Coastguard Worker 
630*48a54d36SAndroid Build Coastguard Worker const void * DNSSD_API
TXTRecordGetBytesPtr(const TXTRecordRef * txtRecord)631*48a54d36SAndroid Build Coastguard Worker TXTRecordGetBytesPtr
632*48a54d36SAndroid Build Coastguard Worker 		(
633*48a54d36SAndroid Build Coastguard Worker 		const TXTRecordRef *txtRecord
634*48a54d36SAndroid Build Coastguard Worker 		)
635*48a54d36SAndroid Build Coastguard Worker {
636*48a54d36SAndroid Build Coastguard Worker 	typedef const void* (DNSSD_API * Func)( const TXTRecordRef* );
637*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
638*48a54d36SAndroid Build Coastguard Worker 	const void* ret = NULL;
639*48a54d36SAndroid Build Coastguard Worker 
640*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
641*48a54d36SAndroid Build Coastguard Worker 	{
642*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtRecord );
643*48a54d36SAndroid Build Coastguard Worker 	}
644*48a54d36SAndroid Build Coastguard Worker 
645*48a54d36SAndroid Build Coastguard Worker 	return ret;
646*48a54d36SAndroid Build Coastguard Worker }
647*48a54d36SAndroid Build Coastguard Worker 
648*48a54d36SAndroid Build Coastguard Worker 
649*48a54d36SAndroid Build Coastguard Worker const void * DNSSD_API
TXTRecordGetValuePtr(uint16_t txtLen,const void * txtRecord,const char * key,uint8_t * valueLen)650*48a54d36SAndroid Build Coastguard Worker TXTRecordGetValuePtr
651*48a54d36SAndroid Build Coastguard Worker 		(
652*48a54d36SAndroid Build Coastguard Worker 		uint16_t         txtLen,
653*48a54d36SAndroid Build Coastguard Worker 		const void       *txtRecord,
654*48a54d36SAndroid Build Coastguard Worker 		const char       *key,
655*48a54d36SAndroid Build Coastguard Worker 		uint8_t          *valueLen
656*48a54d36SAndroid Build Coastguard Worker 		)
657*48a54d36SAndroid Build Coastguard Worker {
658*48a54d36SAndroid Build Coastguard Worker 	typedef const void* (DNSSD_API * Func)( uint16_t, const void*, const char*, uint8_t* );
659*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
660*48a54d36SAndroid Build Coastguard Worker 	const void* ret = NULL;
661*48a54d36SAndroid Build Coastguard Worker 
662*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
663*48a54d36SAndroid Build Coastguard Worker 	{
664*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtLen, txtRecord, key, valueLen );
665*48a54d36SAndroid Build Coastguard Worker 	}
666*48a54d36SAndroid Build Coastguard Worker 
667*48a54d36SAndroid Build Coastguard Worker 	return ret;
668*48a54d36SAndroid Build Coastguard Worker }
669*48a54d36SAndroid Build Coastguard Worker 
670*48a54d36SAndroid Build Coastguard Worker 
671*48a54d36SAndroid Build Coastguard Worker DNSServiceErrorType DNSSD_API
TXTRecordGetItemAtIndex(uint16_t txtLen,const void * txtRecord,uint16_t itemIndex,uint16_t keyBufLen,char * key,uint8_t * valueLen,const void ** value)672*48a54d36SAndroid Build Coastguard Worker TXTRecordGetItemAtIndex
673*48a54d36SAndroid Build Coastguard Worker 		(
674*48a54d36SAndroid Build Coastguard Worker 		uint16_t         txtLen,
675*48a54d36SAndroid Build Coastguard Worker 		const void       *txtRecord,
676*48a54d36SAndroid Build Coastguard Worker 		uint16_t         itemIndex,
677*48a54d36SAndroid Build Coastguard Worker 		uint16_t         keyBufLen,
678*48a54d36SAndroid Build Coastguard Worker 		char             *key,
679*48a54d36SAndroid Build Coastguard Worker 		uint8_t          *valueLen,
680*48a54d36SAndroid Build Coastguard Worker 		const void       **value
681*48a54d36SAndroid Build Coastguard Worker 		)
682*48a54d36SAndroid Build Coastguard Worker {
683*48a54d36SAndroid Build Coastguard Worker 	typedef DNSServiceErrorType (DNSSD_API * Func)( uint16_t, const void*, uint16_t, uint16_t, char*, uint8_t*, const void** );
684*48a54d36SAndroid Build Coastguard Worker 	static Func func = NULL;
685*48a54d36SAndroid Build Coastguard Worker 	DNSServiceErrorType ret = g_defaultErrorCode;
686*48a54d36SAndroid Build Coastguard Worker 
687*48a54d36SAndroid Build Coastguard Worker 	if ( DLLStub::GetProcAddress( ( FARPROC* ) &func, __FUNCTION__ ) )
688*48a54d36SAndroid Build Coastguard Worker 	{
689*48a54d36SAndroid Build Coastguard Worker 		ret = func( txtLen, txtRecord, itemIndex, keyBufLen, key, valueLen, value );
690*48a54d36SAndroid Build Coastguard Worker 	}
691*48a54d36SAndroid Build Coastguard Worker 
692*48a54d36SAndroid Build Coastguard Worker 	return ret;
693*48a54d36SAndroid Build Coastguard Worker }