Skip to content

Commit 03f6759

Browse files
psumberatgross35
authored andcommitted
Add missing networking support for Solaris
(backport <#3717>) (cherry picked from commit 7d2eb94)
1 parent 3280331 commit 03f6759

File tree

3 files changed

+59
-10
lines changed

3 files changed

+59
-10
lines changed

libc-test/semver/solarish.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,14 @@
1+
IPV6_DONTFRAG
2+
IPV6_PKTINFO
3+
IPV6_RECVTCLASS
4+
IPV6_TCLASS
5+
IP_DONTFRAG
6+
IP_PKTINFO
7+
IP_TOS
8+
IP_TTL
19
PIPE_BUF
10+
bind
11+
in6_pktinfo
12+
in_pktinfo
13+
recvmsg
14+
sendmsg

src/unix/mod.rs

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,10 @@ extern "C" {
595595
target_vendor = "nintendo"
596596
)))]
597597
#[cfg_attr(target_os = "netbsd", link_name = "__socket30")]
598-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_socket")]
598+
#[cfg_attr(
599+
any(target_os = "illumos", target_os = "solaris"),
600+
link_name = "__xnet_socket"
601+
)]
599602
#[cfg_attr(target_os = "espidf", link_name = "lwip_socket")]
600603
pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int;
601604
#[cfg(not(all(
@@ -607,7 +610,10 @@ extern "C" {
607610
all(target_os = "macos", target_arch = "x86"),
608611
link_name = "connect$UNIX2003"
609612
)]
610-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_connect")]
613+
#[cfg_attr(
614+
any(target_os = "illumos", target_os = "solaris"),
615+
link_name = "__xnet_connect"
616+
)]
611617
#[cfg_attr(target_os = "espidf", link_name = "lwip_connect")]
612618
pub fn connect(socket: ::c_int, address: *const sockaddr, len: socklen_t) -> ::c_int;
613619
#[cfg_attr(
@@ -669,7 +675,10 @@ extern "C" {
669675
all(target_os = "macos", target_arch = "x86"),
670676
link_name = "socketpair$UNIX2003"
671677
)]
672-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_socketpair")]
678+
#[cfg_attr(
679+
any(target_os = "illumos", target_os = "solaris"),
680+
link_name = "__xnet_socketpair"
681+
)]
673682
pub fn socketpair(
674683
domain: ::c_int,
675684
type_: ::c_int,
@@ -685,7 +694,10 @@ extern "C" {
685694
all(target_os = "macos", target_arch = "x86"),
686695
link_name = "sendto$UNIX2003"
687696
)]
688-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_sendto")]
697+
#[cfg_attr(
698+
any(target_os = "illumos", target_os = "solaris"),
699+
link_name = "__xnet_sendto"
700+
)]
689701
#[cfg_attr(target_os = "espidf", link_name = "lwip_sendto")]
690702
pub fn sendto(
691703
socket: ::c_int,
@@ -1164,7 +1176,10 @@ extern "C" {
11641176
pub fn pthread_rwlockattr_init(attr: *mut pthread_rwlockattr_t) -> ::c_int;
11651177
pub fn pthread_rwlockattr_destroy(attr: *mut pthread_rwlockattr_t) -> ::c_int;
11661178

1167-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_getsockopt")]
1179+
#[cfg_attr(
1180+
any(target_os = "illumos", target_os = "solaris"),
1181+
link_name = "__xnet_getsockopt"
1182+
)]
11681183
#[cfg_attr(target_os = "espidf", link_name = "lwip_getsockopt")]
11691184
pub fn getsockopt(
11701185
sockfd: ::c_int,
@@ -1187,7 +1202,10 @@ extern "C" {
11871202
target_arch = "powerpc",
11881203
target_vendor = "nintendo"
11891204
)))]
1190-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_getaddrinfo")]
1205+
#[cfg_attr(
1206+
any(target_os = "illumos", target_os = "solaris"),
1207+
link_name = "__xnet_getaddrinfo"
1208+
)]
11911209
#[cfg_attr(target_os = "espidf", link_name = "lwip_getaddrinfo")]
11921210
pub fn getaddrinfo(
11931211
node: *const c_char,

src/unix/solarish/mod.rs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,17 @@ s! {
120120
pub __sin6_src_id: u32
121121
}
122122

123+
pub struct in_pktinfo {
124+
pub ipi_ifindex: ::c_uint,
125+
pub ipi_spec_dst: ::in_addr,
126+
pub ipi_addr: ::in_addr,
127+
}
128+
129+
pub struct in6_pktinfo {
130+
pub ipi6_addr: ::in6_addr,
131+
pub ipi6_ifindex: ::c_uint,
132+
}
133+
123134
pub struct passwd {
124135
pub pw_name: *mut ::c_char,
125136
pub pw_passwd: *mut ::c_char,
@@ -1238,14 +1249,20 @@ pub const CLD_STOPPED: ::c_int = 5;
12381249
pub const CLD_CONTINUED: ::c_int = 6;
12391250

12401251
pub const IP_RECVDSTADDR: ::c_int = 0x7;
1252+
pub const IP_PKTINFO: ::c_int = 0x1a;
1253+
pub const IP_DONTFRAG: ::c_int = 0x1b;
12411254
pub const IP_SEC_OPT: ::c_int = 0x22;
12421255

12431256
pub const IPV6_UNICAST_HOPS: ::c_int = 0x5;
12441257
pub const IPV6_MULTICAST_IF: ::c_int = 0x6;
12451258
pub const IPV6_MULTICAST_HOPS: ::c_int = 0x7;
12461259
pub const IPV6_MULTICAST_LOOP: ::c_int = 0x8;
1260+
pub const IPV6_PKTINFO: ::c_int = 0xb;
12471261
pub const IPV6_RECVPKTINFO: ::c_int = 0x12;
1262+
pub const IPV6_RECVTCLASS: ::c_int = 0x19;
1263+
pub const IPV6_DONTFRAG: ::c_int = 0x21;
12481264
pub const IPV6_SEC_OPT: ::c_int = 0x22;
1265+
pub const IPV6_TCLASS: ::c_int = 0x26;
12491266
pub const IPV6_V6ONLY: ::c_int = 0x27;
12501267

12511268
cfg_if! {
@@ -1775,8 +1792,9 @@ pub const SOCK_SEQPACKET: ::c_int = 6;
17751792
pub const IP_MULTICAST_IF: ::c_int = 16;
17761793
pub const IP_MULTICAST_TTL: ::c_int = 17;
17771794
pub const IP_MULTICAST_LOOP: ::c_int = 18;
1778-
pub const IP_TTL: ::c_int = 4;
17791795
pub const IP_HDRINCL: ::c_int = 2;
1796+
pub const IP_TOS: ::c_int = 3;
1797+
pub const IP_TTL: ::c_int = 4;
17801798
pub const IP_ADD_MEMBERSHIP: ::c_int = 19;
17811799
pub const IP_DROP_MEMBERSHIP: ::c_int = 20;
17821800
pub const IPV6_JOIN_GROUP: ::c_int = 9;
@@ -2869,15 +2887,15 @@ extern "C" {
28692887
) -> ::c_int;
28702888
pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
28712889

2872-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_bind")]
2890+
#[link_name = "__xnet_bind"]
28732891
pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_int;
28742892

28752893
pub fn writev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
28762894
pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
28772895

2878-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_sendmsg")]
2896+
#[link_name = "__xnet_sendmsg"]
28792897
pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;
2880-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_recvmsg")]
2898+
#[link_name = "__xnet_recvmsg"]
28812899
pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;
28822900
pub fn accept4(
28832901
fd: ::c_int,

0 commit comments

Comments
 (0)