]>
Commit | Line | Data |
---|---|---|
6ca957f0 | 1 | /* headers to use the BSD sockets */ |
121d0712 MA |
2 | |
3 | #ifndef QEMU_SOCKETS_H | |
4 | #define QEMU_SOCKETS_H | |
6ca957f0 FB |
5 | |
6 | #ifdef _WIN32 | |
6ca957f0 | 7 | |
03ff3ca3 AL |
8 | int inet_aton(const char *cp, struct in_addr *ia); |
9 | ||
6ca957f0 FB |
10 | #endif /* !_WIN32 */ |
11 | ||
9af23989 | 12 | #include "qapi/qapi-types-sockets.h" |
2af2bf67 | 13 | |
d247d25f | 14 | /* misc helpers */ |
58dc31f1 | 15 | bool fd_is_socket(int fd); |
40ff6d7e KW |
16 | int qemu_socket(int domain, int type, int protocol); |
17 | int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen); | |
128aa589 | 18 | int socket_set_cork(int fd, int v); |
bf1c852a | 19 | int socket_set_nodelay(int fd); |
f9e8cacc | 20 | void qemu_set_block(int fd); |
894022e6 | 21 | int qemu_try_set_nonblock(int fd); |
f9e8cacc | 22 | void qemu_set_nonblock(int fd); |
606600a1 | 23 | int socket_set_fast_reuse(int fd); |
d247d25f | 24 | |
e1a8c9b6 DDAG |
25 | #ifdef WIN32 |
26 | /* Windows has different names for the same constants with the same values */ | |
27 | #define SHUT_RD 0 | |
28 | #define SHUT_WR 1 | |
29 | #define SHUT_RDWR 2 | |
30 | #endif | |
31 | ||
c1b412f1 DB |
32 | int inet_ai_family_from_address(InetSocketAddress *addr, |
33 | Error **errp); | |
0785bd7a | 34 | int inet_parse(InetSocketAddress *addr, const char *str, Error **errp); |
5db5f44c | 35 | int inet_connect(const char *str, Error **errp); |
b2587932 | 36 | int inet_connect_saddr(InetSocketAddress *saddr, Error **errp); |
233aa5c2 | 37 | |
a589569f | 38 | NetworkAddressFamily inet_netfamily(int family); |
d247d25f | 39 | |
62473511 | 40 | int unix_listen(const char *path, Error **errp); |
7fc4e63e | 41 | int unix_connect(const char *path, Error **errp); |
d247d25f | 42 | |
bd269ebc | 43 | SocketAddress *socket_parse(const char *str, Error **errp); |
b2587932 | 44 | int socket_connect(SocketAddress *addr, Error **errp); |
e5b6353c | 45 | int socket_listen(SocketAddress *addr, int num, Error **errp); |
74b6ce43 | 46 | void socket_listen_cleanup(int fd, Error **errp); |
bd269ebc | 47 | int socket_dgram(SocketAddress *remote, SocketAddress *local, Error **errp); |
101f9cbc | 48 | |
d247d25f | 49 | /* Old, ipv4 only bits. Don't use for new code. */ |
bcd4dfd6 MZ |
50 | int parse_host_port(struct sockaddr_in *saddr, const char *str, |
51 | Error **errp); | |
0706a4dc | 52 | int socket_init(void); |
6ca957f0 | 53 | |
559607ea DB |
54 | /** |
55 | * socket_sockaddr_to_address: | |
56 | * @sa: socket address struct | |
57 | * @salen: size of @sa struct | |
58 | * @errp: pointer to uninitialized error object | |
59 | * | |
60 | * Get the string representation of the socket | |
61 | * address. A pointer to the allocated address information | |
62 | * struct will be returned, which the caller is required to | |
bd269ebc | 63 | * release with a call qapi_free_SocketAddress() when no |
559607ea DB |
64 | * longer required. |
65 | * | |
66 | * Returns: the socket address struct, or NULL on error | |
67 | */ | |
bd269ebc | 68 | SocketAddress * |
559607ea DB |
69 | socket_sockaddr_to_address(struct sockaddr_storage *sa, |
70 | socklen_t salen, | |
71 | Error **errp); | |
72 | ||
17c55dec DB |
73 | /** |
74 | * socket_local_address: | |
75 | * @fd: the socket file handle | |
76 | * @errp: pointer to uninitialized error object | |
77 | * | |
78 | * Get the string representation of the local socket | |
79 | * address. A pointer to the allocated address information | |
80 | * struct will be returned, which the caller is required to | |
bd269ebc | 81 | * release with a call qapi_free_SocketAddress() when no |
17c55dec DB |
82 | * longer required. |
83 | * | |
84 | * Returns: the socket address struct, or NULL on error | |
85 | */ | |
bd269ebc | 86 | SocketAddress *socket_local_address(int fd, Error **errp); |
17c55dec DB |
87 | |
88 | /** | |
89 | * socket_remote_address: | |
90 | * @fd: the socket file handle | |
91 | * @errp: pointer to uninitialized error object | |
92 | * | |
93 | * Get the string representation of the remote socket | |
94 | * address. A pointer to the allocated address information | |
95 | * struct will be returned, which the caller is required to | |
bd269ebc | 96 | * release with a call qapi_free_SocketAddress() when no |
17c55dec DB |
97 | * longer required. |
98 | * | |
99 | * Returns: the socket address struct, or NULL on error | |
100 | */ | |
bd269ebc | 101 | SocketAddress *socket_remote_address(int fd, Error **errp); |
17c55dec | 102 | |
bd269ebc MA |
103 | /** |
104 | * socket_address_flatten: | |
105 | * @addr: the socket address to flatten | |
106 | * | |
107 | * Convert SocketAddressLegacy to SocketAddress. Caller is responsible | |
108 | * for freeing with qapi_free_SocketAddress(). | |
109 | * | |
110 | * Returns: the argument converted to SocketAddress. | |
111 | */ | |
112 | SocketAddress *socket_address_flatten(SocketAddressLegacy *addr); | |
113 | ||
121d0712 | 114 | #endif /* QEMU_SOCKETS_H */ |