summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluozijun <gnulinux@126.com>2017-12-12 11:24:00 +0800
committerluozijun <gnulinux@126.com>2017-12-12 11:24:00 +0800
commit789fd5eb81890cd380e2ce707a57f915c974ba5e (patch)
treee081b67fd54807a49bf384b9885905b49b8761ad
parent0061cc9510390b0bf9d887d1c2d5e8d3744a4125 (diff)
downloadrust-libc-789fd5eb81890cd380e2ce707a57f915c974ba5e.tar.gz
Add `sockaddr_dl` for all bsdlike
-rw-r--r--libc-test/build.rs2
-rw-r--r--src/unix/bsd/apple/mod.rs28
-rw-r--r--src/unix/bsd/freebsdlike/dragonfly/mod.rs13
-rw-r--r--src/unix/bsd/freebsdlike/freebsd/mod.rs11
-rw-r--r--src/unix/bsd/freebsdlike/mod.rs16
-rw-r--r--src/unix/bsd/netbsdlike/netbsd/mod.rs11
-rw-r--r--src/unix/bsd/netbsdlike/openbsdlike/mod.rs11
7 files changed, 60 insertions, 32 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs
index 02ce19b813..639d235dc5 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -180,9 +180,9 @@ fn main() {
if bsdlike {
cfg.header("sys/event.h");
+ cfg.header("net/if_dl.h");
if freebsd {
cfg.header("libutil.h");
- cfg.header("net/if_dl.h");
} else {
cfg.header("util.h");
}
diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs
index 68048de359..74f0e02321 100644
--- a/src/unix/bsd/apple/mod.rs
+++ b/src/unix/bsd/apple/mod.rs
@@ -221,21 +221,6 @@ s! {
pub sin_zero: [::c_char; 8],
}
- // https://github.com/apple/darwin-xnu
- // /blob/master/bsd/net/if_dl.h#L95
- pub struct sockaddr_dl {
- pub sdl_len: ::c_uchar,
- pub sdl_family: ::c_uchar,
- pub sdl_index: ::c_ushort,
- pub sdl_type: ::c_uchar,
- pub sdl_nlen: ::c_uchar,
- pub sdl_alen: ::c_uchar,
- pub sdl_slen: ::c_uchar,
- pub sdl_data: [::c_char; 12],
- pub sdl_rcf: ::c_ushort,
- pub sdl_route: [::c_ushort; 16],
- }
-
pub struct statfs {
pub f_bsize: ::uint32_t,
pub f_iosize: ::int32_t,
@@ -491,6 +476,19 @@ s! {
pub cmd: u32,
pub cmdsize: u32,
}
+
+ pub struct sockaddr_dl {
+ pub sdl_len: ::c_uchar,
+ pub sdl_family: ::c_uchar,
+ pub sdl_index: ::c_ushort,
+ pub sdl_type: ::c_uchar,
+ pub sdl_nlen: ::c_uchar,
+ pub sdl_alen: ::c_uchar,
+ pub sdl_slen: ::c_uchar,
+ pub sdl_data: [::c_char; 12],
+ pub sdl_rcf: ::c_ushort,
+ pub sdl_route: [::c_ushort; 16],
+ }
}
pub const _UTX_USERSIZE: usize = 256;
diff --git a/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/src/unix/bsd/freebsdlike/dragonfly/mod.rs
index 88708573b4..e6fdaf21c7 100644
--- a/src/unix/bsd/freebsdlike/dragonfly/mod.rs
+++ b/src/unix/bsd/freebsdlike/dragonfly/mod.rs
@@ -168,6 +168,19 @@ s! {
pub ifm_index: ::c_ushort,
pub ifm_data: if_data,
}
+
+ pub struct sockaddr_dl {
+ pub sdl_len: ::c_uchar,
+ pub sdl_family: ::c_uchar,
+ pub sdl_index: ::c_ushort,
+ pub sdl_type: ::c_uchar,
+ pub sdl_nlen: ::c_uchar,
+ pub sdl_alen: ::c_uchar,
+ pub sdl_slen: ::c_uchar,
+ pub sdl_data: [::c_char; 12],
+ pub sdl_rcf: ::c_ushort,
+ pub sdl_route: [::c_ushort; 16],
+ }
}
pub const RAND_MAX: ::c_int = 0x7fff_ffff;
diff --git a/src/unix/bsd/freebsdlike/freebsd/mod.rs b/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 4a4323b079..a1007f9399 100644
--- a/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -135,6 +135,17 @@ s! {
pub cr_groups: [::gid_t;16],
__cr_unused1: *mut ::c_void,
}
+
+ pub struct sockaddr_dl {
+ pub sdl_len: ::c_uchar,
+ pub sdl_family: ::c_uchar,
+ pub sdl_index: ::c_ushort,
+ pub sdl_type: ::c_uchar,
+ pub sdl_nlen: ::c_uchar,
+ pub sdl_alen: ::c_uchar,
+ pub sdl_slen: ::c_uchar,
+ pub sdl_data: [::c_char; 46],
+ }
}
pub const SIGEV_THREAD_ID: ::c_int = 4;
diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs
index aa99842c73..215acee6f2 100644
--- a/src/unix/bsd/freebsdlike/mod.rs
+++ b/src/unix/bsd/freebsdlike/mod.rs
@@ -160,22 +160,6 @@ s! {
pub int_n_sign_posn: ::c_char,
}
- // See /usr/include/net/if_dl.h
- // sdl_data does not match if_dl.h on OS X,
- // since the size of 12 is a minimum.
- // Will be unsafe
- // when sdl_nlen > 40.
- pub struct sockaddr_dl {
- pub sdl_len: ::c_uchar,
- pub sdl_family: ::c_uchar,
- pub sdl_index: ::c_ushort,
- pub sdl_type: ::c_uchar,
- pub sdl_nlen: ::c_uchar,
- pub sdl_alen: ::c_uchar,
- pub sdl_slen: ::c_uchar,
- pub sdl_data: [::c_char; 46],
- }
-
pub struct cmsgcred {
pub cmcred_pid: ::pid_t,
pub cmcred_uid: ::uid_t,
diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs
index 45b728209b..b7a0bd5e8a 100644
--- a/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -293,6 +293,17 @@ s! {
pub sc_ngroups: ::c_int,
pub sc_groups: [::gid_t; 1],
}
+
+ pub struct sockaddr_dl {
+ pub sdl_len: ::c_uchar,
+ pub sdl_family: ::c_uchar,
+ pub sdl_index: ::c_ushort,
+ pub sdl_type: ::uint8_t,
+ pub sdl_nlen: ::uint8_t,
+ pub sdl_alen: ::uint8_t,
+ pub sdl_slen: ::uint8_t,
+ pub sdl_data: [::c_char; 12],
+ }
}
pub const AT_FDCWD: ::c_int = -100;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/mod.rs b/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
index aeb302f188..b98b220dd5 100644
--- a/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
+++ b/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
@@ -176,6 +176,17 @@ s! {
pub ifm_xflags: ::c_int,
pub ifm_data: if_data,
}
+
+ pub struct sockaddr_dl {
+ pub sdl_len: ::c_uchar,
+ pub sdl_family: ::c_uchar,
+ pub sdl_index: ::c_ushort,
+ pub sdl_type: ::c_uchar,
+ pub sdl_nlen: ::c_uchar,
+ pub sdl_alen: ::c_uchar,
+ pub sdl_slen: ::c_uchar,
+ pub sdl_data: [::c_char; 24],
+ }
}
pub const UT_NAMESIZE: usize = 32;