Skip to content

Commit 01ba83b

Browse files
Brijeshkrishnatgross35
authored andcommitted
added wireless struct and constants to Linux.
(backport <rust-lang#3441>) (cherry picked from commit 1ee94df)
1 parent 69ce895 commit 01ba83b

File tree

3 files changed

+267
-7
lines changed

3 files changed

+267
-7
lines changed

libc-test/Cargo.toml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,3 @@ harness = true
8787
name = "semver"
8888
path = "test/semver.rs"
8989
harness = false
90-
91-
[[test]]
92-
name = "primitive_types"
93-
path = "test/primitive_types.rs"
94-
harness = true

libc-test/semver/linux.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1353,9 +1353,16 @@ IW_ENC_CAPA_CIPHER_TKIP
13531353
IW_ENC_CAPA_WPA
13541354
IW_ENC_CAPA_WPA2
13551355
IW_ESSID_MAX_SIZE
1356+
IW_EVENT_CAPA_K_0
1357+
IW_EVENT_CAPA_K_1
1358+
IW_EV_ADDR_PK_LEN
13561359
IW_EV_CHAR_PK_LEN
1360+
IW_EV_FREQ_PK_LEN
13571361
IW_EV_LCP_PK_LEN
1362+
IW_EV_PARAM_PK_LEN
13581363
IW_EV_POINT_PK_LEN
1364+
IW_EV_QUAL_PK_LEN
1365+
IW_EV_UINT_PK_LEN
13591366
IW_FREQ_AUTO
13601367
IW_FREQ_FIXED
13611368
IW_GENERIC_IE_MAX
@@ -3728,6 +3735,22 @@ ip_mreq_source
37283735
ip_mreqn
37293736
ipc_perm
37303737
itimerspec
3738+
iw_discarded
3739+
iw_encode_ext
3740+
iw_event
3741+
iw_freq
3742+
iw_missed
3743+
iw_param
3744+
iw_pmkid_cand
3745+
iw_pmksa
3746+
iw_point
3747+
iw_priv_args
3748+
iw_quality
3749+
iw_range
3750+
iw_scan_req
3751+
iw_statistics
3752+
iwreq
3753+
iwreq_data
37313754
j1939_filter
37323755
jrand48
37333756
key_t

src/unix/linux_like/linux/mod.rs

Lines changed: 244 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,9 +1010,153 @@ cfg_if! {
10101010
pub r_addend: Elf64_Sxword,
10111011
}
10121012
}
1013+
1014+
// linux/wireless.h
1015+
1016+
pub struct iw_param {
1017+
pub value: __s32,
1018+
pub fixed: __u8,
1019+
pub disabled: __u8,
1020+
pub flags: __u16,
1021+
}
1022+
pub struct iw_point {
1023+
pub pointer: *mut ::c_void,
1024+
pub length: __u16,
1025+
pub flags: __u16,
1026+
}
1027+
pub struct iw_freq {
1028+
pub m: __s32,
1029+
pub e: __s16,
1030+
pub i: __u8,
1031+
pub flags: __u8,
1032+
}
1033+
pub struct iw_quality {
1034+
pub qual: __u8,
1035+
pub level: __u8,
1036+
pub noise: __u8,
1037+
pub updated: __u8,
1038+
}
1039+
pub struct iw_discarded {
1040+
pub nwid: __u32,
1041+
pub code: __u32,
1042+
pub fragment: __u32,
1043+
pub retries: __u32,
1044+
pubmisc: __u32,
1045+
}
1046+
pub struct iw_missed {
1047+
pub beacon: __u32,
1048+
}
1049+
pub struct iw_scan_req {
1050+
pub scan_type: __u8,
1051+
pub essid_len: __u8,
1052+
pub num_channels: __u8,
1053+
pub flags: __u8,
1054+
pub bssid: ::sockaddr,
1055+
pub essid: [__u8; IW_ESSID_MAX_SIZE],
1056+
pub min_channel_time: __u32,
1057+
pub max_channel_time: __u32,
1058+
pub channel_list: [iw_freq; IW_MAX_FREQUENCIES],
1059+
}
1060+
pub struct iw_encode_ext {
1061+
pub ext_flags: __u32,
1062+
pub tx_seq: [__u8; IW_ENCODE_SEQ_MAX_SIZE],
1063+
pub rx_seq: [__u8; IW_ENCODE_SEQ_MAX_SIZE],
1064+
pub addr: ::sockaddr,
1065+
pub alg: __u16,
1066+
pub key_len: __u16,
1067+
pub key: [__u8;0],
1068+
}
1069+
pub struct iw_pmksa {
1070+
pub cmd: __u32,
1071+
pub bssid: ::sockaddr,
1072+
pub pmkid: [__u8; IW_PMKID_LEN],
1073+
}
1074+
pub struct iw_pmkid_cand {
1075+
pub flags: __u32,
1076+
pub index: __u32,
1077+
pub bssid: ::sockaddr,
1078+
}
1079+
pub struct iw_statistics {
1080+
pub status: __u16,
1081+
pub qual: iw_quality,
1082+
pub discard: iw_discarded,
1083+
pub miss: iw_missed,
1084+
}
1085+
pub struct iw_range {
1086+
pub throughput: __u32,
1087+
pub min_nwid: __u32,
1088+
pub max_nwid: __u32,
1089+
pub old_num_channels: __u16,
1090+
pub old_num_frequency: __u8,
1091+
pub scan_capa: __u8,
1092+
pub event_capa: [__u32; 6],
1093+
pub sensitivity: __s32,
1094+
pub max_qual: iw_quality,
1095+
pub avg_qual: iw_quality,
1096+
pub num_bitrates: __u8,
1097+
pub bitrate: [__s32; IW_MAX_BITRATES],
1098+
pub min_rts: __s32,
1099+
pub max_rts: __s32,
1100+
pub min_frag: __s32,
1101+
pub max_frag: __s32,
1102+
pub min_pmp: __s32,
1103+
pub max_pmp: __s32,
1104+
pub min_pmt: __s32,
1105+
pub max_pmt: __s32,
1106+
pub pmp_flags: __u16,
1107+
pub pmt_flags: __u16,
1108+
pub pm_capa: __u16,
1109+
pub encoding_size: [__u16; IW_MAX_ENCODING_SIZES],
1110+
pub num_encoding_sizes: __u8,
1111+
pub max_encoding_tokens: __u8,
1112+
pub encoding_login_index: __u8,
1113+
pub txpower_capa: __u16,
1114+
pub num_txpower: __u8,
1115+
pub txpower: [__s32;IW_MAX_TXPOWER],
1116+
pub we_version_compiled: __u8,
1117+
pub we_version_source: __u8,
1118+
pub retry_capa: __u16,
1119+
pub retry_flags: __u16,
1120+
pub r_time_flags: __u16,
1121+
pub min_retry: __s32,
1122+
pub max_retry: __s32,
1123+
pub min_r_time: __s32,
1124+
pub max_r_time: __s32,
1125+
pub num_channels: __u16,
1126+
pub num_frequency: __u8,
1127+
pub freq: [iw_freq; IW_MAX_FREQUENCIES],
1128+
pub enc_capa: __u32,
1129+
}
1130+
pub struct iw_priv_args {
1131+
pub cmd: __u32,
1132+
pub set_args: __u16,
1133+
pub get_args: __u16,
1134+
pub name: [c_char; ::IFNAMSIZ],
10131135
}
10141136
}
10151137

