Skip to content

Commit edf3aa5

Browse files
committed
Auto merge of #2135 - zonyitoo:master, r=<try>
Unified all Linux sockopts definitions by arch - ref rust-lang/socket2#213
2 parents 0a93b70 + b86239c commit edf3aa5

File tree

42 files changed

+630
-1037
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+630
-1037
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// use core::mem::size_of;
2+
3+
// sizeof(time_t) == sizeof(__kernel_long_t)
4+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
5+
// pub const SO_TIMESTAMP: ::c_int =
6+
// if size_of::<::time_t>() == size_of::<::c_long>() {
7+
// super::SO_TIMESTAMP_OLD
8+
// } else {
9+
// super::SO_TIMESTAMP_NEW
10+
// };
11+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
12+
// pub const SO_TIMESTAMPNS: ::c_int =
13+
// if size_of::<::time_t>() == size_of::<::c_long>() {
14+
// super::SO_TIMESTAMPNS_OLD
15+
// } else {
16+
// super::SO_TIMESTAMPNS_NEW
17+
// };
18+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
19+
// pub const SO_TIMESTAMPING: ::c_int =
20+
// if size_of::<::time_t>() == size_of::<::c_long>() {
21+
// super::SO_TIMESTAMPING_OLD
22+
// } else {
23+
// super::SO_TIMESTAMPING_NEW
24+
// };
25+
26+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
27+
// pub const SO_RCVTIMEO: ::c_int =
28+
// if size_of::<::time_t>() == size_of::<::c_long>() {
29+
// super::SO_RCVTIMEO_OLD
30+
// } else {
31+
// super::SO_RCVTIMEO_NEW
32+
// };
33+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
34+
// pub const SO_SNDTIMEO: ::c_int =
35+
// if size_of::<::time_t>() == size_of::<::c_long>() {
36+
// super::SO_SNDTIMEO_OLD
37+
// } else {
38+
// super::SO_SNDTIMEO_NEW
39+
// };
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
2+
// pub const SO_TIMESTAMP: ::c_int = super::SO_TIMESTAMP_OLD;
3+
// pub const SO_TIMESTAMPNS: ::c_int = super::SO_TIMESTAMPNS_OLD;
4+
// pub const SO_TIMESTAMPING: ::c_int = super::SO_TIMESTAMPING_OLD;
5+
6+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
7+
// pub const SO_RCVTIMEO: ::c_int = super::SO_RCVTIMEO_OLD;
8+
// pub const SO_SNDTIMEO: ::c_int = super::SO_SNDTIMEO_OLD;
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
// include/uapi/asm-generic/socket.h
2+
// arch/alpha/include/uapi/asm/socket.h
3+
// tools/include/uapi/asm-generic/socket.h
4+
// arch/mips/include/uapi/asm/socket.h
5+
pub const SOL_SOCKET: ::c_int = 1;
6+
7+
// Defined in unix/linux_like/mod.rs
8+
// pub const SO_DEBUG: ::c_int = 1;
9+
pub const SO_REUSEADDR: ::c_int = 2;
10+
pub const SO_TYPE: ::c_int = 3;
11+
pub const SO_ERROR: ::c_int = 4;
12+
pub const SO_DONTROUTE: ::c_int = 5;
13+
pub const SO_BROADCAST: ::c_int = 6;
14+
pub const SO_SNDBUF: ::c_int = 7;
15+
pub const SO_RCVBUF: ::c_int = 8;
16+
pub const SO_KEEPALIVE: ::c_int = 9;
17+
pub const SO_OOBINLINE: ::c_int = 10;
18+
pub const SO_NO_CHECK: ::c_int = 11;
19+
pub const SO_PRIORITY: ::c_int = 12;
20+
pub const SO_LINGER: ::c_int = 13;
21+
pub const SO_BSDCOMPAT: ::c_int = 14;
22+
pub const SO_REUSEPORT: ::c_int = 15;
23+
pub const SO_PASSCRED: ::c_int = 16;
24+
pub const SO_PEERCRED: ::c_int = 17;
25+
pub const SO_RCVLOWAT: ::c_int = 18;
26+
pub const SO_SNDLOWAT: ::c_int = 19;
27+
pub const SO_RCVTIMEO: ::c_int = 20;
28+
pub const SO_SNDTIMEO: ::c_int = 21;
29+
// pub const SO_RCVTIMEO_OLD: ::c_int = 20;
30+
// pub const SO_SNDTIMEO_OLD: ::c_int = 21;
31+
pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
32+
pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
33+
pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
34+
pub const SO_BINDTODEVICE: ::c_int = 25;
35+
pub const SO_ATTACH_FILTER: ::c_int = 26;
36+
pub const SO_DETACH_FILTER: ::c_int = 27;
37+
pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
38+
pub const SO_PEERNAME: ::c_int = 28;
39+
pub const SO_TIMESTAMP: ::c_int = 29;
40+
// pub const SO_TIMESTAMP_OLD: ::c_int = 29;
41+
pub const SO_ACCEPTCONN: ::c_int = 30;
42+
pub const SO_PEERSEC: ::c_int = 31;
43+
pub const SO_SNDBUFFORCE: ::c_int = 32;
44+
pub const SO_RCVBUFFORCE: ::c_int = 33;
45+
pub const SO_PASSSEC: ::c_int = 34;
46+
pub const SO_TIMESTAMPNS: ::c_int = 35;
47+
// pub const SO_TIMESTAMPNS_OLD: ::c_int = 35;
48+
pub const SO_MARK: ::c_int = 36;
49+
pub const SO_TIMESTAMPING: ::c_int = 37;
50+
// pub const SO_TIMESTAMPING_OLD: ::c_int = 37;
51+
pub const SO_PROTOCOL: ::c_int = 38;
52+
pub const SO_DOMAIN: ::c_int = 39;
53+
pub const SO_RXQ_OVFL: ::c_int = 40;
54+
pub const SO_WIFI_STATUS: ::c_int = 41;
55+
pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
56+
pub const SO_PEEK_OFF: ::c_int = 42;
57+
pub const SO_NOFCS: ::c_int = 43;
58+
pub const SO_LOCK_FILTER: ::c_int = 44;
59+
pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
60+
pub const SO_BUSY_POLL: ::c_int = 46;
61+
pub const SO_MAX_PACING_RATE: ::c_int = 47;
62+
pub const SO_BPF_EXTENSIONS: ::c_int = 48;
63+
pub const SO_INCOMING_CPU: ::c_int = 49;
64+
pub const SO_ATTACH_BPF: ::c_int = 50;
65+
pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
66+
pub const SO_ATTACH_REUSEPORT_CBPF: ::c_int = 51;
67+
pub const SO_ATTACH_REUSEPORT_EBPF: ::c_int = 52;
68+
pub const SO_CNX_ADVICE: ::c_int = 53;
69+
pub const SCM_TIMESTAMPING_OPT_STATS: ::c_int = 54;
70+
pub const SO_MEMINFO: ::c_int = 55;
71+
pub const SO_INCOMING_NAPI_ID: ::c_int = 56;
72+
pub const SO_COOKIE: ::c_int = 57;
73+
pub const SCM_TIMESTAMPING_PKTINFO: ::c_int = 58;
74+
pub const SO_PEERGROUPS: ::c_int = 59;
75+
pub const SO_ZEROCOPY: ::c_int = 60;
76+
pub const SO_TXTIME: ::c_int = 61;
77+
pub const SCM_TXTIME: ::c_int = SO_TXTIME;
78+
pub const SO_BINDTOIFINDEX: ::c_int = 62;
79+
// pub const SO_TIMESTAMP_NEW: ::c_int = 63;
80+
// pub const SO_TIMESTAMPNS_NEW: ::c_int = 64;
81+
// pub const SO_TIMESTAMPING_NEW: ::c_int = 65;
82+
// pub const SO_RCVTIMEO_NEW: ::c_int = 66;
83+
// pub const SO_SNDTIMEO_NEW: ::c_int = 67;
84+
// pub const SO_DETACH_REUSEPORT_BPF: ::c_int = 68;
85+
// pub const SO_PREFER_BUSY_POLL: ::c_int = 69;
86+
// pub const SO_BUSY_POLL_BUDGET: ::c_int = 70;
87+
88+
// Defined in unix/linux_like/mod.rs
89+
// pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
90+
pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
91+
pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
92+
93+
cfg_if! {
94+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
95+
96+
if #[cfg(any(target_arch = "x86",
97+
target_arch = "arm",
98+
target_arch = "riscv32"))] {
99+
mod b32;
100+
pub use self::b32::*;
101+
} else if #[cfg(any(target_arch = "x86_64",
102+
target_arch = "aarch64",
103+
target_arch = "s390x",
104+
target_arch = "riscv64"))] {
105+
mod b64;
106+
pub use self::b64::*;
107+
}
108+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// use core::mem::size_of;
2+
3+
// sizeof(time_t) == sizeof(__kernel_long_t)
4+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
5+
// pub const SO_TIMESTAMP: ::c_int =
6+
// if size_of::<::time_t>() == size_of::<::c_long>() {
7+
// super::SO_TIMESTAMP_OLD
8+
// } else {
9+
// super::SO_TIMESTAMP_NEW
10+
// };
11+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
12+
// pub const SO_TIMESTAMPNS: ::c_int =
13+
// if size_of::<::time_t>() == size_of::<::c_long>() {
14+
// super::SO_TIMESTAMPNS_OLD
15+
// } else {
16+
// super::SO_TIMESTAMPNS_NEW
17+
// };
18+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
19+
// pub const SO_TIMESTAMPING: ::c_int =
20+
// if size_of::<::time_t>() == size_of::<::c_long>() {
21+
// super::SO_TIMESTAMPING_OLD
22+
// } else {
23+
// super::SO_TIMESTAMPING_NEW
24+
// };
25+
26+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
27+
// pub const SO_RCVTIMEO: ::c_int =
28+
// if size_of::<::time_t>() == size_of::<::c_long>() {
29+
// super::SO_RCVTIMEO_OLD
30+
// } else {
31+
// super::SO_RCVTIMEO_NEW
32+
// };
33+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
34+
// pub const SO_SNDTIMEO: ::c_int =
35+
// if size_of::<::time_t>() == size_of::<::c_long>() {
36+
// super::SO_SNDTIMEO_OLD
37+
// } else {
38+
// super::SO_SNDTIMEO_NEW
39+
// };
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// #if __BITS_PER_LONG == 64
2+
// pub const SO_TIMESTAMP: ::c_int = super::SO_TIMESTAMP_OLD;
3+
// pub const SO_TIMESTAMPNS: ::c_int = super::SO_TIMESTAMPNS_OLD;
4+
// pub const SO_TIMESTAMPING: ::c_int = super::SO_TIMESTAMPING_OLD;
5+
6+
// #if __BITS_PER_LONG == 64
7+
// pub const SO_RCVTIMEO: ::c_int = super::SO_RCVTIMEO_OLD;
8+
// pub const SO_SNDTIMEO: ::c_int = super::SO_SNDTIMEO_OLD;
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
// arch/mips/include/uapi/asm/socket.h
2+
pub const SOL_SOCKET: ::c_int = 0xffff;
3+
4+
// Defined in unix/linux_like/mod.rs
5+
// pub const SO_DEBUG: ::c_int = 0x0001;
6+
pub const SO_REUSEADDR: ::c_int = 0x0004;
7+
pub const SO_KEEPALIVE: ::c_int = 0x0008;
8+
pub const SO_DONTROUTE: ::c_int = 0x0010;
9+
pub const SO_BROADCAST: ::c_int = 0x0020;
10+
pub const SO_LINGER: ::c_int = 0x0080;
11+
pub const SO_OOBINLINE: ::c_int = 0x0100;
12+
pub const SO_REUSEPORT: ::c_int = 0x0200;
13+
pub const SO_TYPE: ::c_int = 0x1008;
14+
// pub const SO_STYLE: ::c_int = SO_TYPE;
15+
pub const SO_ERROR: ::c_int = 0x1007;
16+
pub const SO_SNDBUF: ::c_int = 0x1001;
17+
pub const SO_RCVBUF: ::c_int = 0x1002;
18+
pub const SO_SNDLOWAT: ::c_int = 0x1003;
19+
pub const SO_RCVLOWAT: ::c_int = 0x1004;
20+
// NOTE: These definitions are now being renamed with _OLD postfix,
21+
// but CI haven't support them yet.
22+
// Some related consts could be found in b32.rs and b64.rs
23+
pub const SO_SNDTIMEO: ::c_int = 0x1005;
24+
pub const SO_RCVTIMEO: ::c_int = 0x1006;
25+
// pub const SO_SNDTIMEO_OLD: ::c_int = 0x1005;
26+
// pub const SO_RCVTIMEO_OLD: ::c_int = 0x1006;
27+
pub const SO_ACCEPTCONN: ::c_int = 0x1009;
28+
pub const SO_PROTOCOL: ::c_int = 0x1028;
29+
pub const SO_DOMAIN: ::c_int = 0x1029;
30+
31+
pub const SO_NO_CHECK: ::c_int = 11;
32+
pub const SO_PRIORITY: ::c_int = 12;
33+
pub const SO_BSDCOMPAT: ::c_int = 14;
34+
pub const SO_PASSCRED: ::c_int = 17;
35+
pub const SO_PEERCRED: ::c_int = 18;
36+
pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
37+
pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
38+
pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
39+
pub const SO_BINDTODEVICE: ::c_int = 25;
40+
pub const SO_ATTACH_FILTER: ::c_int = 26;
41+
pub const SO_DETACH_FILTER: ::c_int = 27;
42+
pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
43+
pub const SO_PEERNAME: ::c_int = 28;
44+
pub const SO_PEERSEC: ::c_int = 30;
45+
pub const SO_SNDBUFFORCE: ::c_int = 31;
46+
pub const SO_RCVBUFFORCE: ::c_int = 33;
47+
pub const SO_PASSSEC: ::c_int = 34;
48+
pub const SO_MARK: ::c_int = 36;
49+
pub const SO_RXQ_OVFL: ::c_int = 40;
50+
pub const SO_WIFI_STATUS: ::c_int = 41;
51+
pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
52+
pub const SO_PEEK_OFF: ::c_int = 42;
53+
pub const SO_NOFCS: ::c_int = 43;
54+
pub const SO_LOCK_FILTER: ::c_int = 44;
55+
pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
56+
pub const SO_BUSY_POLL: ::c_int = 46;
57+
pub const SO_MAX_PACING_RATE: ::c_int = 47;
58+
pub const SO_BPF_EXTENSIONS: ::c_int = 48;
59+
pub const SO_INCOMING_CPU: ::c_int = 49;
60+
pub const SO_ATTACH_BPF: ::c_int = 50;
61+
pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
62+
pub const SO_ATTACH_REUSEPORT_CBPF: ::c_int = 51;
63+
pub const SO_ATTACH_REUSEPORT_EBPF: ::c_int = 52;
64+
pub const SO_CNX_ADVICE: ::c_int = 53;
65+
pub const SCM_TIMESTAMPING_OPT_STATS: ::c_int = 54;
66+
pub const SO_MEMINFO: ::c_int = 55;
67+
pub const SO_INCOMING_NAPI_ID: ::c_int = 56;
68+
pub const SO_COOKIE: ::c_int = 57;
69+
pub const SCM_TIMESTAMPING_PKTINFO: ::c_int = 58;
70+
pub const SO_PEERGROUPS: ::c_int = 59;
71+
pub const SO_ZEROCOPY: ::c_int = 60;
72+
pub const SO_TXTIME: ::c_int = 61;
73+
pub const SCM_TXTIME: ::c_int = SO_TXTIME;
74+
pub const SO_BINDTOIFINDEX: ::c_int = 62;
75+
// NOTE: These definitions are now being renamed with _OLD postfix,
76+
// but CI haven't support them yet.
77+
// Some related consts could be found in b32.rs and b64.rs
78+
pub const SO_TIMESTAMP: ::c_int = 29;
79+
pub const SO_TIMESTAMPNS: ::c_int = 35;
80+
pub const SO_TIMESTAMPING: ::c_int = 37;
81+
// pub const SO_TIMESTAMP_OLD: ::c_int = 29;
82+
// pub const SO_TIMESTAMPNS_OLD: ::c_int = 35;
83+
// pub const SO_TIMESTAMPING_OLD: ::c_int = 37;
84+
// pub const SO_TIMESTAMP_NEW: ::c_int = 63;
85+
// pub const SO_TIMESTAMPNS_NEW: ::c_int = 64;
86+
// pub const SO_TIMESTAMPING_NEW: ::c_int = 65;
87+
// pub const SO_RCVTIMEO_NEW: ::c_int = 66;
88+
// pub const SO_SNDTIMEO_NEW: ::c_int = 67;
89+
// pub const SO_DETACH_REUSEPORT_BPF: ::c_int = 68;
90+
// pub const SO_PREFER_BUSY_POLL: ::c_int = 69;
91+
// pub const SO_BUSY_POLL_BUDGET: ::c_int = 70;
92+
93+
// Defined in unix/linux_like/mod.rs
94+
// pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
95+
pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
96+
pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
97+
98+
cfg_if! {
99+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
100+
101+
if #[cfg(target_arch = "mips")] {
102+
mod b32;
103+
pub use self::b32::*;
104+
} else if #[cfg(target_arch = "mips64")] {
105+
mod b64;
106+
pub use self::b64::*;
107+
}
108+
}

