blob: 3e28f60d9507f5054776660312f123966489b839 [file] [log] [blame]
// PDL grammar file for ieee80211 packet format.
//
// This only includes definitions necessary for the mac80211_hwsim
// use case.
little_endian_packets
custom_field MacAddress : 48 "macaddr/"
// Frame type B3..B2
enum FrameType : 2 {
MGMT = 0,
CTL = 1,
DATA = 2,
EXT = 3,
}
// Data substypes
enum DataSubType : 4 {
DATA = 0,
DATA_CF_ACK = 1,
DATA_CF_POLL = 2,
DATA_CF_ACPL = 3,
NODATA = 4,
NODATA_CF_ACK = 5,
NODATA_CF_POLL = 6,
NODATA_CF_ACPL = 7,
QOS = 8,
QOS_NULL = 12,
}
// Management subtypes
enum ManagementSubType : 4 {
ASSOC_REQ = 0,
ASSOC_RESP = 1,
REASSOC_REQ = 2,
REASSOC_RESP = 3,
PROBE_REQ = 4,
PROBE_RESP = 5,
BEACON = 8,
ATIM = 9,
DISASSOC = 10,
AUTH = 11,
DEAUTH = 12,
ACTION = 13,
}
group FrameControl {
version : 2, // B1..B0
ftype: FrameType, // B3..B2
stype: 4, // B7..B4
to_ds: 1, // B8
from_ds: 1, // B9
more_frags: 1, // B10
retry: 1, // B11
pm : 1, // B12
more_data: 1, // B13
protected: 1, // B14
order: 1, // B15
}
packet Ieee80211 {
FrameControl,
duration_id: 16,
_payload_,
}
/*
* DS bit usage
*
* TA = transmitter address
* RA = receiver address
* DA = destination address
* SA = source address
*
* ToDS FromDS A1(RA) A2(TA) A3 A4 Use
* -----------------------------------------------------------------
* 0 0 DA SA BSSID - IBSS/DLS
* 0 1 DA BSSID SA - AP -> STA
* 1 0 BSSID SA DA - AP <- STA
* 1 1 RA TA DA SA unspecified (WDS)
*/
packet Ieee80211Ibss : Ieee80211 (to_ds=0, from_ds=0) {
destination : MacAddress,
source : MacAddress,
bssid : MacAddress,
seq_ctrl : 16,
payload: 8[],
}
packet Ieee80211FromAp : Ieee80211 (to_ds=0, from_ds=1) {
destination : MacAddress,
bssid : MacAddress,
source : MacAddress,
seq_ctrl : 16,
payload: 8[],
}
packet Ieee80211ToAp : Ieee80211 (to_ds=1, from_ds=0) {
bssid : MacAddress,
source : MacAddress,
destination : MacAddress,
seq_ctrl : 16,
payload: 8[],
}
packet Ieee80211Wds : Ieee80211 (to_ds=1, from_ds=1) {
receiver : MacAddress,
transmitter : MacAddress,
destination : MacAddress,
seq_ctrl : 16,
source : MacAddress,
payload: 8[],
}