1 /* -*-C-*-
2  *
3  * Project :	 TRACE
4  *
5  * File    :	 socklib.h
6  *
7  * Description
8  *
9  * Copyright (C) 1991 by Arne Helme, The TRACE project
10  *
11  * Rights to use this source is granted for all non-commercial and research
12  * uses. Creation of derivate forms of this software may be subject to
13  * restriction. Please obtain written permission from the author.
14  *
15  * This software is provided "as is" without any express or implied warranty.
16  *
17  * RCS:      $Id$
18  *
19  * Revision 1.1.1.1  1992/05/11  12:32:34  bjoerns
20  * XPilot v1.0
21  *
22  * Revision 1.2  91/10/02  08:38:20  08:38:20  arne (Arne Helme)
23  * "ANSI C prototypes added."
24  *
25  * Revision 1.1  91/10/02  08:34:53  08:34:53  arne (Arne Helme)
26  * Initial revision
27  *
28  */
29 
30 #ifndef _SOCKLIB_INCLUDED
31 #define _SOCKLIB_INCLUDED
32 
33 /* Error values and their meanings */
34 #define SL_ESOCKET		0	/* socket system call error */
35 #define SL_EBIND		1	/* bind system call error */
36 #define SL_ELISTEN		2	/* listen system call error */
37 #define SL_EHOSTNAME		3	/* Invalid host name format */
38 #define SL_ECONNECT		5	/* connect system call error */
39 #define SL_ESHUTD		6	/* shutdown system call error */
40 #define SL_ECLOSE		7	/* close system call error */
41 #define SL_EWRONGHOST		8	/* message arrived from unspec. host */
42 #define SL_ENORESP		9	/* No response */
43 #define SL_ERECEIVE		10	/* Receive error */
44 
45 #ifndef _SOCKLIB_LIBSOURCE
46 #ifdef VMS
47 #include <in.h>			/* for sockaddr_in */
48 #ifndef MAXHOSTNAMELEN
49 #define MAXHOSTNAMELEN		64
50 #endif
51 #else
52 #include <netinet/in.h>			/* for sockaddr_in */
53 #include <arpa/inet.h>			/* for in_addr */
54 #ifdef UNIX_SOCKETS
55 #include <sys/un.h>			/* for sockaddr_un */
56 #endif
57 #endif
58 extern int
59     sl_errno,
60     sl_timeout_s,
61     sl_timeout_us,
62     sl_default_retries,
63     sl_broadcast_enabled,
64     x11_socket;
65 #ifdef UNIX_SOCKETS
66 extern struct sockaddr_un
67 #else
68 #ifdef USEIP6
69 extern struct sockaddr_in6
70 #else
71 extern struct sockaddr_in
72 #endif
73 #endif
74     sl_dgram_lastaddr;
75 
76 #endif /* _SOCKLIB_LIBSOURCE */
77 
78 #ifdef __cplusplus
79 #ifndef __STDC__
80 #define __STDC__	1
81 #endif
82 #endif
83 
84 #ifdef __STDC__
85 extern void	SetTimeout(int, int);
86 extern int	CreateServerSocket(int);
87 extern int	GetPortNum(int);
88 extern char	*GetSockAddr(int);
89 extern int	GetPeerName(int, char *, int);
90 extern int	CreateClientSocket(char *, int);
91 extern int	SocketAccept(int);
92 extern int	SocketLinger(int);
93 extern int	SetSocketReceiveBufferSize(int, int);
94 extern int	SetSocketSendBufferSize(int, int);
95 extern int	SetSocketNoDelay(int, int);
96 extern int	SetSocketNonBlocking(int, int);
97 extern int	SetSocketBroadcast(int, int);
98 extern int	GetSocketError(int);
99 extern int	SocketReadable(int);
100 extern int	SocketRead(int, char *, int);
101 extern int	SocketWrite(int, char *, int);
102 extern int	SocketClose(int);
103 extern void	SocketCloseAll(void);
104 extern int	CreateDgramSocket(int);
105 extern int	CreateDgramAddrSocket(char *, int);
106 extern int	DgramBind(int fd, char *dotaddr, int port);
107 extern int	DgramConnect(int, char *, int);
108 extern int	DgramSend(int, char *, int, char *, int);
109 extern int	DgramReceiveAny(int, char *, int);
110 extern int	DgramReceive(int, char *, char *, int);
111 extern int	DgramReply(int, char *, int);
112 extern int	DgramRead(int fd, char *rbuf, int size);
113 extern int	DgramWrite(int fd, char *wbuf, int size);
114 extern int	DgramSendRec(int, char *, int, char *, int, char *, int);
115 extern char	*DgramLastaddr(int fd);
116 extern char	*DgramLastname(int fd);
117 extern int	DgramLastport(int fd);
118 extern void	DgramClose(int);
119 extern void	GetLocalHostName(char *, unsigned);
120 #else /* __STDC__ */
121 extern void	SetTimeout();
122 extern int	CreateServerSocket();
123 extern int	GetPortNum();
124 extern char	*GetSockAddr();
125 extern int	GetPeerName();
126 extern int	CreateClientSocket();
127 extern int	SocketAccept();
128 extern int	SocketLinger();
129 extern int	SetSocketReceiveBufferSize();
130 extern int	SetSocketSendBufferSize();
131 extern int	SetSocketNoDelay();
132 extern int	SetSocketNonBlocking();
133 extern int	SetSocketBroadcast();
134 extern int	GetSocketError();
135 extern int	SocketReadable();
136 extern int	SocketRead();
137 extern int	SocketWrite();
138 extern int	SocketClose();
139 extern int	CreateDgramSocket();
140 extern int	CreateDgramAddrSocket();
141 extern int	DgramBind();
142 extern int	DgramConnect();
143 extern int	DgramSend();
144 extern int	DgramReceiveAny();
145 extern int	DgramReceive();
146 extern int	DgramReply();
147 extern int	DgramRead();
148 extern int	DgramWrite();
149 extern int	DgramSendRec();
150 extern char	*DgramLastaddr();
151 extern char	*DgramLastname();
152 extern int	DgramLastport();
153 extern void	DgramClose();
154 extern void	GetLocalHostName();
155 #endif /* __STDC__ */
156 
157 #if !defined(select) && defined(__linux__)
158 #define select(N, R, W, E, T)	select((N),		\
159 	(fd_set*)(R), (fd_set*)(W), (fd_set*)(E), (T))
160 #endif
161 
162 #endif /* _SOCKLIB_INCLUDED */
163 
164 
165