@@ -870,8 +870,153 @@ s! {
870
870
pub salt: [ :: c_uchar; TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE ] ,
871
871
pub rec_seq: [ :: c_uchar; TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE ] ,
872
872
}
873
+
874
+ // linux/wireless.h
875
+
876
+ pub struct iw_param {
877
+ pub value: __s32,
878
+ pub fixed: __u8,
879
+ pub disabled: __u8,
880
+ pub flags: __u16,
881
+ }
882
+ pub struct iw_point {
883
+ pub pointer: * mut :: c_void,
884
+ pub length: __u16,
885
+ pub flags: __u16,
886
+ }
887
+ pub struct iw_freq {
888
+ pub m: __s32,
889
+ pub e: __s16,
890
+ pub i: __u8,
891
+ pub flags: __u8,
892
+ }
893
+ pub struct iw_quality {
894
+ pub qual: __u8,
895
+ pub level: __u8,
896
+ pub noise: __u8,
897
+ pub updated: __u8,
898
+ }
899
+ pub struct iw_discarded {
900
+ pub nwid: __u32,
901
+ pub code: __u32,
902
+ pub fragment: __u32,
903
+ pub retries: __u32,
904
+ pubmisc: __u32,
905
+ }
906
+ pub struct iw_missed {
907
+ pub beacon: __u32,
908
+ }
909
+ pub struct iw_scan_req {
910
+ pub scan_type: __u8,
911
+ pub essid_len: __u8,
912
+ pub num_channels: __u8,
913
+ pub flags: __u8,
914
+ pub bssid: :: sockaddr,
915
+ pub essid: [ __u8; IW_ESSID_MAX_SIZE ] ,
916
+ pub min_channel_time: __u32,
917
+ pub max_channel_time: __u32,
918
+ pub channel_list: [ iw_freq; IW_MAX_FREQUENCIES ] ,
919
+ }
920
+ pub struct iw_encode_ext {
921
+ pub ext_flags: __u32,
922
+ pub tx_seq: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
923
+ pub rx_seq: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
924
+ pub addr: :: sockaddr,
925
+ pub alg: __u16,
926
+ pub key_len: __u16,
927
+ pub key: [ __u8; 0 ] ,
928
+ }
929
+ pub struct iw_pmksa {
930
+ pub cmd: __u32,
931
+ pub bssid: :: sockaddr,
932
+ pub pmkid: [ __u8; IW_PMKID_LEN ] ,
933
+ }
934
+ pub struct iw_pmkid_cand {
935
+ pub flags: __u32,
936
+ pub index: __u32,
937
+ pub bssid: :: sockaddr,
938
+ }
939
+ pub struct iw_statistics {
940
+ pub status: __u16,
941
+ pub qual: iw_quality,
942
+ pub discard: iw_discarded,
943
+ pub miss: iw_missed,
944
+ }
945
+ pub struct iw_range {
946
+ pub throughput: __u32,
947
+ pub min_nwid: __u32,
948
+ pub max_nwid: __u32,
949
+ pub old_num_channels: __u16,
950
+ pub old_num_frequency: __u8,
951
+ pub scan_capa: __u8,
952
+ pub event_capa: [ __u32; 6 ] ,
953
+ pub sensitivity: __s32,
954
+ pub max_qual: iw_quality,
955
+ pub avg_qual: iw_quality,
956
+ pub num_bitrates: __u8,
957
+ pub bitrate: [ __s32; IW_MAX_BITRATES ] ,
958
+ pub min_rts: __s32,
959
+ pub max_rts: __s32,
960
+ pub min_frag: __s32,
961
+ pub max_frag: __s32,
962
+ pub min_pmp: __s32,
963
+ pub max_pmp: __s32,
964
+ pub min_pmt: __s32,
965
+ pub max_pmt: __s32,
966
+ pub pmp_flags: __u16,
967
+ pub pmt_flags: __u16,
968
+ pub pm_capa: __u16,
969
+ pub encoding_size: [ __u16; IW_MAX_ENCODING_SIZES ] ,
970
+ pub num_encoding_sizes: __u8,
971
+ pub max_encoding_tokens: __u8,
972
+ pub encoding_login_index: __u8,
973
+ pub txpower_capa: __u16,
974
+ pub num_txpower: __u8,
975
+ pub txpower: [ __s32; IW_MAX_TXPOWER ] ,
976
+ pub we_version_compiled: __u8,
977
+ pub we_version_source: __u8,
978
+ pub retry_capa: __u16,
979
+ pub retry_flags: __u16,
980
+ pub r_time_flags: __u16,
981
+ pub min_retry: __s32,
982
+ pub max_retry: __s32,
983
+ pub min_r_time: __s32,
984
+ pub max_r_time: __s32,
985
+ pub num_channels: __u16,
986
+ pub num_frequency: __u8,
987
+ pub freq: [ iw_freq; IW_MAX_FREQUENCIES ] ,
988
+ pub enc_capa: __u32,
989
+ }
990
+ pub struct iw_priv_args {
991
+ pub cmd: __u32,
992
+ pub set_args: __u16,
993
+ pub get_args: __u16,
994
+ pub name: [ c_char; :: IFNAMSIZ ] ,
995
+ }
873
996
}
874
997
998
+ cfg_if ! {
999
+ if #[ cfg( not( target_arch = "sparc64" ) ) ] {
1000
+ s!{
1001
+ pub struct iw_thrspy {
1002
+ pub addr: :: sockaddr,
1003
+ pub qual: iw_quality,
1004
+ pub low: iw_quality,
1005
+ pub high: iw_quality,
1006
+ }
1007
+ pub struct iw_mlme {
1008
+ pub cmd: __u16,
1009
+ pub reason_code: __u16,
1010
+ pub addr: :: sockaddr,
1011
+ }
1012
+ pub struct iw_michaelmicfailure {
1013
+ pub flags: __u32,
1014
+ pub src_addr: :: sockaddr,
1015
+ pub tsc: [ __u8; IW_ENCODE_SEQ_MAX_SIZE ] ,
1016
+ }
1017
+ }
1018
+ }
1019
+ }
875
1020
s_no_extra_traits ! {
876
1021
pub struct sockaddr_nl {
877
1022
pub nl_family: :: sa_family_t,
@@ -1048,6 +1193,45 @@ s_no_extra_traits! {
1048
1193
}
1049
1194
}
1050
1195
1196
+ s_no_extra_traits ! {
1197
+ // linux/wireless.h
1198
+ pub union iwreq_data {
1199
+ pub name: [ c_char; :: IFNAMSIZ ] ,
1200
+ pub essid: iw_point,
1201
+ pub nwid: iw_param,
1202
+ pub freq: iw_freq,
1203
+ pub sens: iw_param,
1204
+ pub bitrate: iw_param,
1205
+ pub txpower: iw_param,
1206
+ pub rts: iw_param,
1207
+ pub frag: iw_param,
1208
+ pub mode: __u32,
1209
+ pub retry: iw_param,
1210
+ pub encoding: iw_point,
1211
+ pub power: iw_param,
1212
+ pub qual: iw_quality,
1213
+ pub ap_addr: :: sockaddr,
1214
+ pub addr: :: sockaddr,
1215
+ pub param: iw_param,
1216
+ pub data: iw_point,
1217
+ }
1218
+
1219
+ pub struct iw_event {
1220
+ pub len: __u16,
1221
+ pub cmd: __u16,
1222
+ pub u: iwreq_data,
1223
+ }
1224
+
1225
+ pub union __c_anonymous_iwreq {
1226
+ pub ifrn_name: [ c_char; :: IFNAMSIZ ] ,
1227
+ }
1228
+
1229
+ pub struct iwreq {
1230
+ pub ifr_ifrn: __c_anonymous_iwreq,
1231
+ pub u: iwreq_data,
1232
+ }
1233
+ }
1234
+
1051
1235
cfg_if ! {
1052
1236
if #[ cfg( feature = "extra_traits" ) ] {
1053
1237
impl PartialEq for sockaddr_nl {
@@ -1546,6 +1730,57 @@ cfg_if! {
1546
1730
self . sched_period. hash( state) ;
1547
1731
}
1548
1732
}
1733
+ impl :: fmt:: Debug for iwreq_data {
1734
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1735
+ f. debug_struct( "iwreq_data" )
1736
+ . field( "name" , unsafe { & self . name } )
1737
+ . field( "essid" , unsafe { & self . essid } )
1738
+ . field( "nwid" , unsafe { & self . nwid } )
1739
+ . field( "freq" , unsafe { & self . freq } )
1740
+ . field( "sens" , unsafe { & self . sens } )
1741
+ . field( "bitrate" , unsafe { & self . bitrate } )
1742
+ . field( "txpower" , unsafe { & self . txpower } )
1743
+ . field( "rts" , unsafe { & self . rts } )
1744
+ . field( "frag" , unsafe { & self . frag } )
1745
+ . field( "mode" , unsafe { & self . mode } )
1746
+ . field( "retry" , unsafe { & self . retry } )
1747
+ . field( "encoding" , unsafe { & self . encoding } )
1748
+ . field( "power" , unsafe { & self . power } )
1749
+ . field( "qual" , unsafe { & self . qual } )
1750
+ . field( "ap_addr" , unsafe { & self . ap_addr } )
1751
+ . field( "addr" , unsafe { & self . addr } )
1752
+ . field( "param" , unsafe { & self . param } )
1753
+ . field( "data" , unsafe { & self . data } )
1754
+ . finish( )
1755
+ }
1756
+ }
1757
+
1758
+ impl :: fmt:: Debug for iw_event {
1759
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1760
+ f. debug_struct( "iw_event" )
1761
+ . field( "len" , & self . len )
1762
+ . field( "cmd" , & self . cmd )
1763
+ . field( "u" , & self . u )
1764
+ . finish( )
1765
+ }
1766
+ }
1767
+
1768
+ impl :: fmt:: Debug for __c_anonymous_iwreq {
1769
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1770
+ f. debug_struct( "__c_anonymous_iwreq" )
1771
+ . field( "ifrn_name" , unsafe { & self . ifrn_name } )
1772
+ . finish( )
1773
+ }
1774
+ }
1775
+
1776
+ impl :: fmt:: Debug for iwreq {
1777
+ fn fmt( & self , f: & mut :: fmt:: Formatter ) -> :: fmt:: Result {
1778
+ f. debug_struct( "iwreq" )
1779
+ . field( "ifr_ifrn" , & self . ifr_ifrn )
1780
+ . field( "u" , & self . u )
1781
+ . finish( )
1782
+ }
1783
+ }
1549
1784
}
1550
1785
}
1551
1786
@@ -3457,6 +3692,9 @@ pub const IW_ENC_CAPA_CIPHER_TKIP: ::c_ulong = 0x00000004;
3457
3692
pub const IW_ENC_CAPA_CIPHER_CCMP : :: c_ulong = 0x00000008 ;
3458
3693
pub const IW_ENC_CAPA_4WAY_HANDSHAKE : :: c_ulong = 0x00000010 ;
3459
3694
3695
+ 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);
3696
+ pub const IW_EVENT_CAPA_K_1 : c_ulong = 0x400 ; // W_EVENT_CAPA_MASK(0x8B2A);
3697
+
3460
3698
pub const IW_PMKSA_ADD : usize = 1 ;
3461
3699
pub const IW_PMKSA_REMOVE : usize = 2 ;
3462
3700
pub const IW_PMKSA_FLUSH : usize = 3 ;
@@ -3467,8 +3705,13 @@ pub const IW_PMKID_CAND_PREAUTH: ::c_ulong = 0x00000001;
3467
3705
3468
3706
pub const IW_EV_LCP_PK_LEN : usize = 4 ;
3469
3707
3470
- pub const IW_EV_CHAR_PK_LEN : usize = IW_EV_LCP_PK_LEN + :: IFNAMSIZ ;
3471
- pub const IW_EV_POINT_PK_LEN : usize = IW_EV_LCP_PK_LEN + 4 ;
3708
+ pub const IW_EV_CHAR_PK_LEN : usize = 20 ; // IW_EV_LCP_PK_LEN + ::IFNAMSIZ;
3709
+ pub const IW_EV_UINT_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<u32>();
3710
+ pub const IW_EV_FREQ_PK_LEN : usize = 12 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_freq>();
3711
+ pub const IW_EV_PARAM_PK_LEN : usize = 12 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_param>();
3712
+ pub const IW_EV_ADDR_PK_LEN : usize = 20 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<::sockaddr>();
3713
+ pub const IW_EV_QUAL_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + ::mem::size_of::<iw_quality>();
3714
+ pub const IW_EV_POINT_PK_LEN : usize = 8 ; // IW_EV_LCP_PK_LEN + 4;
3472
3715
3473
3716
pub const IPTOS_TOS_MASK : u8 = 0x1E ;
3474
3717
pub const IPTOS_PREC_MASK : u8 = 0xE0 ;
0 commit comments