1#![unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
4
5use crate::ffi::CStr;
6use crate::io;
7use crate::os::unix::net;
8use crate::sealed::Sealed;
9use crate::sys_common::AsInner;
10
11#[unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
17pub trait UnixSocketExt: Sealed {
18 #[unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
20 fn local_creds_persistent(&self) -> io::Result<bool>;
21
22 #[unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
43 fn set_local_creds_persistent(&self, local_creds_persistent: bool) -> io::Result<()>;
44
45 #[unstable(feature = "acceptfilter", issue = "121891")]
47 fn acceptfilter(&self) -> io::Result<&CStr>;
48
49 #[unstable(feature = "acceptfilter", issue = "121891")]
52 fn set_acceptfilter(&self, name: &CStr) -> io::Result<()>;
53}
54
55#[unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
56impl UnixSocketExt for net::UnixDatagram {
57 fn local_creds_persistent(&self) -> io::Result<bool> {
58 self.as_inner().local_creds_persistent()
59 }
60
61 fn set_local_creds_persistent(&self, local_creds_persistent: bool) -> io::Result<()> {
62 self.as_inner().set_local_creds_persistent(local_creds_persistent)
63 }
64
65 fn acceptfilter(&self) -> io::Result<&CStr> {
66 self.as_inner().acceptfilter()
67 }
68
69 fn set_acceptfilter(&self, name: &CStr) -> io::Result<()> {
70 self.as_inner().set_acceptfilter(name)
71 }
72}
73
74#[unstable(feature = "unix_socket_ancillary_data", issue = "76915")]
75impl UnixSocketExt for net::UnixStream {
76 fn local_creds_persistent(&self) -> io::Result<bool> {
77 self.as_inner().local_creds_persistent()
78 }
79
80 fn set_local_creds_persistent(&self, local_creds_persistent: bool) -> io::Result<()> {
81 self.as_inner().set_local_creds_persistent(local_creds_persistent)
82 }
83
84 fn acceptfilter(&self) -> io::Result<&CStr> {
85 self.as_inner().acceptfilter()
86 }
87
88 fn set_acceptfilter(&self, name: &CStr) -> io::Result<()> {
89 self.as_inner().set_acceptfilter(name)
90 }
91}