]>
Commit | Line | Data |
---|---|---|
1 | /** @file 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 $ | |
4 | */ | |
5 | #ifndef INCLUDED_ircd_osdep_h | |
6 | #define INCLUDED_ircd_osdep_h | |
7 | ||
8 | struct Client; | |
9 | struct irc_sockaddr; | |
10 | struct MsgQ; | |
11 | ||
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. */ | |
17 | } IOResult; | |
18 | ||
19 | /* | |
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. | |
23 | */ | |
24 | /** Callback function to show rusage information. | |
25 | * @param cptr Client to receive the message. | |
26 | * @param msg Text message to send to user. | |
27 | */ | |
28 | typedef void (*EnumFn)(struct Client* cptr, const char* msg); | |
29 | ||
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); | |
56 | ||
57 | #endif /* INCLUDED_ircd_osdep_h */ | |
58 |