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