1138+
cfg_if! {
1139+
if #[cfg(not(target_arch = "sparc64"))] {
1140+
s!{
1141+
pub struct iw_thrspy {
1142+
pub addr: ::sockaddr,
1143+
pub qual: iw_quality,
1144+
pub low: iw_quality,
1145+
pub high: iw_quality,
1146+
}
1147+
pub struct iw_mlme {
1148+
pub cmd: __u16,
1149+
pub reason_code: __u16,
1150+
pub addr: ::sockaddr,
1151+
}
1152+
pub struct iw_michaelmicfailure {
1153+
pub flags: __u32,
1154+
pub src_addr: ::sockaddr,
1155+
pub tsc: [__u8; IW_ENCODE_SEQ_MAX_SIZE],
1156+
}
1157+
}
1158+
}
1159+
}
10161160
s_no_extra_traits! {
10171161
pub struct sockaddr_nl {
10181162
pub nl_family: ::sa_family_t,
@@ -1325,6 +1469,45 @@ s_no_extra_traits! {
13251469
}
13261470
}
13271471

1472+
s_no_extra_traits! {
1473+
// linux/wireless.h
1474+
pub union iwreq_data {
1475+
pub name: [c_char; ::IFNAMSIZ],
1476+
pub essid: iw_point,
1477+
pub nwid: iw_param,
1478+
pub freq: iw_freq,
1479+
pub sens: iw_param,
1480+
pub bitrate: iw_param,
1481+
pub txpower: iw_param,
1482+
pub rts: iw_param,
1483+
pub frag: iw_param,
1484+
pub mode: __u32,
1485+
pub retry: iw_param,
1486+
pub encoding: iw_point,
1487+
pub power: iw_param,
1488+
pub qual: iw_quality,
1489+
pub ap_addr: ::sockaddr,
1490+
pub addr: ::sockaddr,
1491+
pub param: iw_param,
1492+
pub data: iw_point,
1493+
}
1494+
1495+
pub struct iw_event {
1496+
pub len: __u16,
1497+
pub cmd: __u16,
1498+
pub u: iwreq_data,
1499+
}
1500+
1501+
pub union __c_anonymous_iwreq {
1502+
pub ifrn_name: [c_char; ::IFNAMSIZ],
1503+
}
1504+
1505+
pub struct iwreq {
1506+
pub ifr_ifrn: __c_anonymous_iwreq,
1507+
pub u: iwreq_data,
1508+
}
1509+
}
1510+
13281511
cfg_if! {
13291512
if #[cfg(feature = "extra_traits")] {
13301513
impl PartialEq for sockaddr_nl {
@@ -1797,6 +1980,57 @@ cfg_if! {
17971980
self.sched_period.hash(state);
17981981
}
17991982
}
1983+
impl ::fmt::Debug for iwreq_data {
1984+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
1985+
f.debug_struct("iwreq_data")
1986+
.field("name", unsafe { &self.name })
1987+
.field("essid", unsafe { &self.essid })
1988+
.field("nwid", unsafe { &self.nwid })
1989+
.field("freq", unsafe { &self.freq })
1990+
.field("sens", unsafe { &self.sens })
1991+
.field("bitrate", unsafe { &self.bitrate })
1992+
.field("txpower", unsafe { &self.txpower })
1993+
.field("rts", unsafe { &self.rts })
1994+
.field("frag", unsafe { &self.frag })
1995+
.field("mode", unsafe { &self.mode })
1996+
.field("retry", unsafe { &self.retry })
1997+
.field("encoding", unsafe { &self.encoding })
1998+
.field("power", unsafe { &self.power })
1999+
.field("qual", unsafe { &self.qual })
2000+
.field("ap_addr", unsafe { &self.ap_addr })
2001+
.field("addr", unsafe { &self.addr })
2002+
.field("param", unsafe { &self.param })
2003+
.field("data", unsafe { &self.data })
2004+
.finish()
2005+
}
2006+
}
2007+
2008+
impl ::fmt::Debug for iw_event {
2009+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2010+
f.debug_struct("iw_event")
2011+
.field("len", &self.len )
2012+
.field("cmd", &self.cmd )
2013+
.field("u", &self.u )
2014+
.finish()
2015+
}
2016+
}
2017+
2018+
impl ::fmt::Debug for __c_anonymous_iwreq {
2019+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2020+
f.debug_struct("__c_anonymous_iwreq")
2021+
.field("ifrn_name", unsafe { &self.ifrn_name })
2022+
.finish()
2023+
}
2024+
}
2025+
2026+
impl ::fmt::Debug for iwreq {
2027+
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
2028+
f.debug_struct("iwreq")
2029+
.field("ifr_ifrn", &self.ifr_ifrn )
2030+
.field("u", &self.u )
2031+
.finish()
2032+
}
2033+
}
18002034
}
18012035
}
18022036

