@@ -6,7 +6,10 @@ use netlink_packet_utils::{
6
6
DecodeError , Emitable , Parseable ,
7
7
} ;
8
8
9
- use crate :: bytes:: { parse_u16_le, write_u16_le, write_u32_le} ;
9
+ use crate :: {
10
+ bytes:: { parse_u16_le, write_u16_le, write_u32_le} ,
11
+ Nl80211ElementHtCap ,
12
+ } ;
10
13
11
14
pub ( crate ) struct Nl80211Elements ( Vec < Nl80211Element > ) ;
12
15
@@ -59,6 +62,7 @@ const ELEMENT_ID_SSID: u8 = 0;
59
62
const ELEMENT_ID_SUPPORTED_RATES : u8 = 1 ;
60
63
const ELEMENT_ID_CHANNEL : u8 = 3 ;
61
64
const ELEMENT_ID_COUNTRY : u8 = 7 ;
65
+ const ELEMENT_ID_HT_CAP : u8 = 45 ;
62
66
const ELEMENT_ID_RSN : u8 = 48 ;
63
67
const ELEMENT_ID_VENDOR : u8 = 221 ;
64
68
@@ -73,6 +77,7 @@ pub enum Nl80211Element {
73
77
/// Allow channel number identification for STAs.
74
78
Channel ( u8 ) ,
75
79
Country ( Nl80211ElementCountry ) ,
80
+ HtCapability ( Nl80211ElementHtCap ) ,
76
81
Rsn ( Nl80211ElementRsn ) ,
77
82
/// Vendor specific data.
78
83
Vendor ( Vec < u8 > ) ,
@@ -89,6 +94,7 @@ impl Nl80211Element {
89
94
Self :: Country ( _) => ELEMENT_ID_COUNTRY ,
90
95
Self :: Rsn ( _) => ELEMENT_ID_RSN ,
91
96
Self :: Vendor ( _) => ELEMENT_ID_VENDOR ,
97
+ Self :: HtCapability ( _) => ELEMENT_ID_HT_CAP ,
92
98
Self :: Other ( id, _) => * id,
93
99
}
94
100
}
@@ -102,6 +108,7 @@ impl Nl80211Element {
102
108
Self :: Country ( v) => v. buffer_len ( ) as u8 ,
103
109
Self :: Rsn ( v) => v. buffer_len ( ) as u8 ,
104
110
Self :: Vendor ( v) => v. len ( ) as u8 ,
111
+ Self :: HtCapability ( v) => v. buffer_len ( ) as u8 ,
105
112
Self :: Other ( _, data) => ( data. len ( ) ) as u8 ,
106
113
}
107
114
}
@@ -137,6 +144,9 @@ impl<T: AsRef<[u8]> + ?Sized> Parseable<T> for Nl80211Element {
137
144
}
138
145
ELEMENT_ID_RSN => Self :: Rsn ( Nl80211ElementRsn :: parse ( payload) ?) ,
139
146
ELEMENT_ID_VENDOR => Self :: Vendor ( payload. to_vec ( ) ) ,
147
+ ELEMENT_ID_HT_CAP => {
148
+ Self :: HtCapability ( Nl80211ElementHtCap :: parse ( payload) ?)
149
+ }
140
150
_ => Self :: Other ( id, payload. to_vec ( ) ) ,
141
151
} )
142
152
}
@@ -166,6 +176,7 @@ impl Emitable for Nl80211Element {
166
176
Self :: Country ( v) => v. emit ( buffer) ,
167
177
Self :: Rsn ( v) => v. emit ( buffer) ,
168
178
Self :: Vendor ( v) => buffer[ ..v. len ( ) ] . copy_from_slice ( v. as_slice ( ) ) ,
179
+ Self :: HtCapability ( v) => v. emit ( buffer) ,
169
180
Self :: Other ( _, data) => {
170
181
payload. copy_from_slice ( data. as_slice ( ) ) ;
171
182
}
0 commit comments