@@ -993,6 +993,141 @@ s! {
993
993
pub ts_first_pkt: :: tpacket_bd_ts,
994
994
pub ts_last_pkt: :: tpacket_bd_ts,
995
995
}
996
+
997
+ // linux/wireless.h
998
+
999
+ pub struct iw_param {
1000
+ pub value: __s32,
1001
+ pub fixed: __u8,
1002
+ pub disabled: __u8,
1003
+ pub flags: __u16,
1004
+ }
1005
+
1006
+ pub struct iw_point {
1007
+ pub pointer: * mut :: c_void,
1008
+ pub length: __u16,
1009
+ pub flags: __u16,
1010
+ }
1011
+
1012
+ pub struct iw_freq {
1013
+ pub m: __s32,
1014
+ pub e: __s16,
1015
+ pub i: __u8,
1016
+ pub flags: __u8,
1017
+ }
1018
+
1019
+ pub struct iw_quality {
1020
+ pub qual: __u8,
1021
+ pub level: __u8,
1022
+ pub noise: __u8,
1023
+ pub updated: __u8,
1024
+ }
1025
+
1026
+ pub struct iw_discarded {
1027
+ pub nwid: __u32,
1028
+ pub code: __u32,
1029
+ pub fragment: __u32,
1030
+ pub retries: __u32,
1031
+ pubmisc: __u32,
1032
+ }
1033
+
1034
+ pub struct iw_missed {
1035
+ pub beacon: __u32,
1036
+ }
1037
+
1038
+ pub struct iw_scan_req {
1039
+ pub scan_type: __u8,
1040
+ pub essid_len: __u8,
1041
+ pub num_channels: __u8,
1042
+ pub flags: __u8,
1043
+ pub bssid: :: sockaddr,
1044
+ pub essid: [ __u8; IW_ESSID_MAX_SIZE ] ,
1045
+ pub min_channel_time: __u32,
1046
+ pub max_channel_time: __u32,
1047
+ pub channel_list: [ iw_freq; IW_MAX_FREQUENCIES ] ,
1048
+ }
1049
+
1050
+ pub struct iw_encode_ext {
1051
+ pub ext_flags: __u32,
1052
+ pub tx_seq: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
1053
+ pub rx_seq: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
1054
+ pub addr: :: sockaddr,
1055
+ pub alg: __u16,
1056
+ pub key_len: __u16,
1057
+ pub key: [ __u8; 0 ] ,
1058
+ }
1059
+
1060
+ pub struct iw_pmksa {
1061
+ pub cmd: __u32,
1062
+ pub bssid: :: sockaddr,
1063
+ pub pmkid: [ __u8; IW_PMKID_LEN ] ,
1064
+ }
1065
+
1066
+ pub struct iw_pmkid_cand {
1067
+ pub flags: __u32,
1068
+ pub index: __u32,
1069
+ pub bssid: :: sockaddr,
1070
+ }
1071
+
1072
+ pub struct iw_statistics {
1073
+ pub status: __u16,
1074
+ pub qual: iw_quality,
1075
+ pub discard: iw_discarded,
1076
+ pub miss: iw_missed,
1077
+ }
1078
+
1079
+ pub struct iw_range {
1080
+ pub throughput: __u32,
1081
+ pub min_nwid: __u32,
1082
+ pub max_nwid: __u32,
1083
+ pub old_num_channels: __u16,
1084
+ pub old_num_frequency: __u8,
1085
+ pub scan_capa: __u8,
1086
+ pub event_capa: [ __u32; 6 ] ,
1087
+ pub sensitivity: __s32,
1088
+ pub max_qual: iw_quality,
1089
+ pub avg_qual: iw_quality,
1090
+ pub num_bitrates: __u8,
1091
+ pub bitrate: [ __s32; IW_MAX_BITRATES ] ,
1092
+ pub min_rts: __s32,
1093
+ pub max_rts: __s32,
1094
+ pub min_frag: __s32,
1095
+ pub max_frag: __s32,
1096
+ pub min_pmp: __s32,
1097
+ pub max_pmp: __s32,
1098
+ pub min_pmt: __s32,
1099
+ pub max_pmt: __s32,
1100
+ pub pmp_flags: __u16,
1101
+ pub pmt_flags: __u16,
1102
+ pub pm_capa: __u16,
1103
+ pub encoding_size: [ __u16; IW_MAX_ENCODING_SIZES ] ,
1104
+ pub num_encoding_sizes: __u8,
1105
+ pub max_encoding_tokens: __u8,
1106
+ pub encoding_login_index: __u8,
1107
+ pub txpower_capa: __u16,
1108
+ pub num_txpower: __u8,
1109
+ pub txpower: [ __s32; IW_MAX_TXPOWER ] ,
1110
+ pub we_version_compiled: __u8,
1111
+ pub we_version_source: __u8,
1112
+ pub retry_capa: __u16,
1113
+ pub retry_flags: __u16,
1114
+ pub r_time_flags: __u16,
1115
+ pub min_retry: __s32,
1116
+ pub max_retry: __s32,
1117
+ pub min_r_time: __s32,
1118
+ pub max_r_time: __s32,
1119
+ pub num_channels: __u16,
1120
+ pub num_frequency: __u8,
1121
+ pub freq: [ iw_freq; IW_MAX_FREQUENCIES ] ,
1122
+ pub enc_capa: __u32,
1123
+ }
1124
+
1125
+ pub struct iw_priv_args {
1126
+ pub cmd: __u32,
1127
+ pub set_args: __u16,
1128
+ pub get_args: __u16,
1129
+ pub name: [ c_char; :: IFNAMSIZ ] ,
1130
+ }
996
1131
}
997
1132
998
1133
cfg_if ! {
@@ -1009,6 +1144,23 @@ cfg_if! {
1009
1144
pub r_info: Elf64_Xword ,
1010
1145
pub r_addend: Elf64_Sxword ,
1011
1146
}
1147
+
1148
+ pub struct iw_thrspy {
1149
+ pub addr: :: sockaddr,
1150
+ pub qual: iw_quality,
1151
+ pub low: iw_quality,
1152
+ pub high: iw_quality,
1153
+ }
1154
+ pub struct iw_mlme {
1155
+ pub cmd: __u16,
1156
+ pub reason_code: __u16,
1157
+ pub addr: :: sockaddr,
1158
+ }
1159
+ pub struct iw_michaelmicfailure {
1160
+ pub flags: __u32,
1161
+ pub src_addr: :: sockaddr,
1162
+ pub tsc: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
1163
+ }
1012
1164
}
1013
1165
}
1014
1166
}
@@ -1323,6 +1475,43 @@ s_no_extra_traits! {
1323
1475
pub can_ifindex: :: c_int,
1324
1476
pub can_addr: __c_anonymous_sockaddr_can_can_addr,
1325
1477
}
1478
+
1479
+ // linux/wireless.h
1480
+ pub union iwreq_data {
1481
+ pub name: [ c_char; :: IFNAMSIZ ] ,
1482
+ pub essid: iw_point,
1483
+ pub nwid: iw_param,
1484
+ pub freq: iw_freq,
1485
+ pub sens: iw_param,
1486
+ pub bitrate: iw_param,
1487
+ pub txpower: iw_param,
1488
+ pub rts: iw_param,
1489
+ pub frag: iw_param,
1490
+ pub mode: __u32,
1491
+ pub retry: iw_param,
1492
+ pub encoding: iw_point,
1493
+ pub power: iw_param,
1494
+ pub qual: iw_quality,
1495
+ pub ap_addr: :: sockaddr,
1496
+ pub addr: :: sockaddr,
1497
+ pub param: iw_param,
1498
+ pub data: iw_point,
1499
+ }
1500
+
1501
+ pub struct iw_event {
1502
+ pub len: __u16,
1503
+ pub cmd: __u16,
1504
+ pub u: iwreq_data,
1505
+ }
1506
+
1507
+ pub union __c_anonymous_iwreq {
1508
+ pub ifrn_name: [ c_char; :: IFNAMSIZ ] ,
1509
+ }
1510
+
1511
+ pub struct iwreq {
1512
+ pub ifr_ifrn: __c_anonymous_iwreq,
1513
+ pub u: iwreq_data,
1514
+ }
1326
1515
}
1327
1516
1328
1517
cfg_if ! {
@@ -1797,6 +1986,58 @@ cfg_if! {
1797
1986
self . sched_period. hash( state) ;
1798
1987
}
1799
1988
}
1989
+
1990
+ impl :: fmt:: Debug for iwreq_data {
1991
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1992
+ f. debug_struct( "iwreq_data" )
1993
+ . field( "name" , unsafe { & self . name } )
1994
+ . field( "essid" , unsafe { & self . essid } )
1995
+ . field( "nwid" , unsafe { & self . nwid } )
1996
+ . field( "freq" , unsafe { & self . freq } )
1997
+ . field( "sens" , unsafe { & self . sens } )
1998
+ . field( "bitrate" , unsafe { & self . bitrate } )
1999
+ . field( "txpower" , unsafe { & self . txpower } )
2000
+ . field( "rts" , unsafe { & self . rts } )
2001
+ . field( "frag" , unsafe { & self . frag } )
2002
+ . field( "mode" , unsafe { & self . mode } )
2003
+ . field( "retry" , unsafe { & self . retry } )
2004
+ . field( "encoding" , unsafe { & self . encoding } )
2005
+ . field( "power" , unsafe { & self . power } )
2006
+ . field( "qual" , unsafe { & self . qual } )
2007
+ . field( "ap_addr" , unsafe { & self . ap_addr } )
2008
+ . field( "addr" , unsafe { & self . addr } )
2009
+ . field( "param" , unsafe { & self . param } )
2010
+ . field( "data" , unsafe { & self . data } )
2011
+ . finish( )
2012
+ }
2013
+ }
2014
+
2015
+ impl :: fmt:: Debug for iw_event {
2016
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2017
+ f. debug_struct( "iw_event" )
2018
+ . field( "len" , & self . len )
2019
+ . field( "cmd" , & self . cmd )
2020
+ . field( "u" , & self . u )
2021
+ . finish( )
2022
+ }
2023
+ }
2024
+
2025
+ impl :: fmt:: Debug for __c_anonymous_iwreq {
2026
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2027
+ f. debug_struct( "__c_anonymous_iwreq" )
2028
+ . field( "ifrn_name" , unsafe { & self . ifrn_name } )
2029
+ . finish( )
2030
+ }
2031
+ }
2032
+
2033
+ impl :: fmt:: Debug for iwreq {
2034
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
2035
+ f. debug_struct( "iwreq" )
2036
+ . field( "ifr_ifrn" , & self . ifr_ifrn )
2037
+ . field( "u" , & self . u )
2038
+ . finish( )
2039
+ }
2040
+ }
1800
2041
}
1801
2042
}
1802
2043
@@ -3794,6 +4035,9 @@ pub const IW_ENC_CAPA_CIPHER_TKIP: ::c_ulong = 0x00000004;
3794
4035
pub const IW_ENC_CAPA_CIPHER_CCMP : :: c_ulong = 0x00000008 ;
3795
4036
pub const IW_ENC_CAPA_4WAY_HANDSHAKE : :: c_ulong = 0x00000010 ;
3796
4037
4038
+ 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);
4039
+ pub const IW_EVENT_CAPA_K_1 : c_ulong = 0x400 ; // W_EVENT_CAPA_MASK(0x8B2A);
4040
+
3797
4041
pub const IW_PMKSA_ADD : usize = 1 ;
3798
4042
pub const IW_PMKSA_REMOVE : usize = 2 ;
3799
4043
pub const IW_PMKSA_FLUSH : usize = 3 ;
@@ -3804,8 +4048,13 @@ pub const IW_PMKID_CAND_PREAUTH: ::c_ulong = 0x00000001;
3804
4048
3805
4049
pub const IW_EV_LCP_PK_LEN : usize = 4 ;
3806
4050
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 ;
4051
+ pub const IW_EV_CHAR_PK_LEN : usize = 20 ; // IW_EV_LCP_PK_LEN + ::IFNAMSIZ;
4052
+ pub const IW_EV_UINT_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<u32>();
4053
+ pub const IW_EV_FREQ_PK_LEN : usize = 12 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_freq>();
4054
+ pub const IW_EV_PARAM_PK_LEN : usize = 12 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_param>();
4055
+ pub const IW_EV_ADDR_PK_LEN : usize = 20 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<::sockaddr>();
4056
+ pub const IW_EV_QUAL_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_quality>();
4057
+ pub const IW_EV_POINT_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + 4;
3809
4058
3810
4059
pub const IPTOS_TOS_MASK : u8 = 0x1E ;
3811
4060
pub const IPTOS_PREC_MASK : u8 = 0xE0 ;
0 commit comments