• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src/router/avahi-0.6.31/avahi-compat-howl/include/discovery/
1#ifndef _discovery_discovery_h
2#define _discovery_discovery_h
3
4/*
5 * Copyright 2003, 2004 Porchdog Software. All rights reserved.
6 *
7 *	Redistribution and use in source and binary forms, with or without modification,
8 *	are permitted provided that the following conditions are met:
9 *
10 *		1. Redistributions of source code must retain the above copyright notice,
11 *		   this list of conditions and the following disclaimer.
12 *		2. Redistributions in binary form must reproduce the above copyright notice,
13 *		   this list of conditions and the following disclaimer in the documentation
14 *		   and/or other materials provided with the distribution.
15 *
16 *	THIS SOFTWARE IS PROVIDED BY PORCHDOG SOFTWARE ``AS IS'' AND ANY
17 *	EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 *	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 *	IN NO EVENT SHALL THE HOWL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20 *	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 *	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 *	DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 *	OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
24 *	OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
25 *	OF THE POSSIBILITY OF SUCH DAMAGE.
26 *
27 *	The views and conclusions contained in the software and documentation are those
28 *	of the authors and should not be interpreted as representing official policies,
29 *	either expressed or implied, of Porchdog Software.
30 */
31
32#include <salt/salt.h>
33#include <salt/socket.h>
34
35
36#if defined(__cplusplus)
37extern "C"
38{
39#endif
40
41
42struct									_sw_discovery;
43typedef struct _sw_discovery	*	sw_discovery;
44
45
46/*
47 * keeps track of different discovery operations
48 */
49typedef sw_uint32						sw_discovery_oid;
50
51
52/*
53 * For backwards compatibility
54 */
55#define sw_discovery_publish_host_id	sw_discovery_oid
56#define sw_discovery_publish_id			sw_discovery_oid
57#define sw_discovery_browse_id			sw_discovery_oid
58#define sw_discovery_resolve_id			sw_discovery_oid
59
60
61/*
62 * how to connect to server
63 */
64typedef enum _sw_discovery_init_flags
65{
66	SW_DISCOVERY_USE_SHARED_SERVICE		=	0x1,
67	SW_DISCOVERY_USE_PRIVATE_SERVICE		=	0x2,
68	SW_DISCOVERY_SKIP_VERSION_CHECK		=	0x4
69} sw_discovery_init_flags;
70
71
72/*
73 * status for asynchronous registration call
74 */
75typedef enum _sw_discovery_publish_status
76{
77	SW_DISCOVERY_PUBLISH_STARTED,
78	SW_DISCOVERY_PUBLISH_STOPPED,
79	SW_DISCOVERY_PUBLISH_NAME_COLLISION,
80	SW_DISCOVERY_PUBLISH_INVALID
81} sw_discovery_publish_status;
82
83
84typedef enum _sw_discovery_browse_status
85{
86	SW_DISCOVERY_BROWSE_INVALID,
87	SW_DISCOVERY_BROWSE_RELEASE,
88	SW_DISCOVERY_BROWSE_ADD_DOMAIN,
89	SW_DISCOVERY_BROWSE_ADD_DEFAULT_DOMAIN,
90	SW_DISCOVERY_BROWSE_REMOVE_DOMAIN,
91	SW_DISCOVERY_BROWSE_ADD_SERVICE,
92	SW_DISCOVERY_BROWSE_REMOVE_SERVICE,
93	SW_DISCOVERY_BROWSE_RESOLVED
94} sw_discovery_browse_status;
95
96
97typedef enum _sw_discovery_query_record_status
98{
99	SW_DISCOVERY_QUERY_RECORD_ADD			=	0x1
100} sw_discovery_query_record_status;
101
102
103typedef sw_result
104(HOWL_API *sw_discovery_publish_reply)(
105							sw_discovery						session,
106							sw_discovery_oid					oid,
107							sw_discovery_publish_status	status,
108							sw_opaque							extra);
109
110typedef sw_result
111(HOWL_API *sw_discovery_browse_reply)(
112							sw_discovery						session,
113							sw_discovery_oid					oid,
114							sw_discovery_browse_status		status,
115							sw_uint32							interface_index,
116							sw_const_string					name,
117							sw_const_string					type,
118							sw_const_string					domain,
119							sw_opaque							extra);
120
121typedef sw_result
122(HOWL_API *sw_discovery_resolve_reply)(
123							sw_discovery						session,
124							sw_discovery_oid					oid,
125							sw_uint32							interface_index,
126							sw_const_string					name,
127							sw_const_string					type,
128							sw_const_string					domain,
129							sw_ipv4_address					address,
130							sw_port								port,
131							sw_octets							text_record,
132							sw_uint32							text_record_len,
133							sw_opaque							extra);
134
135
136typedef sw_result
137(HOWL_API *sw_discovery_query_record_reply)(
138							sw_discovery								session,
139							sw_discovery_oid							oid,
140							sw_discovery_query_record_status		status,
141							sw_uint32									interface_index,
142							sw_const_string							fullname,
143							sw_uint16									rrtype,
144							sw_uint16									rrclass,
145							sw_uint16									rrdatalen,
146							sw_const_octets							rrdata,
147							sw_uint32									ttl,
148							sw_opaque									extra);
149
150
151/*
152 * API for publishing/browsing/resolving services
153 */
154sw_result HOWL_API
155sw_discovery_init(
156					sw_discovery			*	self);
157
158
159sw_result HOWL_API
160sw_discovery_init_with_flags(
161					sw_discovery			*	self,
162					sw_discovery_init_flags	flags);
163
164
165sw_result HOWL_API
166sw_discovery_fina(
167					sw_discovery		self);
168
169
170sw_result HOWL_API
171sw_discovery_publish_host(
172					sw_discovery						self,
173					sw_uint32							interface_index,
174					sw_const_string					name,
175					sw_const_string					domain,
176					sw_ipv4_address					address,
177					sw_discovery_publish_reply		reply,
178					sw_opaque							extra,
179					sw_discovery_oid				*	oid);
180
181
182sw_result HOWL_API
183sw_discovery_publish(
184					sw_discovery						self,
185					sw_uint32							interface_index,
186					sw_const_string					name,
187					sw_const_string					type,
188					sw_const_string					domain,
189					sw_const_string					host,
190					sw_port								port,
191					sw_octets							text_record,
192					sw_uint32							text_record_len,
193					sw_discovery_publish_reply		reply,
194					sw_opaque							extra,
195					sw_discovery_oid				*	oid);
196
197
198sw_result HOWL_API
199sw_discovery_publish_update(
200					sw_discovery						self,
201					sw_discovery_oid					oid,
202					sw_octets							text_record,
203					sw_uint32							text_record_len);
204
205
206
207/*
208 * API for browsing domains
209 */
210sw_result HOWL_API
211sw_discovery_browse_domains(
212					sw_discovery						self,
213					sw_uint32							interface_index,
214					sw_discovery_browse_reply		reply,
215					sw_opaque							extra,
216					sw_discovery_oid				*	oid);
217
218
219
220/*
221 * API for browsing services
222 */
223sw_result HOWL_API
224sw_discovery_browse(
225					sw_discovery						self,
226					sw_uint32							interface_index,
227					sw_const_string					type,
228					sw_const_string					domain,
229					sw_discovery_browse_reply		reply,
230					sw_opaque							extra,
231					sw_discovery_oid				*	oid);
232
233
234/*
235 * API for resolving services
236 */
237sw_result HOWL_API
238sw_discovery_resolve(
239					sw_discovery						self,
240					sw_uint32							interface_index,
241					sw_const_string					name,
242					sw_const_string					type,
243					sw_const_string					domain,
244					sw_discovery_resolve_reply		reply,
245					sw_opaque							extra,
246					sw_discovery_oid				*	oid);
247
248
249sw_result HOWL_API
250sw_discovery_query_record(
251					sw_discovery								self,
252					sw_uint32									interface_index,
253					sw_uint32									flags,
254					sw_const_string							fullname,
255					sw_uint16									rrtype,
256					sw_uint16									rrclass,
257					sw_discovery_query_record_reply		reply,
258					sw_opaque									extra,
259					sw_discovery_oid						*	oid);
260
261
262sw_result HOWL_API
263sw_discovery_cancel(
264					sw_discovery		self,
265					sw_discovery_oid	oid);
266
267
268
269/* ----------------------------------------------------------
270 *
271 * Event Processing APIs
272 *
273 * ----------------------------------------------------------
274 */
275
276
277sw_result HOWL_API
278sw_discovery_run(
279					sw_discovery						self);
280
281
282sw_result HOWL_API
283sw_discovery_stop_run(
284					sw_discovery						self);
285
286
287int HOWL_API
288sw_discovery_socket(
289					sw_discovery						self);
290
291
292sw_result HOWL_API
293sw_discovery_read_socket(
294					sw_discovery						self);
295
296
297sw_result HOWL_API
298sw_discovery_salt(
299					sw_discovery	self,
300					sw_salt		*	salt);
301
302
303/*
304 * Error codes
305 */
306#define SW_DISCOVERY_E_BASE					900
307#define SW_DISCOVERY_E_UNKNOWN				(SW_DISCOVERY_E_BASE + 2)
308#define SW_DISCOVERY_E_NO_SUCH_NAME			(SW_DISCOVERY_E_BASE + 3)
309#define SW_DISCOVERY_E_NO_MEM					(SW_DISCOVERY_E_BASE + 4)
310#define SW_DISCOVERY_E_BAD_PARAM				(SW_DISCOVERY_E_BASE + 5)
311#define SW_DISCOVERY_E_BAD_REFERENCE		(SW_DISCOVERY_E_BASE + 6)
312#define SW_DISCOVERY_E_BAD_STATE				(SW_DISCOVERY_E_BASE + 7)
313#define SW_DISCOVERY_E_BAD_FLAGS				(SW_DISCOVERY_E_BASE + 8)
314#define SW_DISCOVERY_E_NOT_SUPPORTED		(SW_DISCOVERY_E_BASE + 9)
315#define SW_DISCOVERY_E_NOT_INITIALIZED		(SW_DISCOVERY_E_BASE + 10)
316#define SW_DISCOVERY_E_NO_CACHE				(SW_DISCOVERY_E_BASE + 11)
317#define SW_DISCOVERY_E_ALREADY_REGISTERED	(SW_DISCOVERY_E_BASE + 12)
318#define SW_DISCOVERY_E_NAME_CONFLICT		(SW_DISCOVERY_E_BASE + 13)
319#define SW_DISCOVERY_E_INVALID				(SW_DISCOVERY_E_BASE + 14)
320
321
322#if defined(__cplusplus)
323}
324#endif
325
326
327#endif
328