wlan_common/
mgmt_writer.rs
1use crate::mac::{FrameControl, MgmtHdr, SequenceControl};
6use ieee80211::{Bssid, MacAddr};
7
8pub fn mgmt_hdr_to_ap(
9 frame_ctrl: FrameControl,
10 bssid: Bssid,
11 client_addr: MacAddr,
12 seq_ctrl: SequenceControl,
13) -> MgmtHdr {
14 MgmtHdr {
15 frame_ctrl,
16 duration: 0,
17 addr1: bssid.into(),
18 addr2: client_addr,
19 addr3: bssid.into(),
20 seq_ctrl,
21 }
22}
23
24pub fn mgmt_hdr_from_ap(
25 frame_ctrl: FrameControl,
26 client_addr: MacAddr,
27 bssid: Bssid,
28 seq_ctrl: SequenceControl,
29) -> MgmtHdr {
30 MgmtHdr {
31 frame_ctrl,
32 duration: 0,
33 addr1: client_addr,
34 addr2: bssid.into(),
35 addr3: bssid.into(),
36 seq_ctrl,
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn client_to_ap() {
46 let got = mgmt_hdr_to_ap(
47 FrameControl(1234),
48 Bssid::from([1; 6]),
49 MacAddr::from([2; 6]),
50 SequenceControl(4321),
51 );
52 let expected = MgmtHdr {
53 frame_ctrl: FrameControl(1234),
54 duration: 0,
55 addr1: MacAddr::from([1; 6]),
56 addr2: MacAddr::from([2; 6]),
57 addr3: MacAddr::from([1; 6]),
58 seq_ctrl: SequenceControl(4321),
59 };
60 assert_eq!(got, expected);
61 }
62}