aboutsummaryrefslogtreecommitdiff
path: root/lib/socket-util.h
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2012-06-14 09:46:18 -0700
committerBen Pfaff <blp@nicira.com>2012-07-18 10:29:21 -0700
commitfd94a42c43ff4a0e57a44bdc9ded1b7e1e63faaa (patch)
tree8dbefecf34d4e3625393f80d9ea7fd6612504d4b /lib/socket-util.h
parenta0505c49dd98b393f4c47a423f325008443eb1ee (diff)
socket-util: Add functions for sending fds over Unix domain sockets.
These will be used in upcoming commits. This commit also adds corresponding definitions to the "sparse" header, so that sparse still works. Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/socket-util.h')
-rw-r--r--lib/socket-util.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/socket-util.h b/lib/socket-util.h
index e2e0d9a2..a0e7970a 100644
--- a/lib/socket-util.h
+++ b/lib/socket-util.h
@@ -71,4 +71,28 @@ char *describe_fd(int fd);
* in <netinet/ip.h> is used. */
#define DSCP_DEFAULT (IPTOS_PREC_INTERNETCONTROL >> 2)
+/* Maximum number of fds that we support sending or receiving at one time
+ * across a Unix domain socket. */
+#define SOUTIL_MAX_FDS 8
+
+/* Iovecs. */
+size_t iovec_len(const struct iovec *iovs, size_t n_iovs);
+bool iovec_is_empty(const struct iovec *iovs, size_t n_iovs);
+
+/* Functions particularly useful for Unix domain sockets. */
+void xsocketpair(int domain, int type, int protocol, int fds[2]);
+int send_iovec_and_fds(int sock,
+ const struct iovec *iovs, size_t n_iovs,
+ const int fds[], size_t n_fds);
+int send_iovec_and_fds_fully(int sock,
+ const struct iovec *iovs, size_t n_iovs,
+ const int fds[], size_t n_fds,
+ size_t skip_bytes, size_t *bytes_sent);
+int send_iovec_and_fds_fully_block(int sock,
+ const struct iovec *iovs, size_t n_iovs,
+ const int fds[], size_t n_fds);
+int recv_data_and_fds(int sock,
+ void *data, size_t size,
+ int fds[SOUTIL_MAX_FDS], size_t *n_fdsp);
+
#endif /* socket-util.h */