@@ -3794,6 +4028,9 @@ pub const IW_ENC_CAPA_CIPHER_TKIP: ::c_ulong = 0x00000004;
37944028
pub const IW_ENC_CAPA_CIPHER_CCMP: ::c_ulong = 0x00000008;
37954029
pub const IW_ENC_CAPA_4WAY_HANDSHAKE: ::c_ulong = 0x00000010;
37964030

4031+
pub const IW_EVENT_CAPA_K_0: c_ulong = 0x4000050; // IW_EVENT_CAPA_MASK(0x8B04) | IW_EVENT_CAPA_MASK(0x8B06) | IW_EVENT_CAPA_MASK(0x8B1A);
4032+
pub const IW_EVENT_CAPA_K_1: c_ulong = 0x400; // W_EVENT_CAPA_MASK(0x8B2A);
4033+
37974034
pub const IW_PMKSA_ADD: usize = 1;
37984035
pub const IW_PMKSA_REMOVE: usize = 2;
37994036
pub const IW_PMKSA_FLUSH: usize = 3;
@@ -3804,8 +4041,13 @@ pub const IW_PMKID_CAND_PREAUTH: ::c_ulong = 0x00000001;
38044041

38054042
pub const IW_EV_LCP_PK_LEN: usize = 4;
38064043

3807-
pub const IW_EV_CHAR_PK_LEN: usize = IW_EV_LCP_PK_LEN + ::IFNAMSIZ;
3808-
pub const IW_EV_POINT_PK_LEN: usize = IW_EV_LCP_PK_LEN + 4;
4044+
pub const IW_EV_CHAR_PK_LEN: usize = 20; // IW_EV_LCP_PK_LEN + ::IFNAMSIZ;
4045+
pub const IW_EV_UINT_PK_LEN: usize = 8; // IW_EV_LCP_PK_LEN + ::mem::size_of::<u32>();
4046+
pub const IW_EV_FREQ_PK_LEN: usize = 12; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_freq>();
4047+
pub const IW_EV_PARAM_PK_LEN: usize = 12; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_param>();
4048+
pub const IW_EV_ADDR_PK_LEN: usize = 20; // IW_EV_LCP_PK_LEN + ::mem::size_of::<::sockaddr>();
4049+
pub const IW_EV_QUAL_PK_LEN: usize = 8; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_quality>();
4050+
pub const IW_EV_POINT_PK_LEN: usize = 8; // IW_EV_LCP_PK_LEN + 4;
38094051

38104052
pub const IPTOS_TOS_MASK: u8 = 0x1E;
38114053
pub const IPTOS_PREC_MASK: u8 = 0xE0;

0 commit comments

Comments
 (0)