From 2517a62e6e990ccb1de9948508a7d27f27b20342 Mon Sep 17 00:00:00 2001 From: maxfranke Date: Tue, 12 Apr 2022 22:31:48 +0200 Subject: [PATCH 1/3] Added SSM sockops for OSes that have support but were missing from libc --- src/unix/bsd/apple/mod.rs | 10 ++++++++++ src/unix/bsd/freebsdlike/mod.rs | 10 ++++++++++ src/unix/solarish/mod.rs | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs index 4133c2b504e1f..bd69d8aaaf04c 100644 --- a/src/unix/bsd/apple/mod.rs +++ b/src/unix/bsd/apple/mod.rs @@ -224,6 +224,12 @@ s! { pub imr_ifindex: ::c_int, } + pub struct ip_mreq_source { + pub imr_multiaddr: in_addr, + pub imr_sourceaddr: in_addr, + pub imr_interface: in_addr, + } + pub struct aiocb { pub aio_fildes: ::c_int, pub aio_offset: ::off_t, @@ -3542,6 +3548,10 @@ pub const IPV6_PKTINFO: ::c_int = 46; pub const IPV6_HOPLIMIT: ::c_int = 47; pub const IPV6_RECVPKTINFO: ::c_int = 61; pub const IPV6_DONTFRAG: ::c_int = 62; +pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70; +pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71; +pub const IP_BLOCK_SOURCE: ::c_int = 72; +pub const IP_UNBLOCK_SOURCE: ::c_int = 73; pub const TCP_NOPUSH: ::c_int = 4; pub const TCP_NOOPT: ::c_int = 8; diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index b27a48448cbb3..da91974c5c13b 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -96,6 +96,12 @@ s! { pub imr_ifindex: ::c_int, } + pub struct ip_mreq_source { + pub imr_multiaddr: in_addr, + pub imr_interface: in_addr, + pub imr_sourceaddr: in_addr, + } + pub struct glob_t { pub gl_pathc: ::size_t, pub gl_matchc: ::size_t, @@ -964,6 +970,10 @@ pub const IPV6_HOPLIMIT: ::c_int = 47; pub const IPV6_RECVTCLASS: ::c_int = 57; pub const IPV6_TCLASS: ::c_int = 61; pub const IPV6_DONTFRAG: ::c_int = 62; +pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70; +pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71; +pub const IP_BLOCK_SOURCE: ::c_int = 72; +pub const IP_UNBLOCK_SOURCE: ::c_int = 73; pub const TCP_NOPUSH: ::c_int = 4; pub const TCP_NOOPT: ::c_int = 8; diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs index 9bcbbbeb5be24..cec3f148dfcaa 100644 --- a/src/unix/solarish/mod.rs +++ b/src/unix/solarish/mod.rs @@ -83,6 +83,12 @@ s! { pub imr_interface: in_addr, } + pub struct ip_mreq_source { + pub imr_multiaddr: in_addr, + pub imr_sourceaddr: in_addr, + pub imr_interface: in_addr, + } + pub struct ipc_perm { pub uid: ::uid_t, pub gid: ::gid_t, @@ -1764,6 +1770,10 @@ pub const IP_ADD_MEMBERSHIP: ::c_int = 19; pub const IP_DROP_MEMBERSHIP: ::c_int = 20; pub const IPV6_JOIN_GROUP: ::c_int = 9; pub const IPV6_LEAVE_GROUP: ::c_int = 10; +pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70; +pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71; +pub const IP_BLOCK_SOURCE: ::c_int = 72; +pub const IP_UNBLOCK_SOURCE: ::c_int = 73; // These TCP socket options are common between illumos and Solaris, while higher // numbers have generally diverged: From 78c2d8168ba2f5e40aa1db539f76d449e4eac0b4 Mon Sep 17 00:00:00 2001 From: maxfranke Date: Tue, 12 Apr 2022 22:41:03 +0200 Subject: [PATCH 2/3] mixed up lines --- src/unix/bsd/freebsdlike/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs index da91974c5c13b..b9d29d8251bf6 100644 --- a/src/unix/bsd/freebsdlike/mod.rs +++ b/src/unix/bsd/freebsdlike/mod.rs @@ -98,8 +98,8 @@ s! { pub struct ip_mreq_source { pub imr_multiaddr: in_addr, - pub imr_interface: in_addr, pub imr_sourceaddr: in_addr, + pub imr_interface: in_addr, } pub struct glob_t { From e7efff4a0a6fb85c4f21bdf13b14e7fe17135544 Mon Sep 17 00:00:00 2001 From: maxfranke Date: Tue, 12 Apr 2022 22:44:10 +0200 Subject: [PATCH 3/3] Fix values for Solaris --- src/unix/solarish/mod.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/unix/solarish/mod.rs b/src/unix/solarish/mod.rs index cec3f148dfcaa..3ccdb8cab91a8 100644 --- a/src/unix/solarish/mod.rs +++ b/src/unix/solarish/mod.rs @@ -1770,10 +1770,10 @@ pub const IP_ADD_MEMBERSHIP: ::c_int = 19; pub const IP_DROP_MEMBERSHIP: ::c_int = 20; pub const IPV6_JOIN_GROUP: ::c_int = 9; pub const IPV6_LEAVE_GROUP: ::c_int = 10; -pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70; -pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71; -pub const IP_BLOCK_SOURCE: ::c_int = 72; -pub const IP_UNBLOCK_SOURCE: ::c_int = 73; +pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 23; +pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 24; +pub const IP_BLOCK_SOURCE: ::c_int = 21; +pub const IP_UNBLOCK_SOURCE: ::c_int = 22; // These TCP socket options are common between illumos and Solaris, while higher // numbers have generally diverged: