Xtrans.h revision 73143b9a
173143b9aSmrg/*
273143b9aSmrg
373143b9aSmrgCopyright 1993, 1994, 1998  The Open Group
473143b9aSmrg
573143b9aSmrgPermission to use, copy, modify, distribute, and sell this software and its
673143b9aSmrgdocumentation for any purpose is hereby granted without fee, provided that
773143b9aSmrgthe above copyright notice appear in all copies and that both that
873143b9aSmrgcopyright notice and this permission notice appear in supporting
973143b9aSmrgdocumentation.
1073143b9aSmrg
1173143b9aSmrgThe above copyright notice and this permission notice shall be included
1273143b9aSmrgin all copies or substantial portions of the Software.
1373143b9aSmrg
1473143b9aSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1573143b9aSmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1673143b9aSmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1773143b9aSmrgIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
1873143b9aSmrgOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
1973143b9aSmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
2073143b9aSmrgOTHER DEALINGS IN THE SOFTWARE.
2173143b9aSmrg
2273143b9aSmrgExcept as contained in this notice, the name of The Open Group shall
2373143b9aSmrgnot be used in advertising or otherwise to promote the sale, use or
2473143b9aSmrgother dealings in this Software without prior written authorization
2573143b9aSmrgfrom The Open Group.
2673143b9aSmrg
2773143b9aSmrg * Copyright 1993, 1994 NCR Corporation - Dayton, Ohio, USA
2873143b9aSmrg *
2973143b9aSmrg * All Rights Reserved
3073143b9aSmrg *
3173143b9aSmrg * Permission to use, copy, modify, and distribute this software and its
3273143b9aSmrg * documentation for any purpose and without fee is hereby granted, provided
3373143b9aSmrg * that the above copyright notice appear in all copies and that both that
3473143b9aSmrg * copyright notice and this permission notice appear in supporting
3573143b9aSmrg * documentation, and that the name NCR not be used in advertising
3673143b9aSmrg * or publicity pertaining to distribution of the software without specific,
3773143b9aSmrg * written prior permission.  NCR makes no representations about the
3873143b9aSmrg * suitability of this software for any purpose.  It is provided "as is"
3973143b9aSmrg * without express or implied warranty.
4073143b9aSmrg *
4173143b9aSmrg * NCR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
4273143b9aSmrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
4373143b9aSmrg * NO EVENT SHALL NCR BE LIABLE FOR ANY SPECIAL, INDIRECT OR
4473143b9aSmrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
4573143b9aSmrg * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
4673143b9aSmrg * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
4773143b9aSmrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4873143b9aSmrg */
4973143b9aSmrg
5073143b9aSmrg#ifndef _XTRANS_H_
5173143b9aSmrg#define _XTRANS_H_
5273143b9aSmrg
5373143b9aSmrg#include <X11/Xfuncproto.h>
5473143b9aSmrg#include <X11/Xos.h>
5573143b9aSmrg
5673143b9aSmrg#ifndef WIN32
5773143b9aSmrg#ifndef Lynx
5873143b9aSmrg#include <sys/socket.h>
5973143b9aSmrg#else
6073143b9aSmrg#include <socket.h>
6173143b9aSmrg#endif
6273143b9aSmrg#endif
6373143b9aSmrg
6473143b9aSmrg
6573143b9aSmrg/*
6673143b9aSmrg * Set the functions names according to where this code is being compiled.
6773143b9aSmrg */
6873143b9aSmrg
6973143b9aSmrg#ifdef X11_t
7073143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
7173143b9aSmrg#define TRANS(func) _X11Trans##func
7273143b9aSmrg#else
7373143b9aSmrg#define TRANS(func) _X11Trans/**/func
7473143b9aSmrg#endif
7573143b9aSmrg#ifdef XTRANSDEBUG
7673143b9aSmrgstatic char* __xtransname = "_X11Trans";
7773143b9aSmrg#endif
7873143b9aSmrg#endif /* X11_t */
7973143b9aSmrg
8073143b9aSmrg#ifdef XSERV_t
8173143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
8273143b9aSmrg#define TRANS(func) _XSERVTrans##func
8373143b9aSmrg#else
8473143b9aSmrg#define TRANS(func) _XSERVTrans/**/func
8573143b9aSmrg#endif
8673143b9aSmrg#ifdef XTRANSDEBUG
8773143b9aSmrgstatic char* __xtransname = "_XSERVTrans";
8873143b9aSmrg#endif
8973143b9aSmrg#define X11_t
9073143b9aSmrg#endif /* XSERV_t */
9173143b9aSmrg
9273143b9aSmrg#ifdef XIM_t
9373143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
9473143b9aSmrg#define TRANS(func) _XimXTrans##func
9573143b9aSmrg#else
9673143b9aSmrg#define TRANS(func) _XimXTrans/**/func
9773143b9aSmrg#endif
9873143b9aSmrg#ifdef XTRANSDEBUG
9973143b9aSmrgstatic char* __xtransname = "_XimTrans";
10073143b9aSmrg#endif
10173143b9aSmrg#endif /* XIM_t */
10273143b9aSmrg
10373143b9aSmrg#ifdef FS_t
10473143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
10573143b9aSmrg#define TRANS(func) _FSTrans##func
10673143b9aSmrg#else
10773143b9aSmrg#define TRANS(func) _FSTrans/**/func
10873143b9aSmrg#endif
10973143b9aSmrg#ifdef XTRANSDEBUG
11073143b9aSmrgstatic char* __xtransname = "_FSTrans";
11173143b9aSmrg#endif
11273143b9aSmrg#endif /* FS_t */
11373143b9aSmrg
11473143b9aSmrg#ifdef FONT_t
11573143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
11673143b9aSmrg#define TRANS(func) _FontTrans##func
11773143b9aSmrg#else
11873143b9aSmrg#define TRANS(func) _FontTrans/**/func
11973143b9aSmrg#endif
12073143b9aSmrg#ifdef XTRANSDEBUG
12173143b9aSmrgstatic char* __xtransname = "_FontTrans";
12273143b9aSmrg#endif
12373143b9aSmrg#endif /* FONT_t */
12473143b9aSmrg
12573143b9aSmrg#ifdef ICE_t
12673143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
12773143b9aSmrg#define TRANS(func) _IceTrans##func
12873143b9aSmrg#else
12973143b9aSmrg#define TRANS(func) _IceTrans/**/func
13073143b9aSmrg#endif
13173143b9aSmrg#ifdef XTRANSDEBUG
13273143b9aSmrgstatic char* __xtransname = "_IceTrans";
13373143b9aSmrg#endif
13473143b9aSmrg#endif /* ICE_t */
13573143b9aSmrg
13673143b9aSmrg#ifdef TEST_t
13773143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
13873143b9aSmrg#define TRANS(func) _TESTTrans##func
13973143b9aSmrg#else
14073143b9aSmrg#define TRANS(func) _TESTTrans/**/func
14173143b9aSmrg#endif
14273143b9aSmrg#ifdef XTRANSDEBUG
14373143b9aSmrgstatic char* __xtransname = "_TESTTrans";
14473143b9aSmrg#endif
14573143b9aSmrg#endif /* TEST_t */
14673143b9aSmrg
14773143b9aSmrg#ifdef LBXPROXY_t
14873143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
14973143b9aSmrg#define TRANS(func) _LBXPROXYTrans##func
15073143b9aSmrg#else
15173143b9aSmrg#define TRANS(func) _LBXPROXYTrans/**/func
15273143b9aSmrg#endif
15373143b9aSmrg#define X11_t		/* The server defines this - so should the LBX proxy */
15473143b9aSmrg#ifdef XTRANSDEBUG
15573143b9aSmrgstatic char* __xtransname = "_LBXPROXYTrans";
15673143b9aSmrg#endif
15773143b9aSmrg#endif /* LBXPROXY_t */
15873143b9aSmrg
15973143b9aSmrg#if !defined(TRANS)
16073143b9aSmrg#if !defined(UNIXCPP) || defined(ANSICPP)
16173143b9aSmrg#define TRANS(func) _XTrans##func
16273143b9aSmrg#else
16373143b9aSmrg#define TRANS(func) _XTrans/**/func
16473143b9aSmrg#endif
16573143b9aSmrg#ifdef XTRANSDEBUG
16673143b9aSmrgstatic char* __xtransname = "_XTrans";
16773143b9aSmrg#endif
16873143b9aSmrg#endif /* !TRANS */
16973143b9aSmrg
17073143b9aSmrg
17173143b9aSmrg/*
17273143b9aSmrg * Create a single address structure that can be used wherever
17373143b9aSmrg * an address structure is needed. struct sockaddr is not big enough
17473143b9aSmrg * to hold a sockadd_un, so we create this definition to have a single
17573143b9aSmrg * structure that is big enough for all the structures we might need.
17673143b9aSmrg *
17773143b9aSmrg * This structure needs to be independent of the socket/TLI interface used.
17873143b9aSmrg */
17973143b9aSmrg
18073143b9aSmrg#if defined(IPv6) && defined(AF_INET6)
18173143b9aSmrgtypedef struct sockaddr_storage Xtransaddr;
18273143b9aSmrg#else
18373143b9aSmrg#define XTRANS_MAX_ADDR_LEN	128	/* large enough to hold sun_path */
18473143b9aSmrg
18573143b9aSmrgtypedef	struct {
18673143b9aSmrg    unsigned char	addr[XTRANS_MAX_ADDR_LEN];
18773143b9aSmrg} Xtransaddr;
18873143b9aSmrg#endif
18973143b9aSmrg
19073143b9aSmrg#ifdef LONG64
19173143b9aSmrgtypedef int BytesReadable_t;
19273143b9aSmrg#else
19373143b9aSmrgtypedef long BytesReadable_t;
19473143b9aSmrg#endif
19573143b9aSmrg
19673143b9aSmrg
19773143b9aSmrg#if defined(WIN32) || (defined(USG) && !defined(CRAY) && !defined(umips) && !defined(MOTOROLA) && !defined(uniosu) && !defined(__sxg__))
19873143b9aSmrg
19973143b9aSmrg/*
20073143b9aSmrg *      TRANS(Readv) and TRANS(Writev) use struct iovec, normally found
20173143b9aSmrg *      in Berkeley systems in <sys/uio.h>.  See the readv(2) and writev(2)
20273143b9aSmrg *      manual pages for details.
20373143b9aSmrg */
20473143b9aSmrg
20573143b9aSmrgstruct iovec {
20673143b9aSmrg    caddr_t iov_base;
20773143b9aSmrg    int iov_len;
20873143b9aSmrg};
20973143b9aSmrg
21073143b9aSmrg#else
21173143b9aSmrg#ifndef Lynx
21273143b9aSmrg#include <sys/uio.h>
21373143b9aSmrg#else
21473143b9aSmrg#include <uio.h>
21573143b9aSmrg#endif
21673143b9aSmrg#endif
21773143b9aSmrg
21873143b9aSmrgtypedef struct _XtransConnInfo *XtransConnInfo;
21973143b9aSmrg
22073143b9aSmrg
22173143b9aSmrg/*
22273143b9aSmrg * Transport Option definitions
22373143b9aSmrg */
22473143b9aSmrg
22573143b9aSmrg#define TRANS_NONBLOCKING	1
22673143b9aSmrg#define	TRANS_CLOSEONEXEC	2
22773143b9aSmrg
22873143b9aSmrg
22973143b9aSmrg/*
23073143b9aSmrg * Return values of Connect (0 is success)
23173143b9aSmrg */
23273143b9aSmrg
23373143b9aSmrg#define TRANS_CONNECT_FAILED 	-1
23473143b9aSmrg#define TRANS_TRY_CONNECT_AGAIN -2
23573143b9aSmrg#define TRANS_IN_PROGRESS	-3
23673143b9aSmrg
23773143b9aSmrg
23873143b9aSmrg/*
23973143b9aSmrg * Return values of CreateListener (0 is success)
24073143b9aSmrg */
24173143b9aSmrg
24273143b9aSmrg#define TRANS_CREATE_LISTENER_FAILED 	-1
24373143b9aSmrg#define TRANS_ADDR_IN_USE		-2
24473143b9aSmrg
24573143b9aSmrg
24673143b9aSmrg/*
24773143b9aSmrg * Return values of Accept (0 is success)
24873143b9aSmrg */
24973143b9aSmrg
25073143b9aSmrg#define TRANS_ACCEPT_BAD_MALLOC			-1
25173143b9aSmrg#define TRANS_ACCEPT_FAILED 			-2
25273143b9aSmrg#define TRANS_ACCEPT_MISC_ERROR			-3
25373143b9aSmrg
25473143b9aSmrg
25573143b9aSmrg/*
25673143b9aSmrg * ResetListener return values
25773143b9aSmrg */
25873143b9aSmrg
25973143b9aSmrg#define TRANS_RESET_NOOP	1
26073143b9aSmrg#define TRANS_RESET_NEW_FD	2
26173143b9aSmrg#define TRANS_RESET_FAILURE	3
26273143b9aSmrg
26373143b9aSmrg
26473143b9aSmrg/*
26573143b9aSmrg * Function prototypes for the exposed interface
26673143b9aSmrg */
26773143b9aSmrg
26873143b9aSmrgvoid TRANS(FreeConnInfo) (
26973143b9aSmrg    XtransConnInfo 	/* ciptr */
27073143b9aSmrg);
27173143b9aSmrg
27273143b9aSmrg#ifdef TRANS_CLIENT
27373143b9aSmrg
27473143b9aSmrgXtransConnInfo TRANS(OpenCOTSClient)(
27573143b9aSmrg    char *		/* address */
27673143b9aSmrg);
27773143b9aSmrg
27873143b9aSmrg#endif /* TRANS_CLIENT */
27973143b9aSmrg
28073143b9aSmrg#ifdef TRANS_SERVER
28173143b9aSmrg
28273143b9aSmrgXtransConnInfo TRANS(OpenCOTSServer)(
28373143b9aSmrg    char *		/* address */
28473143b9aSmrg);
28573143b9aSmrg
28673143b9aSmrg#endif /* TRANS_SERVER */
28773143b9aSmrg
28873143b9aSmrg#ifdef TRANS_CLIENT
28973143b9aSmrg
29073143b9aSmrgXtransConnInfo TRANS(OpenCLTSClient)(
29173143b9aSmrg    char *		/* address */
29273143b9aSmrg);
29373143b9aSmrg
29473143b9aSmrg#endif /* TRANS_CLIENT */
29573143b9aSmrg
29673143b9aSmrg#ifdef TRANS_SERVER
29773143b9aSmrg
29873143b9aSmrgXtransConnInfo TRANS(OpenCLTSServer)(
29973143b9aSmrg    char *		/* address */
30073143b9aSmrg);
30173143b9aSmrg
30273143b9aSmrg#endif /* TRANS_SERVER */
30373143b9aSmrg
30473143b9aSmrg#ifdef TRANS_REOPEN
30573143b9aSmrg
30673143b9aSmrgXtransConnInfo TRANS(ReopenCOTSServer)(
30773143b9aSmrg    int,		/* trans_id */
30873143b9aSmrg    int,		/* fd */
30973143b9aSmrg    char *		/* port */
31073143b9aSmrg);
31173143b9aSmrg
31273143b9aSmrgXtransConnInfo TRANS(ReopenCLTSServer)(
31373143b9aSmrg    int,		/* trans_id */
31473143b9aSmrg    int,		/* fd */
31573143b9aSmrg    char *		/* port */
31673143b9aSmrg);
31773143b9aSmrg
31873143b9aSmrgint TRANS(GetReopenInfo)(
31973143b9aSmrg    XtransConnInfo,	/* ciptr */
32073143b9aSmrg    int *,		/* trans_id */
32173143b9aSmrg    int *,		/* fd */
32273143b9aSmrg    char **		/* port */
32373143b9aSmrg);
32473143b9aSmrg
32573143b9aSmrg#endif /* TRANS_REOPEN */
32673143b9aSmrg
32773143b9aSmrg
32873143b9aSmrgint TRANS(SetOption)(
32973143b9aSmrg    XtransConnInfo,	/* ciptr */
33073143b9aSmrg    int,		/* option */
33173143b9aSmrg    int			/* arg */
33273143b9aSmrg);
33373143b9aSmrg
33473143b9aSmrg#ifdef TRANS_SERVER
33573143b9aSmrg
33673143b9aSmrgint TRANS(CreateListener)(
33773143b9aSmrg    XtransConnInfo,	/* ciptr */
33873143b9aSmrg    char *,		/* port */
33973143b9aSmrg    unsigned int	/* flags */
34073143b9aSmrg);
34173143b9aSmrg
34273143b9aSmrgint TRANS(NoListen) (
34373143b9aSmrg    char*               /* protocol*/
34473143b9aSmrg);
34573143b9aSmrg
34673143b9aSmrgint TRANS(ResetListener)(
34773143b9aSmrg    XtransConnInfo	/* ciptr */
34873143b9aSmrg);
34973143b9aSmrg
35073143b9aSmrgXtransConnInfo TRANS(Accept)(
35173143b9aSmrg    XtransConnInfo,	/* ciptr */
35273143b9aSmrg    int *		/* status */
35373143b9aSmrg);
35473143b9aSmrg
35573143b9aSmrg#endif /* TRANS_SERVER */
35673143b9aSmrg
35773143b9aSmrg#ifdef TRANS_CLIENT
35873143b9aSmrg
35973143b9aSmrgint TRANS(Connect)(
36073143b9aSmrg    XtransConnInfo,	/* ciptr */
36173143b9aSmrg    char *		/* address */
36273143b9aSmrg);
36373143b9aSmrg
36473143b9aSmrg#endif /* TRANS_CLIENT */
36573143b9aSmrg
36673143b9aSmrgint TRANS(BytesReadable)(
36773143b9aSmrg    XtransConnInfo,	/* ciptr */
36873143b9aSmrg    BytesReadable_t *	/* pend */
36973143b9aSmrg);
37073143b9aSmrg
37173143b9aSmrgint TRANS(Read)(
37273143b9aSmrg    XtransConnInfo,	/* ciptr */
37373143b9aSmrg    char *,		/* buf */
37473143b9aSmrg    int			/* size */
37573143b9aSmrg);
37673143b9aSmrg
37773143b9aSmrgint TRANS(Write)(
37873143b9aSmrg    XtransConnInfo,	/* ciptr */
37973143b9aSmrg    char *,		/* buf */
38073143b9aSmrg    int			/* size */
38173143b9aSmrg);
38273143b9aSmrg
38373143b9aSmrgint TRANS(Readv)(
38473143b9aSmrg    XtransConnInfo,	/* ciptr */
38573143b9aSmrg    struct iovec *,	/* buf */
38673143b9aSmrg    int			/* size */
38773143b9aSmrg);
38873143b9aSmrg
38973143b9aSmrgint TRANS(Writev)(
39073143b9aSmrg    XtransConnInfo,	/* ciptr */
39173143b9aSmrg    struct iovec *,	/* buf */
39273143b9aSmrg    int			/* size */
39373143b9aSmrg);
39473143b9aSmrg
39573143b9aSmrgint TRANS(Disconnect)(
39673143b9aSmrg    XtransConnInfo	/* ciptr */
39773143b9aSmrg);
39873143b9aSmrg
39973143b9aSmrgint TRANS(Close)(
40073143b9aSmrg    XtransConnInfo	/* ciptr */
40173143b9aSmrg);
40273143b9aSmrg
40373143b9aSmrgint TRANS(CloseForCloning)(
40473143b9aSmrg    XtransConnInfo	/* ciptr */
40573143b9aSmrg);
40673143b9aSmrg
40773143b9aSmrgint TRANS(IsLocal)(
40873143b9aSmrg    XtransConnInfo	/* ciptr */
40973143b9aSmrg);
41073143b9aSmrg
41173143b9aSmrgint TRANS(GetMyAddr)(
41273143b9aSmrg    XtransConnInfo,	/* ciptr */
41373143b9aSmrg    int *,		/* familyp */
41473143b9aSmrg    int *,		/* addrlenp */
41573143b9aSmrg    Xtransaddr **	/* addrp */
41673143b9aSmrg);
41773143b9aSmrg
41873143b9aSmrgint TRANS(GetPeerAddr)(
41973143b9aSmrg    XtransConnInfo,	/* ciptr */
42073143b9aSmrg    int *,		/* familyp */
42173143b9aSmrg    int *,		/* addrlenp */
42273143b9aSmrg    Xtransaddr **	/* addrp */
42373143b9aSmrg);
42473143b9aSmrg
42573143b9aSmrgint TRANS(GetConnectionNumber)(
42673143b9aSmrg    XtransConnInfo	/* ciptr */
42773143b9aSmrg);
42873143b9aSmrg
42973143b9aSmrg#ifdef TRANS_SERVER
43073143b9aSmrg
43173143b9aSmrgint TRANS(MakeAllCOTSServerListeners)(
43273143b9aSmrg    char *,		/* port */
43373143b9aSmrg    int *,		/* partial */
43473143b9aSmrg    int *,		/* count_ret */
43573143b9aSmrg    XtransConnInfo **	/* ciptrs_ret */
43673143b9aSmrg);
43773143b9aSmrg
43873143b9aSmrgint TRANS(MakeAllCLTSServerListeners)(
43973143b9aSmrg    char *,		/* port */
44073143b9aSmrg    int *,		/* partial */
44173143b9aSmrg    int *,		/* count_ret */
44273143b9aSmrg    XtransConnInfo **	/* ciptrs_ret */
44373143b9aSmrg);
44473143b9aSmrg
44573143b9aSmrg#endif /* TRANS_SERVER */
44673143b9aSmrg
44773143b9aSmrg
44873143b9aSmrg/*
44973143b9aSmrg * Function Prototypes for Utility Functions.
45073143b9aSmrg */
45173143b9aSmrg
45273143b9aSmrg#ifdef X11_t
45373143b9aSmrg
45473143b9aSmrgint TRANS(ConvertAddress)(
45573143b9aSmrg    int *,		/* familyp */
45673143b9aSmrg    int *,		/* addrlenp */
45773143b9aSmrg    Xtransaddr **	/* addrp */
45873143b9aSmrg);
45973143b9aSmrg
46073143b9aSmrg#endif /* X11_t */
46173143b9aSmrg
46273143b9aSmrg#ifdef ICE_t
46373143b9aSmrg
46473143b9aSmrgchar *
46573143b9aSmrgTRANS(GetMyNetworkId)(
46673143b9aSmrg    XtransConnInfo	/* ciptr */
46773143b9aSmrg);
46873143b9aSmrg
46973143b9aSmrgchar *
47073143b9aSmrgTRANS(GetPeerNetworkId)(
47173143b9aSmrg    XtransConnInfo	/* ciptr */
47273143b9aSmrg);
47373143b9aSmrg
47473143b9aSmrg#endif /* ICE_t */
47573143b9aSmrg
47673143b9aSmrgint
47773143b9aSmrgTRANS(GetHostname) (
47873143b9aSmrg    char *	/* buf */,
47973143b9aSmrg    int 	/* maxlen */
48073143b9aSmrg);
48173143b9aSmrg
48273143b9aSmrg#if defined(WIN32) && (defined(TCPCONN) || defined(DNETCONN))
48373143b9aSmrgint TRANS(WSAStartup)();
48473143b9aSmrg#endif
48573143b9aSmrg
48673143b9aSmrg#endif /* _XTRANS_H_ */
487