]>
jfr.im git - irc/quakenet/snircd.git/blob - include/ircd_osdep.h
2 * @brief Public definitions and APIs for OS-dependent operations.
3 * @version $Id: ircd_osdep.h,v 1.7 2004/09/30 03:18:15 entrope Exp $
5 #ifndef INCLUDED_ircd_osdep_h
6 #define INCLUDED_ircd_osdep_h
12 /** Result of an input/output operation. */
13 typedef enum IOResult
{
14 IO_FAILURE
= -1, /**< Serious I/O error (not due to blocking). */
15 IO_BLOCKED
= 0, /**< I/O could not start because it would block. */
16 IO_SUCCESS
= 1 /**< I/O succeeded. */
20 * NOTE: osdep.c files should never need to know the actual size of a
21 * Client struct. When passed as a parameter, the pointer just needs
22 * to be forwarded to the enumeration function.
24 /** Callback function to show rusage information.
25 * @param cptr Client to receive the message.
26 * @param msg Text message to send to user.
28 typedef void (*EnumFn
)(struct Client
* cptr
, const char* msg
);
30 extern int os_disable_options(int fd
);
31 extern int os_get_rusage(struct Client
* cptr
, int uptime
, EnumFn enumerator
);
32 extern int os_get_sockerr(int fd
);
33 extern int os_get_sockname(int fd
, struct irc_sockaddr
* sin_out
);
34 extern int os_get_peername(int fd
, struct irc_sockaddr
* sin_out
);
35 extern int os_socket(const struct irc_sockaddr
* local
, int type
, const char* port_name
);
36 extern int os_accept(int fd
, struct irc_sockaddr
* peer
);
37 extern IOResult
os_sendto_nonb(int fd
, const char* buf
, unsigned int length
,
38 unsigned int* length_out
, unsigned int flags
,
39 const struct irc_sockaddr
* peer
);
40 extern IOResult
os_recv_nonb(int fd
, char* buf
, unsigned int length
,
41 unsigned int* length_out
);
42 extern IOResult
os_send_nonb(int fd
, const char* buf
, unsigned int length
,
43 unsigned int* length_out
);
44 extern IOResult
os_sendv_nonb(int fd
, struct MsgQ
* buf
,
45 unsigned int* len_in
, unsigned int* len_out
);
46 extern IOResult
os_recvfrom_nonb(int fd
, char* buf
, unsigned int len
,
47 unsigned int* length_out
,
48 struct irc_sockaddr
* from_out
);
49 extern IOResult
os_connect_nonb(int fd
, const struct irc_sockaddr
* sin
);
50 extern int os_set_fdlimit(unsigned int max_descriptors
);
51 extern int os_set_listen(int fd
, int backlog
);
52 extern int os_set_nonblocking(int fd
);
53 extern int os_set_reuseaddr(int fd
);
54 extern int os_set_sockbufs(int fd
, unsigned int ssize
, unsigned int rsize
);
55 extern int os_set_tos(int fd
,int tos
);
57 #endif /* INCLUDED_ircd_osdep_h */