Skip to content

Commit 7d2eb94

Browse files
committed
Add missing networking support for Solaris
1 parent e209061 commit 7d2eb94

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
@@ -590,15 +590,21 @@ extern "C" {
590590

591591
#[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
592592
#[cfg_attr(target_os = "netbsd", link_name = "__socket30")]
593-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_socket")]
593+
#[cfg_attr(
594+
any(target_os = "illumos", target_os = "solaris"),
595+
link_name = "__xnet_socket"
596+
)]
594597
#[cfg_attr(target_os = "espidf", link_name = "lwip_socket")]
595598
pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int;
596599
#[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
597600
#[cfg_attr(
598601
all(target_os = "macos", target_arch = "x86"),
599602
link_name = "connect$UNIX2003"
600603
)]
601-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_connect")]
604+
#[cfg_attr(
605+
any(target_os = "illumos", target_os = "solaris"),
606+
link_name = "__xnet_connect"
607+
)]
602608
#[cfg_attr(target_os = "espidf", link_name = "lwip_connect")]
603609
pub fn connect(socket: ::c_int, address: *const sockaddr, len: socklen_t) -> ::c_int;
604610
#[cfg_attr(
@@ -648,7 +654,10 @@ extern "C" {
648654
all(target_os = "macos", target_arch = "x86"),
649655
link_name = "socketpair$UNIX2003"
650656
)]
651-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_socketpair")]
657+
#[cfg_attr(
658+
any(target_os = "illumos", target_os = "solaris"),
659+
link_name = "__xnet_socketpair"
660+
)]
652661
pub fn socketpair(
653662
domain: ::c_int,
654663
type_: ::c_int,
@@ -660,7 +669,10 @@ extern "C" {
660669
all(target_os = "macos", target_arch = "x86"),
661670
link_name = "sendto$UNIX2003"
662671
)]
663-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_sendto")]
672+
#[cfg_attr(
673+
any(target_os = "illumos", target_os = "solaris"),
674+
link_name = "__xnet_sendto"
675+
)]
664676
#[cfg_attr(target_os = "espidf", link_name = "lwip_sendto")]
665677
pub fn sendto(
666678
socket: ::c_int,
@@ -1137,7 +1149,10 @@ extern "C" {
11371149
pub fn pthread_rwlockattr_init(attr: *mut pthread_rwlockattr_t) -> ::c_int;
11381150
pub fn pthread_rwlockattr_destroy(attr: *mut pthread_rwlockattr_t) -> ::c_int;
11391151

1140-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_getsockopt")]
1152+
#[cfg_attr(
1153+
any(target_os = "illumos", target_os = "solaris"),
1154+
link_name = "__xnet_getsockopt"
1155+
)]
11411156
#[cfg_attr(target_os = "espidf", link_name = "lwip_getsockopt")]
11421157
pub fn getsockopt(
11431158
sockfd: ::c_int,
@@ -1156,7 +1171,10 @@ extern "C" {
11561171
pub fn dlclose(handle: *mut ::c_void) -> ::c_int;
11571172

11581173
#[cfg(not(all(target_arch = "powerpc", target_vendor = "nintendo")))]
1159-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_getaddrinfo")]
1174+
#[cfg_attr(
1175+
any(target_os = "illumos", target_os = "solaris"),
1176+
link_name = "__xnet_getaddrinfo"
1177+
)]
11601178
#[cfg_attr(target_os = "espidf", link_name = "lwip_getaddrinfo")]
11611179
pub fn getaddrinfo(
11621180
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,
@@ -1224,14 +1235,20 @@ pub const CLD_STOPPED: ::c_int = 5;
12241235
pub const CLD_CONTINUED: ::c_int = 6;
12251236

12261237
pub const IP_RECVDSTADDR: ::c_int = 0x7;
1238+
pub const IP_PKTINFO: ::c_int = 0x1a;
1239+
pub const IP_DONTFRAG: ::c_int = 0x1b;
12271240
pub const IP_SEC_OPT: ::c_int = 0x22;
12281241

12291242
pub const IPV6_UNICAST_HOPS: ::c_int = 0x5;
12301243
pub const IPV6_MULTICAST_IF: ::c_int = 0x6;
12311244
pub const IPV6_MULTICAST_HOPS: ::c_int = 0x7;
12321245
pub const IPV6_MULTICAST_LOOP: ::c_int = 0x8;
1246+
pub const IPV6_PKTINFO: ::c_int = 0xb;
12331247
pub const IPV6_RECVPKTINFO: ::c_int = 0x12;
1248+
pub const IPV6_RECVTCLASS: ::c_int = 0x19;
1249+
pub const IPV6_DONTFRAG: ::c_int = 0x21;
12341250
pub const IPV6_SEC_OPT: ::c_int = 0x22;
1251+
pub const IPV6_TCLASS: ::c_int = 0x26;
12351252
pub const IPV6_V6ONLY: ::c_int = 0x27;
12361253

12371254
cfg_if! {
@@ -1761,8 +1778,9 @@ pub const SOCK_SEQPACKET: ::c_int = 6;
17611778
pub const IP_MULTICAST_IF: ::c_int = 16;
17621779
pub const IP_MULTICAST_TTL: ::c_int = 17;
17631780
pub const IP_MULTICAST_LOOP: ::c_int = 18;
1764-
pub const IP_TTL: ::c_int = 4;
17651781
pub const IP_HDRINCL: ::c_int = 2;
1782+
pub const IP_TOS: ::c_int = 3;
1783+
pub const IP_TTL: ::c_int = 4;
17661784
pub const IP_ADD_MEMBERSHIP: ::c_int = 19;
17671785
pub const IP_DROP_MEMBERSHIP: ::c_int = 20;
17681786
pub const IPV6_JOIN_GROUP: ::c_int = 9;
@@ -2855,15 +2873,15 @@ extern "C" {
28552873
) -> ::c_int;
28562874
pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
28572875

2858-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_bind")]
2876+
#[link_name = "__xnet_bind"]
28592877
pub fn bind(socket: ::c_int, address: *const ::sockaddr, address_len: ::socklen_t) -> ::c_int;
28602878

28612879
pub fn writev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
28622880
pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
28632881

2864-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_sendmsg")]
2882+
#[link_name = "__xnet_sendmsg"]
28652883
pub fn sendmsg(fd: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;
2866-
#[cfg_attr(target_os = "illumos", link_name = "__xnet_recvmsg")]
2884+
#[link_name = "__xnet_recvmsg"]
28672885
pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;
28682886
pub fn accept4(
28692887
fd: ::c_int,

0 commit comments

Comments
 (0)