summary refs log tree commit diff
path: root/sys_util/src/sock_ctrl_msg.rs
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2020-01-31 17:17:32 -0800
committerCommit Bot <commit-bot@chromium.org>2020-02-06 21:56:37 +0000
commit787c84b51b29c0715c6d3e73aca0148b6b112440 (patch)
tree182364448e8b47f70fb74131502043361daca3b8 /sys_util/src/sock_ctrl_msg.rs
parent4441c01124a30b7037267fdc74aeee4b6eff111a (diff)
downloadcrosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar.gz
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar.bz2
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar.lz
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar.xz
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.tar.zst
crosvm-787c84b51b29c0715c6d3e73aca0148b6b112440.zip
sys_util: recv entire UnixSeqpacket packets into Vec
This change adds the `recv_*_vec` suite of methods for getting an entire
packet into a `Vec` without needing to know the packet size through some
other means.

TEST=cargo test -p sys_util -p msg_socket
BUG=None

Change-Id: Ia4f931ccb91f6de6ee2103387fd95dfad3d3d38b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2034025
Commit-Queue: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Auto-Submit: Zach Reizner <zachr@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'sys_util/src/sock_ctrl_msg.rs')
-rw-r--r--sys_util/src/sock_ctrl_msg.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys_util/src/sock_ctrl_msg.rs b/sys_util/src/sock_ctrl_msg.rs
index 13b9b0c..d4b953b 100644
--- a/sys_util/src/sock_ctrl_msg.rs
+++ b/sys_util/src/sock_ctrl_msg.rs
@@ -213,6 +213,9 @@ fn raw_recvmsg(fd: RawFd, in_data: &mut [u8], in_fds: &mut [RawFd]) -> Result<(u
     Ok((total_read as usize, in_fds_count))
 }
 
+/// The maximum number of FDs that can be sent in a single send.
+pub const SCM_SOCKET_MAX_FD_COUNT: usize = 253;
+
 /// Trait for file descriptors can send and receive socket control messages via `sendmsg` and
 /// `recvmsg`.
 pub trait ScmSocket {
@@ -292,6 +295,7 @@ impl ScmSocket for UnixStream {
         self.as_raw_fd()
     }
 }
+
 impl ScmSocket for UnixSeqpacket {
     fn socket_fd(&self) -> RawFd {
         self.as_raw_fd()