summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dox.rs5
-rw-r--r--src/unix/bsd/apple/mod.rs3
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs1
-rw-r--r--src/unix/bsd/freebsdlike/mod.rs2
-rw-r--r--src/unix/bsd/mod.rs7
-rw-r--r--src/unix/bsd/netbsdlike/mod.rs2
-rw-r--r--src/unix/notbsd/android/mod.rs2
-rw-r--r--src/unix/notbsd/linux/mod.rs2
-rw-r--r--src/unix/notbsd/mod.rs13
-rw-r--r--src/windows/mod.rs35
10 files changed, 72 insertions, 0 deletions
diff --git a/src/dox.rs b/src/dox.rs
index 33a9c166f4..6296c6c025 100644
--- a/src/dox.rs
+++ b/src/dox.rs
@@ -52,6 +52,11 @@ mod imp {
#[lang = "sized"]
pub trait Sized {}
+ #[lang = "receiver"]
+ pub trait Receiver {}
+ impl<T: ?Sized> Receiver for &T {}
+ impl<T: ?Sized> Receiver for &mut T {}
+
macro_rules! each_int {
($mac:ident) => {
$mac!(u8);
diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs
index c88693bf7e..4d41027ada 100644
--- a/src/unix/bsd/apple/mod.rs
+++ b/src/unix/bsd/apple/mod.rs
@@ -1573,8 +1573,11 @@ pub const IP_HDRINCL: ::c_int = 2;
pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
pub const IP_PKTINFO: ::c_int = 26;
+pub const IP_RECVTOS: ::c_int = 27;
pub const IPV6_JOIN_GROUP: ::c_int = 12;
pub const IPV6_LEAVE_GROUP: ::c_int = 13;
+pub const IPV6_RECVTCLASS: ::c_int = 35;
+pub const IPV6_TCLASS: ::c_int = 36;
pub const IPV6_PKTINFO: ::c_int = 46;
pub const IPV6_RECVPKTINFO: ::c_int = 61;
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 1ead1665b5..03b19eb7c1 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -803,6 +803,7 @@ pub const TCP_PCAP_OUT: ::c_int = 2048;
pub const TCP_PCAP_IN: ::c_int = 4096;
pub const IP_BINDANY: ::c_int = 24;
+pub const IP_RECVTOS: ::c_int = 68;
pub const PF_SLOW: ::c_int = AF_SLOW;
pub const PF_SCLUSTER: ::c_int = AF_SCLUSTER;
diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs
index cb3dba4004..1dc559aff3 100644
--- a/src/unix/bsd/freebsdlike/mod.rs
+++ b/src/unix/bsd/freebsdlike/mod.rs
@@ -668,6 +668,8 @@ pub const IPV6_JOIN_GROUP: ::c_int = 12;
pub const IPV6_LEAVE_GROUP: ::c_int = 13;
pub const IPV6_RECVPKTINFO: ::c_int = 36;
pub const IPV6_PKTINFO: ::c_int = 46;
+pub const IPV6_RECVTCLASS: ::c_int = 57;
+pub const IPV6_TCLASS: ::c_int = 61;
pub const TCP_NOPUSH: ::c_int = 4;
pub const TCP_NOOPT: ::c_int = 8;
diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs
index 770b9b9818..03125c9473 100644
--- a/src/unix/bsd/mod.rs
+++ b/src/unix/bsd/mod.rs
@@ -179,6 +179,7 @@ pub const SIG_SETMASK: ::c_int = 3;
pub const SIG_BLOCK: ::c_int = 0x1;
pub const SIG_UNBLOCK: ::c_int = 0x2;
+pub const IP_TOS: ::c_int = 3;
pub const IP_MULTICAST_IF: ::c_int = 9;
pub const IP_MULTICAST_TTL: ::c_int = 10;
pub const IP_MULTICAST_LOOP: ::c_int = 11;
@@ -189,6 +190,12 @@ pub const IPV6_MULTICAST_HOPS: ::c_int = 10;
pub const IPV6_MULTICAST_LOOP: ::c_int = 11;
pub const IPV6_V6ONLY: ::c_int = 27;
+pub const IPTOS_ECN_NOTECT: u8 = 0x00;
+pub const IPTOS_ECN_MASK: u8 = 0x03;
+pub const IPTOS_ECN_ECT1: u8 = 0x01;
+pub const IPTOS_ECN_ECT0: u8 = 0x02;
+pub const IPTOS_ECN_CE: u8 = 0x03;
+
pub const ST_RDONLY: ::c_ulong = 1;
pub const SCM_RIGHTS: ::c_int = 0x01;
diff --git a/src/unix/bsd/netbsdlike/mod.rs b/src/unix/bsd/netbsdlike/mod.rs
index bfd541d8a0..abd014c461 100644
--- a/src/unix/bsd/netbsdlike/mod.rs
+++ b/src/unix/bsd/netbsdlike/mod.rs
@@ -430,6 +430,8 @@ pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
pub const IPV6_RECVPKTINFO: ::c_int = 36;
pub const IPV6_PKTINFO: ::c_int = 46;
+pub const IPV6_RECVTCLASS: ::c_int = 57;
+pub const IPV6_TCLASS: ::c_int = 61;
pub const SOL_SOCKET: ::c_int = 0xffff;
pub const SO_DEBUG: ::c_int = 0x01;
diff --git a/src/unix/notbsd/android/mod.rs b/src/unix/notbsd/android/mod.rs
index 31e0c44db4..972281c828 100644
--- a/src/unix/notbsd/android/mod.rs
+++ b/src/unix/notbsd/android/mod.rs
@@ -666,6 +666,8 @@ pub const SO_RXQ_OVFL: ::c_int = 40;
pub const SO_PEEK_OFF: ::c_int = 42;
pub const SO_BUSY_POLL: ::c_int = 46;
+pub const IPTOS_ECN_NOTECT: u8 = 0x00;
+
pub const O_ACCMODE: ::c_int = 3;
pub const O_APPEND: ::c_int = 1024;
pub const O_CREAT: ::c_int = 64;
diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs
index b8da914a8d..8669a06ca5 100644
--- a/src/unix/notbsd/linux/mod.rs
+++ b/src/unix/notbsd/linux/mod.rs
@@ -1612,6 +1612,8 @@ pub const SIOCSIFMAP: ::c_ulong = 0x00008971;
pub const IPTOS_TOS_MASK: u8 = 0x1E;
pub const IPTOS_PREC_MASK: u8 = 0xE0;
+pub const IPTOS_ECN_NOT_ECT: u8 = 0x00;
+
pub const RTF_UP: ::c_ushort = 0x0001;
pub const RTF_GATEWAY: ::c_ushort = 0x0002;
diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs
index 9557d1b3ad..6ff0807da7 100644
--- a/src/unix/notbsd/mod.rs
+++ b/src/unix/notbsd/mod.rs
@@ -623,9 +623,11 @@ pub const SOCK_RDM: ::c_int = 4;
pub const IP_MULTICAST_IF: ::c_int = 32;
pub const IP_MULTICAST_TTL: ::c_int = 33;
pub const IP_MULTICAST_LOOP: ::c_int = 34;
+pub const IP_TOS: ::c_int = 1;
pub const IP_TTL: ::c_int = 2;
pub const IP_HDRINCL: ::c_int = 3;
pub const IP_PKTINFO: ::c_int = 8;
+pub const IP_RECVTOS: ::c_int = 13;
pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
pub const IP_TRANSPARENT: ::c_int = 19;
@@ -638,6 +640,8 @@ pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
pub const IPV6_V6ONLY: ::c_int = 26;
pub const IPV6_RECVPKTINFO: ::c_int = 49;
pub const IPV6_PKTINFO: ::c_int = 50;
+pub const IPV6_RECVTCLASS: ::c_int = 66;
+pub const IPV6_TCLASS: ::c_int = 67;
pub const TCP_NODELAY: ::c_int = 1;
pub const TCP_MAXSEG: ::c_int = 2;
@@ -874,6 +878,11 @@ pub const IPTOS_PREC_IMMEDIATE: u8 = 0x40;
pub const IPTOS_PREC_PRIORITY: u8 = 0x20;
pub const IPTOS_PREC_ROUTINE: u8 = 0x00;
+pub const IPTOS_ECN_MASK: u8 = 0x03;
+pub const IPTOS_ECN_ECT1: u8 = 0x01;
+pub const IPTOS_ECN_ECT0: u8 = 0x02;
+pub const IPTOS_ECN_CE: u8 = 0x03;
+
pub const IPOPT_COPY: u8 = 0x80;
pub const IPOPT_CLASS_MASK: u8 = 0x60;
pub const IPOPT_NUMBER_MASK: u8 = 0x1f;
@@ -1087,6 +1096,10 @@ f! {
pub fn IPOPT_NUMBER(o: u8) -> u8 {
o & IPOPT_NUMBER_MASK
}
+
+ pub fn IPTOS_ECN(x: u8) -> u8 {
+ x & ::IPTOS_ECN_MASK
+ }
}
extern {
diff --git a/src/windows/mod.rs b/src/windows/mod.rs
index c5462ffb78..4bea45980b 100644
--- a/src/windows/mod.rs
+++ b/src/windows/mod.rs
@@ -50,6 +50,8 @@ pub type ino_t = u16;
pub enum timezone {}
pub type time64_t = i64;
+pub type SOCKET = ::uintptr_t;
+
s! {
// note this is the struct called stat64 in Windows. Not stat, nor stati64.
pub struct stat {
@@ -93,6 +95,11 @@ s! {
pub tv_sec: time_t,
pub tv_nsec: c_long,
}
+
+ pub struct sockaddr {
+ pub sa_family: c_ushort,
+ pub sa_data: [c_char; 14],
+ }
}
pub const INT_MIN: c_int = -2147483648;
@@ -383,6 +390,34 @@ extern {
locale: *const wchar_t) -> *mut wchar_t;
}
+extern "system" {
+ pub fn listen(s: SOCKET, backlog: ::c_int) -> ::c_int;
+ pub fn accept(s: SOCKET, addr: *mut ::sockaddr,
+ addrlen: *mut ::c_int) -> SOCKET;
+ pub fn bind(s: SOCKET, name: *const ::sockaddr,
+ namelen: ::c_int) -> ::c_int;
+ pub fn connect(s: SOCKET, name: *const ::sockaddr,
+ namelen: ::c_int) -> ::c_int;
+ pub fn getpeername(s: SOCKET, name: *mut ::sockaddr,
+ nameln: *mut ::c_int) -> ::c_int;
+ pub fn getsockname(s: SOCKET, name: *mut ::sockaddr,
+ nameln: *mut ::c_int) -> ::c_int;
+ pub fn getsockopt(s: SOCKET, level: ::c_int, optname: ::c_int,
+ optval: *mut ::c_char,
+ optlen: *mut ::c_int) -> ::c_int;
+ pub fn recvfrom(s: SOCKET, buf: *mut ::c_char, len: ::c_int,
+ flags: ::c_int, from: *mut ::sockaddr,
+ fromlen: *mut ::c_int) -> ::c_int;
+ pub fn sendto(s: SOCKET, buf: *const ::c_char, len: ::c_int,
+ flags: ::c_int, to: *const ::sockaddr,
+ tolen: ::c_int) -> ::c_int;
+ pub fn setsockopt(s: SOCKET, level: ::c_int, optname: ::c_int,
+ optval: *const ::c_char,
+ optlen: ::c_int) -> ::c_int;
+ pub fn socket(af: ::c_int, socket_type: ::c_int,
+ protocol: ::c_int) -> SOCKET;
+}
+
cfg_if! {
if #[cfg(core_cvoid)] {
pub use core::ffi::c_void;