solana_streamer/
msghdr.rs

1#![cfg(target_os = "linux")]
2
3use {
4    libc::{iovec, msghdr, sockaddr_storage, socklen_t},
5    std::{
6        mem::{zeroed, MaybeUninit},
7        ptr,
8    },
9};
10
11pub(crate) fn create_msghdr(
12    msg_name: &mut MaybeUninit<sockaddr_storage>,
13    msg_namelen: socklen_t,
14    iov: &mut MaybeUninit<iovec>,
15) -> msghdr {
16    // Cannot construct msghdr directly on musl
17    // See https://github.com/rust-lang/libc/issues/2344 for more info
18    let mut msg_hdr: msghdr = unsafe { zeroed() };
19    msg_hdr.msg_name = msg_name.as_mut_ptr() as *mut _;
20    msg_hdr.msg_namelen = msg_namelen;
21    msg_hdr.msg_iov = iov.as_mut_ptr();
22    msg_hdr.msg_iovlen = 1;
23    msg_hdr.msg_control = ptr::null::<libc::c_void>() as *mut _;
24    msg_hdr.msg_controllen = 0;
25    msg_hdr.msg_flags = 0;
26    msg_hdr
27}