summaryrefslogtreecommitdiff
path: root/test/sys/test_socket.rs
diff options
context:
space:
mode:
authorConrad Kramer <conrad@kramerapps.com>2016-11-25 00:11:51 -0500
committerConrad Kramer <conrad@kramerapps.com>2016-12-10 12:31:35 -0800
commit954232c8919eab1583f7849c53199c9615e83204 (patch)
tree6a1a5d7f8670bae40a60b4f0716245dee7060cf1 /test/sys/test_socket.rs
parentbfb91506316a98500e0b1ed8a2a847831cf0cccb (diff)
downloadnix-954232c8919eab1583f7849c53199c9615e83204.zip
Add support for system control sockets for XNU
Diffstat (limited to 'test/sys/test_socket.rs')
-rw-r--r--test/sys/test_socket.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/sys/test_socket.rs b/test/sys/test_socket.rs
index 9f4b4278..b5465aa0 100644
--- a/test/sys/test_socket.rs
+++ b/test/sys/test_socket.rs
@@ -180,3 +180,20 @@ pub fn test_unixdomain() {
assert_eq!(&buf[..], b"hello");
}
+
+// Test creating and using named system control sockets
+#[cfg(any(target_os = "macos", target_os = "ios"))]
+#[test]
+pub fn test_syscontrol() {
+ use nix::{Errno, Error};
+ use nix::sys::socket::{AddressFamily, SockType, SockFlag};
+ use nix::sys::socket::{socket, SockAddr};
+ use nix::sys::socket::SYSPROTO_CONTROL;
+
+ let fd = socket(AddressFamily::System, SockType::Datagram, SockFlag::empty(), SYSPROTO_CONTROL).expect("socket failed");
+ let _sockaddr = SockAddr::new_sys_control(fd, "com.apple.net.utun_control", 0).expect("resolving sys_control name failed");
+ assert_eq!(SockAddr::new_sys_control(fd, "foo.bar.lol", 0).err(), Some(Error::Sys(Errno::ENOENT)));
+
+ // requires root privileges
+ // connect(fd, &sockaddr).expect("connect failed");
+}