summaryrefslogtreecommitdiff
path: root/src/sys/socket
diff options
context:
space:
mode:
authorJean Pierre Dudey <jeandudey@hotmail.com>2020-05-08 14:36:09 -0500
committerJean Pierre Dudey <jeandudey@hotmail.com>2020-05-08 16:16:34 -0500
commit1686f6d051cff303295756c711f8e8e898b149cc (patch)
tree24b594586b75de7d60fa11079cd7e9d9b8dd8c15 /src/sys/socket
parenta937988d7c31d36fe47c136c2c4d8942ea236bd8 (diff)
downloadnix-1686f6d051cff303295756c711f8e8e898b149cc.zip
Add SO_BINDTODEVICE sockopt
This is available only on Linux as far I know, [socket(7)](https://linux.die.net/man/7/socket) has some information about the `SO_BINDTODEVICE` sockopt. In simple words it binds a socket to an specific network device (specified as an string like "wlo1", "eth0", etc.), to only process packets from that device. Signed-off-by: Jean Pierre Dudey <jeandudey@hotmail.com>
Diffstat (limited to 'src/sys/socket')
-rw-r--r--src/sys/socket/sockopt.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/sys/socket/sockopt.rs b/src/sys/socket/sockopt.rs
index d0ef4b65..fa19fb76 100644
--- a/src/sys/socket/sockopt.rs
+++ b/src/sys/socket/sockopt.rs
@@ -260,6 +260,8 @@ sockopt_impl!(SetOnly, SndBufForce, libc::SOL_SOCKET, libc::SO_SNDBUFFORCE, usiz
sockopt_impl!(GetOnly, SockType, libc::SOL_SOCKET, libc::SO_TYPE, super::SockType);
sockopt_impl!(GetOnly, AcceptConn, libc::SOL_SOCKET, libc::SO_ACCEPTCONN, bool);
#[cfg(any(target_os = "android", target_os = "linux"))]
+sockopt_impl!(Both, BindToDevice, libc::SOL_SOCKET, libc::SO_BINDTODEVICE, OsString<[u8; libc::IFNAMSIZ]>);
+#[cfg(any(target_os = "android", target_os = "linux"))]
sockopt_impl!(GetOnly, OriginalDst, libc::SOL_IP, libc::SO_ORIGINAL_DST, libc::sockaddr_in);
sockopt_impl!(Both, ReceiveTimestamp, libc::SOL_SOCKET, libc::SO_TIMESTAMP, bool);
#[cfg(any(target_os = "android", target_os = "linux"))]