ICElibint.h revision c5629e66
1266e564dSmrg/* $Xorg: ICElibint.h,v 1.4 2001/02/09 02:03:26 xorgcvs Exp $ */
2266e564dSmrg/******************************************************************************
3266e564dSmrg
4266e564dSmrg
5266e564dSmrgCopyright 1993, 1998  The Open Group
6266e564dSmrg
7266e564dSmrgPermission to use, copy, modify, distribute, and sell this software and its
8266e564dSmrgdocumentation for any purpose is hereby granted without fee, provided that
9266e564dSmrgthe above copyright notice appear in all copies and that both that
10266e564dSmrgcopyright notice and this permission notice appear in supporting
11266e564dSmrgdocumentation.
12266e564dSmrg
13266e564dSmrgThe above copyright notice and this permission notice shall be included in
14266e564dSmrgall copies or substantial portions of the Software.
15266e564dSmrg
16266e564dSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17266e564dSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18266e564dSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
19266e564dSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
20266e564dSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21266e564dSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22266e564dSmrg
23266e564dSmrgExcept as contained in this notice, the name of The Open Group shall not be
24266e564dSmrgused in advertising or otherwise to promote the sale, use or other dealings
25266e564dSmrgin this Software without prior written authorization from The Open Group.
26266e564dSmrg
27266e564dSmrgAuthor: Ralph Mor, X Consortium
28266e564dSmrg******************************************************************************/
29266e564dSmrg/* $XFree86: xc/lib/ICE/ICElibint.h,v 1.6 2001/12/14 19:53:35 dawes Exp $ */
30266e564dSmrg
31266e564dSmrg#ifndef _ICELIBINT_H_
32266e564dSmrg#define _ICELIBINT_H_
33266e564dSmrg
34266e564dSmrg#include <X11/Xos.h>
35266e564dSmrg#include <X11/Xfuncs.h>
36266e564dSmrg#include <X11/Xmd.h>
37266e564dSmrg#include <X11/ICE/ICEproto.h>
38266e564dSmrg#include <X11/ICE/ICEconn.h>
39266e564dSmrg#include <X11/ICE/ICEmsg.h>
40c5629e66Smrg#ifdef WIN32
41c5629e66Smrg#include <X11/Xwindows.h>
42c5629e66Smrg#endif
43266e564dSmrg
44266e564dSmrg#include <stdlib.h>
45266e564dSmrg#include <stddef.h>
46266e564dSmrg
47266e564dSmrg
48266e564dSmrg/*
49266e564dSmrg * Vendor & Release
50266e564dSmrg */
51266e564dSmrg
52266e564dSmrg#define IceVendorString  "MIT"
53266e564dSmrg#define IceReleaseString "1.0"
54266e564dSmrg
55266e564dSmrg
56266e564dSmrg/*
57266e564dSmrg * Pad to a 64 bit boundary
58266e564dSmrg */
59266e564dSmrg
60266e564dSmrg#define PAD64(_bytes) ((8 - ((unsigned int) (_bytes) % 8)) % 8)
61266e564dSmrg
62266e564dSmrg#define PADDED_BYTES64(_bytes) (_bytes + PAD64 (_bytes))
63266e564dSmrg
64266e564dSmrg
65266e564dSmrg/*
66266e564dSmrg * Pad to 32 bit boundary
67266e564dSmrg */
68266e564dSmrg
69266e564dSmrg#define PAD32(_bytes) ((4 - ((unsigned int) (_bytes) % 4)) % 4)
70266e564dSmrg
71266e564dSmrg#define PADDED_BYTES32(_bytes) (_bytes + PAD32 (_bytes))
72266e564dSmrg
73266e564dSmrg
74266e564dSmrg/*
75266e564dSmrg * Number of 8 byte units in _bytes.
76266e564dSmrg */
77266e564dSmrg
78266e564dSmrg#define WORD64COUNT(_bytes) (((unsigned int) ((_bytes) + 7)) >> 3)
79266e564dSmrg
80266e564dSmrg
81266e564dSmrg/*
82266e564dSmrg * Number of 4 byte units in _bytes.
83266e564dSmrg */
84266e564dSmrg
85266e564dSmrg#define WORD32COUNT(_bytes) (((unsigned int) ((_bytes) + 3)) >> 2)
86266e564dSmrg
87266e564dSmrg
88266e564dSmrg/*
89266e564dSmrg * Given a string, compute the number of bytes for the STRING representation
90266e564dSmrg */
91266e564dSmrg
92266e564dSmrg#define STRING_BYTES(_string) \
93266e564dSmrg    (2 + strlen (_string) + PAD32 (2 + strlen (_string)))
94266e564dSmrg
95266e564dSmrg
96266e564dSmrg/*
97266e564dSmrg * Size of ICE input/output buffers
98266e564dSmrg */
99266e564dSmrg
100266e564dSmrg#define ICE_INBUFSIZE 1024
101266e564dSmrg
102266e564dSmrg#define ICE_OUTBUFSIZE 1024
103266e564dSmrg
104266e564dSmrg
105266e564dSmrg/*
106266e564dSmrg * Maxium number of ICE authentication methods allowed, and maxiumum
107266e564dSmrg * number of authentication data entries allowed to be set in the
108266e564dSmrg * IceSetPaAuthData function.
109266e564dSmrg *
110266e564dSmrg * We should use linked lists, but this is easier and should suffice.
111266e564dSmrg */
112266e564dSmrg
113266e564dSmrg#define MAX_ICE_AUTH_NAMES 32
114266e564dSmrg#define ICE_MAX_AUTH_DATA_ENTRIES 100
115266e564dSmrg
116266e564dSmrg
117266e564dSmrg/*
118266e564dSmrg * ICE listen object
119266e564dSmrg */
120266e564dSmrg
121266e564dSmrgstruct _IceListenObj {
122266e564dSmrg    struct _XtransConnInfo 	*trans_conn; /* transport connection object */
123266e564dSmrg    char			*network_id;
124266e564dSmrg    IceHostBasedAuthProc 	host_based_auth_proc;
125266e564dSmrg};
126266e564dSmrg
127266e564dSmrg
128266e564dSmrg/*
129266e564dSmrg * Some internal data structures for processing ICE messages.
130266e564dSmrg */
131266e564dSmrg
132266e564dSmrgtypedef void (*_IceProcessCoreMsgProc) (
133266e564dSmrg    IceConn 		/* iceConn */,
134266e564dSmrg    int			/* opcode */,
135266e564dSmrg    unsigned long	/* length */,
136266e564dSmrg    Bool		/* swap */,
137266e564dSmrg    IceReplyWaitInfo *  /* replyWait */,
138266e564dSmrg    Bool *		/* replyReadyRet */,
139266e564dSmrg    Bool *		/* connectionClosedRet */
140266e564dSmrg);
141266e564dSmrg
142266e564dSmrgtypedef struct {
143266e564dSmrg    int 			major_version;
144266e564dSmrg    int 			minor_version;
145266e564dSmrg    _IceProcessCoreMsgProc	process_core_msg_proc;
146266e564dSmrg} _IceVersion;
147266e564dSmrg
148266e564dSmrg
149266e564dSmrg/*
150266e564dSmrg * STORE FOO
151266e564dSmrg */
152266e564dSmrg
153266e564dSmrg#define STORE_CARD8(_pBuf, _val) \
154266e564dSmrg{ \
155266e564dSmrg    *((CARD8 *) _pBuf) = _val; \
156266e564dSmrg    _pBuf += 1; \
157266e564dSmrg}
158266e564dSmrg
159266e564dSmrg#ifndef WORD64
160266e564dSmrg
161266e564dSmrg#define STORE_CARD16(_pBuf, _val) \
162266e564dSmrg{ \
163266e564dSmrg    *((CARD16 *) _pBuf) = _val; \
164266e564dSmrg    _pBuf += 2; \
165266e564dSmrg}
166266e564dSmrg
167266e564dSmrg#define STORE_CARD32(_pBuf, _val) \
168266e564dSmrg{ \
169266e564dSmrg    *((CARD32 *) _pBuf) = _val; \
170266e564dSmrg    _pBuf += 4; \
171266e564dSmrg}
172266e564dSmrg
173266e564dSmrg#else /* WORD64 */
174266e564dSmrg
175266e564dSmrg#define STORE_CARD16(_pBuf, _val) \
176266e564dSmrg{ \
177266e564dSmrg    struct { \
178266e564dSmrg        int value   :16; \
179266e564dSmrg        int pad     :16; \
180266e564dSmrg    } _d; \
181266e564dSmrg    _d.value = _val; \
182266e564dSmrg    memcpy (_pBuf, &_d, 2); \
183266e564dSmrg    _pBuf += 2; \
184266e564dSmrg}
185266e564dSmrg
186266e564dSmrg#define STORE_CARD32(_pBuf, _val) \
187266e564dSmrg{ \
188266e564dSmrg    struct { \
189266e564dSmrg        int value   :32; \
190266e564dSmrg    } _d; \
191266e564dSmrg    _d.value = _val; \
192266e564dSmrg    memcpy (_pBuf, &_d, 4); \
193266e564dSmrg    _pBuf += 4; \
194266e564dSmrg}
195266e564dSmrg
196266e564dSmrg#endif /* WORD64 */
197266e564dSmrg
198266e564dSmrg#define STORE_STRING(_pBuf, _string) \
199266e564dSmrg{ \
200266e564dSmrg    CARD16 _len = strlen (_string); \
201266e564dSmrg    STORE_CARD16 (_pBuf, _len); \
202266e564dSmrg    memcpy (_pBuf, _string, _len); \
203266e564dSmrg    _pBuf += _len; \
204266e564dSmrg    if (PAD32 (2 + _len)) \
205266e564dSmrg        _pBuf += PAD32 (2 + _len); \
206266e564dSmrg}
207266e564dSmrg
208266e564dSmrg
209266e564dSmrg/*
210266e564dSmrg * EXTRACT FOO
211266e564dSmrg */
212266e564dSmrg
213266e564dSmrg#define EXTRACT_CARD8(_pBuf, _val) \
214266e564dSmrg{ \
215266e564dSmrg    _val = *((CARD8 *) _pBuf); \
216266e564dSmrg    _pBuf += 1; \
217266e564dSmrg}
218266e564dSmrg
219266e564dSmrg#ifndef WORD64
220266e564dSmrg
221266e564dSmrg#define EXTRACT_CARD16(_pBuf, _swap, _val) \
222266e564dSmrg{ \
223266e564dSmrg    _val = *((CARD16 *) _pBuf); \
224266e564dSmrg    _pBuf += 2; \
225266e564dSmrg    if (_swap) \
226266e564dSmrg        _val = lswaps (_val); \
227266e564dSmrg}
228266e564dSmrg
229266e564dSmrg#define EXTRACT_CARD32(_pBuf, _swap, _val) \
230266e564dSmrg{ \
231266e564dSmrg    _val = *((CARD32 *) _pBuf); \
232266e564dSmrg    _pBuf += 4; \
233266e564dSmrg    if (_swap) \
234266e564dSmrg        _val = lswapl (_val); \
235266e564dSmrg}
236266e564dSmrg
237266e564dSmrg#else /* WORD64 */
238266e564dSmrg
239266e564dSmrg#define EXTRACT_CARD16(_pBuf, _swap, _val) \
240266e564dSmrg{ \
241266e564dSmrg    _val = *(_pBuf + 0) & 0xff; 	/* 0xff incase _pBuf is signed */ \
242266e564dSmrg    _val <<= 8; \
243266e564dSmrg    _val |= *(_pBuf + 1) & 0xff;\
244266e564dSmrg    _pBuf += 2; \
245266e564dSmrg    if (_swap) \
246266e564dSmrg        _val = lswaps (_val); \
247266e564dSmrg}
248266e564dSmrg
249266e564dSmrg#define EXTRACT_CARD32(_pBuf, _swap, _val) \
250266e564dSmrg{ \
251266e564dSmrg    _val = *(_pBuf + 0) & 0xff; 	/* 0xff incase _pBuf is signed */ \
252266e564dSmrg    _val <<= 8; \
253266e564dSmrg    _val |= *(_pBuf + 1) & 0xff;\
254266e564dSmrg    _val <<= 8; \
255266e564dSmrg    _val |= *(_pBuf + 2) & 0xff;\
256266e564dSmrg    _val <<= 8; \
257266e564dSmrg    _val |= *(_pBuf + 3) & 0xff;\
258266e564dSmrg    _pBuf += 4; \
259266e564dSmrg    if (_swap) \
260266e564dSmrg        _val = lswapl (_val); \
261266e564dSmrg}
262266e564dSmrg
263266e564dSmrg#endif /* WORD64 */
264266e564dSmrg
265266e564dSmrg#define EXTRACT_STRING(_pBuf, _swap, _string) \
266266e564dSmrg{ \
267266e564dSmrg    CARD16 _len; \
268266e564dSmrg    EXTRACT_CARD16 (_pBuf, _swap, _len); \
269266e564dSmrg    _string = (char *) malloc (_len + 1); \
270266e564dSmrg    memcpy (_string, _pBuf, _len); \
271266e564dSmrg    _pBuf += _len; \
272266e564dSmrg    _string[_len] = '\0'; \
273266e564dSmrg    if (PAD32 (2 + _len)) \
274266e564dSmrg        _pBuf += PAD32 (2 + _len); \
275266e564dSmrg}
276266e564dSmrg
277266e564dSmrg#define EXTRACT_LISTOF_STRING(_pBuf, _swap, _count, _strings) \
278266e564dSmrg{ \
279266e564dSmrg    int _i; \
280266e564dSmrg    for (_i = 0; _i < _count; _i++) \
281266e564dSmrg        EXTRACT_STRING (_pBuf, _swap, _strings[_i]); \
282266e564dSmrg}
283266e564dSmrg
284266e564dSmrg
285266e564dSmrg#define SKIP_STRING(_pBuf, _swap, _end, _bail) \
286266e564dSmrg{ \
287266e564dSmrg    CARD16 _len; \
288266e564dSmrg    EXTRACT_CARD16 (_pBuf, _swap, _len); \
289266e564dSmrg    _pBuf += _len + PAD32(2+_len); \
290266e564dSmrg    if (_pBuf > _end) { \
291266e564dSmrg	_bail; \
292266e564dSmrg    } \
293266e564dSmrg}
294266e564dSmrg
295266e564dSmrg#define SKIP_LISTOF_STRING(_pBuf, _swap, _count, _end, _bail) \
296266e564dSmrg{ \
297266e564dSmrg    int _i; \
298266e564dSmrg    for (_i = 0; _i < _count; _i++) \
299266e564dSmrg        SKIP_STRING (_pBuf, _swap, _end, _bail); \
300266e564dSmrg}
301266e564dSmrg
302266e564dSmrg
303266e564dSmrg
304266e564dSmrg/*
305266e564dSmrg * Byte swapping
306266e564dSmrg */
307266e564dSmrg
308266e564dSmrg/* byte swap a long literal */
309266e564dSmrg#define lswapl(_val) ((((_val) & 0xff) << 24) |\
310266e564dSmrg		   (((_val) & 0xff00) << 8) |\
311266e564dSmrg		   (((_val) & 0xff0000) >> 8) |\
312266e564dSmrg		   (((_val) >> 24) & 0xff))
313266e564dSmrg
314266e564dSmrg/* byte swap a short literal */
315266e564dSmrg#define lswaps(_val) ((((_val) & 0xff) << 8) | (((_val) >> 8) & 0xff))
316266e564dSmrg
317266e564dSmrg
318266e564dSmrg
319266e564dSmrg/*
320266e564dSmrg * ICE replies (not processed via callbacks because we block)
321266e564dSmrg */
322266e564dSmrg
323266e564dSmrg#define ICE_CONNECTION_REPLY	1
324266e564dSmrg#define ICE_CONNECTION_ERROR	2
325266e564dSmrg#define ICE_PROTOCOL_REPLY	3
326266e564dSmrg#define ICE_PROTOCOL_ERROR	4
327266e564dSmrg
328266e564dSmrgtypedef struct {
329266e564dSmrg    int		  type;
330266e564dSmrg    int 	  version_index;
331266e564dSmrg    char	  *vendor;
332266e564dSmrg    char          *release;
333266e564dSmrg} _IceConnectionReply;
334266e564dSmrg
335266e564dSmrgtypedef struct {
336266e564dSmrg    int		  type;
337266e564dSmrg    char	  *error_message;
338266e564dSmrg} _IceConnectionError;
339266e564dSmrg
340266e564dSmrgtypedef struct {
341266e564dSmrg    int		  type;
342266e564dSmrg    int 	  major_opcode;
343266e564dSmrg    int		  version_index;
344266e564dSmrg    char	  *vendor;
345266e564dSmrg    char	  *release;
346266e564dSmrg} _IceProtocolReply;
347266e564dSmrg
348266e564dSmrgtypedef struct {
349266e564dSmrg    int		  type;
350266e564dSmrg    char	  *error_message;
351266e564dSmrg} _IceProtocolError;
352266e564dSmrg
353266e564dSmrg
354266e564dSmrgtypedef union {
355266e564dSmrg    int			type;
356266e564dSmrg    _IceConnectionReply	connection_reply;
357266e564dSmrg    _IceConnectionError	connection_error;
358266e564dSmrg    _IceProtocolReply	protocol_reply;
359266e564dSmrg    _IceProtocolError	protocol_error;
360266e564dSmrg} _IceReply;
361266e564dSmrg
362266e564dSmrg
363266e564dSmrg/*
364266e564dSmrg * Watch for ICE connection create/destroy.
365266e564dSmrg */
366266e564dSmrg
367266e564dSmrgtypedef struct _IceWatchedConnection {
368266e564dSmrg    IceConn				iceConn;
369266e564dSmrg    IcePointer				watch_data;
370266e564dSmrg    struct _IceWatchedConnection	*next;
371266e564dSmrg} _IceWatchedConnection;
372266e564dSmrg
373266e564dSmrgtypedef struct _IceWatchProc {
374266e564dSmrg    IceWatchProc		watch_proc;
375266e564dSmrg    IcePointer			client_data;
376266e564dSmrg    _IceWatchedConnection	*watched_connections;
377266e564dSmrg    struct _IceWatchProc	*next;
378266e564dSmrg} _IceWatchProc;
379266e564dSmrg
380266e564dSmrg
381266e564dSmrg/*
382266e564dSmrg * Locking
383266e564dSmrg */
384266e564dSmrg
385266e564dSmrg#define IceLockConn(_iceConn)
386266e564dSmrg#define IceUnlockConn(_iceConn)
387266e564dSmrg
388266e564dSmrg
389266e564dSmrg/*
390266e564dSmrg * Extern declarations
391266e564dSmrg */
392266e564dSmrg
393266e564dSmrgextern IceConn     	_IceConnectionObjs[];
394266e564dSmrgextern char	    	*_IceConnectionStrings[];
395266e564dSmrgextern int     		_IceConnectionCount;
396266e564dSmrg
397266e564dSmrgextern _IceProtocol	_IceProtocols[];
398266e564dSmrgextern int         	_IceLastMajorOpcode;
399266e564dSmrg
400266e564dSmrgextern int		_IceAuthCount;
401266e564dSmrgextern char		*_IceAuthNames[];
402266e564dSmrgextern IcePoAuthProc	_IcePoAuthProcs[];
403266e564dSmrgextern IcePaAuthProc	_IcePaAuthProcs[];
404266e564dSmrg
405266e564dSmrgextern int		_IceVersionCount;
406266e564dSmrgextern _IceVersion	_IceVersions[];
407266e564dSmrg
408266e564dSmrgextern _IceWatchProc	*_IceWatchProcs;
409266e564dSmrg
410266e564dSmrgextern IceErrorHandler   _IceErrorHandler;
411266e564dSmrgextern IceIOErrorHandler _IceIOErrorHandler;
412266e564dSmrg
413266e564dSmrg
414266e564dSmrgextern void _IceErrorBadMajor (
415266e564dSmrg    IceConn		/* iceConn */,
416266e564dSmrg    int			/* offendingMajor */,
417266e564dSmrg    int			/* offendingMinor */,
418266e564dSmrg    int			/* severity */
419266e564dSmrg);
420266e564dSmrg
421266e564dSmrgextern void _IceErrorNoAuthentication (
422266e564dSmrg    IceConn		/* iceConn */,
423266e564dSmrg    int			/* offendingMinor */
424266e564dSmrg);
425266e564dSmrg
426266e564dSmrgextern void _IceErrorNoVersion (
427266e564dSmrg    IceConn		/* iceConn */,
428266e564dSmrg    int			/* offendingMinor */
429266e564dSmrg);
430266e564dSmrg
431266e564dSmrgextern void _IceErrorSetupFailed (
432266e564dSmrg    IceConn		/* iceConn */,
433266e564dSmrg    int			/* offendingMinor */,
434266e564dSmrg    char *		/* reason */
435266e564dSmrg);
436266e564dSmrg
437266e564dSmrgextern void _IceErrorAuthenticationRejected (
438266e564dSmrg    IceConn		/* iceConn */,
439266e564dSmrg    int			/* offendingMinor */,
440266e564dSmrg    char *		/* reason */
441266e564dSmrg);
442266e564dSmrg
443266e564dSmrgextern void _IceErrorAuthenticationFailed (
444266e564dSmrg    IceConn		/* iceConn */,
445266e564dSmrg    int			/* offendingMinor */,
446266e564dSmrg    char *		/* reason */
447266e564dSmrg);
448266e564dSmrg
449266e564dSmrgextern void _IceErrorProtocolDuplicate (
450266e564dSmrg    IceConn		/* iceConn */,
451266e564dSmrg    char *		/* protocolName */
452266e564dSmrg);
453266e564dSmrg
454266e564dSmrgextern void _IceErrorMajorOpcodeDuplicate (
455266e564dSmrg    IceConn		/* iceConn */,
456266e564dSmrg    int			/* majorOpcode */
457266e564dSmrg);
458266e564dSmrg
459266e564dSmrgextern void _IceErrorUnknownProtocol (
460266e564dSmrg    IceConn		/* iceConn */,
461266e564dSmrg    char *		/* protocolName */
462266e564dSmrg);
463266e564dSmrg
464266e564dSmrgextern void _IceAddOpcodeMapping (
465266e564dSmrg    IceConn		/* iceConn */,
466266e564dSmrg    int			/* hisOpcode */,
467266e564dSmrg    int			/* myOpcode */
468266e564dSmrg);
469266e564dSmrg
470266e564dSmrgextern char *_IceGetPeerName (
471266e564dSmrg    IceConn		/* iceConn */
472266e564dSmrg);
473266e564dSmrg
474266e564dSmrgextern void _IceFreeConnection (
475266e564dSmrg    IceConn		/* iceConn */
476266e564dSmrg);
477266e564dSmrg
478266e564dSmrgextern void _IceAddReplyWait (
479266e564dSmrg    IceConn		/* iceConn */,
480266e564dSmrg    IceReplyWaitInfo *	/* replyWait */
481266e564dSmrg);
482266e564dSmrg
483266e564dSmrgextern IceReplyWaitInfo *_IceSearchReplyWaits (
484266e564dSmrg    IceConn		/* iceConn */,
485266e564dSmrg    int			/* majorOpcode */
486266e564dSmrg);
487266e564dSmrg
488266e564dSmrgextern void _IceSetReplyReady (
489266e564dSmrg    IceConn		/* iceConn */,
490266e564dSmrg    IceReplyWaitInfo *	/* replyWait */
491266e564dSmrg);
492266e564dSmrg
493266e564dSmrgextern Bool _IceCheckReplyReady (
494266e564dSmrg    IceConn		/* iceConn */,
495266e564dSmrg    IceReplyWaitInfo *	/* replyWait */
496266e564dSmrg);
497266e564dSmrg
498266e564dSmrgextern void _IceConnectionOpened (
499266e564dSmrg    IceConn		/* iceConn */
500266e564dSmrg);
501266e564dSmrg
502266e564dSmrgextern void _IceConnectionClosed (
503266e564dSmrg    IceConn		/* iceConn */
504266e564dSmrg);
505266e564dSmrg
506266e564dSmrgextern void _IceGetPoAuthData (
507266e564dSmrg    char *		/* protocol_name */,
508266e564dSmrg    char *		/* address */,
509266e564dSmrg    char *		/* auth_name */,
510266e564dSmrg    unsigned short *	/* auth_data_length_ret */,
511266e564dSmrg    char **		/* auth_data_ret */
512266e564dSmrg);
513266e564dSmrg
514266e564dSmrgextern void _IceGetPaAuthData (
515266e564dSmrg    char *		/* protocol_name */,
516266e564dSmrg    char *		/* address */,
517266e564dSmrg    char *		/* auth_name */,
518266e564dSmrg    unsigned short *	/* auth_data_length_ret */,
519266e564dSmrg    char **		/* auth_data_ret */
520266e564dSmrg);
521266e564dSmrg
522266e564dSmrgextern void _IceGetPoValidAuthIndices (
523266e564dSmrg    char *		/* protocol_name */,
524266e564dSmrg    char *		/* address */,
525266e564dSmrg    int			/* num_auth_names */,
526266e564dSmrg    char **		/* auth_names */,
527266e564dSmrg    int	*		/* num_indices_ret */,
528266e564dSmrg    int	*		/* indices_ret */
529266e564dSmrg);
530266e564dSmrg
531266e564dSmrgextern void _IceGetPaValidAuthIndices (
532266e564dSmrg    char *		/* protocol_name */,
533266e564dSmrg    char *		/* address */,
534266e564dSmrg    int			/* num_auth_names */,
535266e564dSmrg    char **		/* auth_names */,
536266e564dSmrg    int	*		/* num_indices_ret */,
537266e564dSmrg    int	*		/* indices_ret */
538266e564dSmrg);
539266e564dSmrg
540266e564dSmrg#endif /* _ICELIBINT_H_ */
541