diff options
author | Stanisław Pitucha <viraptor@gmail.com> | 2015-12-29 14:37:20 +1100 |
---|---|---|
committer | Stanisław Pitucha <viraptor@gmail.com> | 2016-02-01 09:17:04 +1100 |
commit | c65d354805edc3271ad7eabb05b9ce8b483f7064 (patch) | |
tree | 8d689f677d8955299134750f89b29713d82f9f63 | |
parent | 7421eb3aa2d2c1fc7629f13e1a5ee184e1d83bdf (diff) | |
download | nix-c65d354805edc3271ad7eabb05b9ce8b483f7064.zip |
Add SO_TYPE handling in getsockopt
-rw-r--r-- | src/sys/socket/sockopt.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/sys/socket/sockopt.rs b/src/sys/socket/sockopt.rs index e6c0f1ad..5d2c378b 100644 --- a/src/sys/socket/sockopt.rs +++ b/src/sys/socket/sockopt.rs @@ -163,6 +163,7 @@ sockopt_impl!(Both, SndBuf, consts::SOL_SOCKET, consts::SO_SNDBUF, usize); sockopt_impl!(SetOnly, RcvBufForce, consts::SOL_SOCKET, consts::SO_RCVBUFFORCE, usize); #[cfg(target_os = "linux")] sockopt_impl!(SetOnly, SndBufForce, consts::SOL_SOCKET, consts::SO_SNDBUFFORCE, usize); +sockopt_impl!(GetOnly, SockType, consts::SOL_SOCKET, consts::SO_TYPE, super::SockType); /* * @@ -376,4 +377,27 @@ mod test { assert_eq!(a_cred, b_cred); assert!(a_cred.pid != 0); } + + #[test] + fn is_socket_type_unix() { + use super::super::*; + use ::unistd::close; + + let (a, b) = socketpair(AddressFamily::Unix, SockType::Stream, 0, SockFlag::empty()).unwrap(); + let a_type = getsockopt(a, super::SockType).unwrap(); + assert!(a_type == SockType::Stream); + close(a).unwrap(); + close(b).unwrap(); + } + + #[test] + fn is_socket_type_dgram() { + use super::super::*; + use ::unistd::close; + + let s = socket(AddressFamily::Inet, SockType::Datagram, SockFlag::empty(), 0).unwrap(); + let s_type = getsockopt(s, super::SockType).unwrap(); + assert!(s_type == SockType::Datagram); + close(s).unwrap(); + } } |