src/unix/linux_like/linux/arch/mod.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
cfg_if! {
2+
if #[cfg(any(target_arch = "mips", target_arch = "mips64"))] {
3+
mod mips;
4+
pub use self::mips::*;
5+
} else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] {
6+
mod powerpc;
7+
pub use self::powerpc::*;
8+
} else if #[cfg(any(target_arch = "sparc", target_arch = "sparc64"))] {
9+
mod sparc;
10+
pub use self::sparc::*;
11+
} else {
12+
mod generic;
13+
pub use self::generic::*;
14+
}
15+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// use core::mem::size_of;
2+
3+
// sizeof(time_t) == sizeof(__kernel_long_t)
4+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
5+
// pub const SO_TIMESTAMP: ::c_int =
6+
// if size_of::<::time_t>() == size_of::<::c_long>() {
7+
// super::SO_TIMESTAMP_OLD
8+
// } else {
9+
// super::SO_TIMESTAMP_NEW
10+
// };
11+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
12+
// pub const SO_TIMESTAMPNS: ::c_int =
13+
// if size_of::<::time_t>() == size_of::<::c_long>() {
14+
// super::SO_TIMESTAMPNS_OLD
15+
// } else {
16+
// super::SO_TIMESTAMPNS_NEW
17+
// };
18+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
19+
// pub const SO_TIMESTAMPING: ::c_int =
20+
// if size_of::<::time_t>() == size_of::<::c_long>() {
21+
// super::SO_TIMESTAMPING_OLD
22+
// } else {
23+
// super::SO_TIMESTAMPING_NEW
24+
// };
25+
26+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
27+
// pub const SO_RCVTIMEO: ::c_int =
28+
// if size_of::<::time_t>() == size_of::<::c_long>() {
29+
// super::SO_RCVTIMEO_OLD
30+
// } else {
31+
// super::SO_RCVTIMEO_NEW
32+
// };
33+
// #[cfg_attr(target_env = "musl", allow(deprecated))]
34+
// pub const SO_SNDTIMEO: ::c_int =
35+
// if size_of::<::time_t>() == size_of::<::c_long>() {
36+
// super::SO_SNDTIMEO_OLD
37+
// } else {
38+
// super::SO_SNDTIMEO_NEW
39+
// };
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
2+
// pub const SO_TIMESTAMP: ::c_int = super::SO_TIMESTAMP_OLD;
3+
// pub const SO_TIMESTAMPNS: ::c_int = super::SO_TIMESTAMPNS_OLD;
4+
// pub const SO_TIMESTAMPING: ::c_int = super::SO_TIMESTAMPING_OLD;
5+
6+
// __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
7+
// pub const SO_RCVTIMEO: ::c_int = super::SO_RCVTIMEO_OLD;
8+
// pub const SO_SNDTIMEO: ::c_int = super::SO_SNDTIMEO_OLD;

0 commit comments

Comments
 (0)