1*cf78ab8cSAndroid Build Coastguard Worker// PDL grammar file for ieee80211 packet format. 2*cf78ab8cSAndroid Build Coastguard Worker// 3*cf78ab8cSAndroid Build Coastguard Worker// This only includes definitions necessary for the mac80211_hwsim 4*cf78ab8cSAndroid Build Coastguard Worker// use case. 5*cf78ab8cSAndroid Build Coastguard Worker 6*cf78ab8cSAndroid Build Coastguard Workerlittle_endian_packets 7*cf78ab8cSAndroid Build Coastguard Worker 8*cf78ab8cSAndroid Build Coastguard Workercustom_field MacAddress : 48 "macaddr/" 9*cf78ab8cSAndroid Build Coastguard Worker 10*cf78ab8cSAndroid Build Coastguard Worker// Frame type B3..B2 11*cf78ab8cSAndroid Build Coastguard Workerenum FrameType : 2 { 12*cf78ab8cSAndroid Build Coastguard Worker MGMT = 0, 13*cf78ab8cSAndroid Build Coastguard Worker CTL = 1, 14*cf78ab8cSAndroid Build Coastguard Worker DATA = 2, 15*cf78ab8cSAndroid Build Coastguard Worker EXT = 3, 16*cf78ab8cSAndroid Build Coastguard Worker} 17*cf78ab8cSAndroid Build Coastguard Worker 18*cf78ab8cSAndroid Build Coastguard Worker// Data substypes 19*cf78ab8cSAndroid Build Coastguard Workerenum DataSubType : 4 { 20*cf78ab8cSAndroid Build Coastguard Worker DATA = 0, 21*cf78ab8cSAndroid Build Coastguard Worker DATA_CF_ACK = 1, 22*cf78ab8cSAndroid Build Coastguard Worker DATA_CF_POLL = 2, 23*cf78ab8cSAndroid Build Coastguard Worker DATA_CF_ACPL = 3, 24*cf78ab8cSAndroid Build Coastguard Worker NODATA = 4, 25*cf78ab8cSAndroid Build Coastguard Worker NODATA_CF_ACK = 5, 26*cf78ab8cSAndroid Build Coastguard Worker NODATA_CF_POLL = 6, 27*cf78ab8cSAndroid Build Coastguard Worker NODATA_CF_ACPL = 7, 28*cf78ab8cSAndroid Build Coastguard Worker QOS = 8, 29*cf78ab8cSAndroid Build Coastguard Worker QOS_NULL = 12, 30*cf78ab8cSAndroid Build Coastguard Worker} 31*cf78ab8cSAndroid Build Coastguard Worker 32*cf78ab8cSAndroid Build Coastguard Worker// Management subtypes 33*cf78ab8cSAndroid Build Coastguard Workerenum ManagementSubType : 4 { 34*cf78ab8cSAndroid Build Coastguard Worker ASSOC_REQ = 0, 35*cf78ab8cSAndroid Build Coastguard Worker ASSOC_RESP = 1, 36*cf78ab8cSAndroid Build Coastguard Worker REASSOC_REQ = 2, 37*cf78ab8cSAndroid Build Coastguard Worker REASSOC_RESP = 3, 38*cf78ab8cSAndroid Build Coastguard Worker PROBE_REQ = 4, 39*cf78ab8cSAndroid Build Coastguard Worker PROBE_RESP = 5, 40*cf78ab8cSAndroid Build Coastguard Worker BEACON = 8, 41*cf78ab8cSAndroid Build Coastguard Worker ATIM = 9, 42*cf78ab8cSAndroid Build Coastguard Worker DISASSOC = 10, 43*cf78ab8cSAndroid Build Coastguard Worker AUTH = 11, 44*cf78ab8cSAndroid Build Coastguard Worker DEAUTH = 12, 45*cf78ab8cSAndroid Build Coastguard Worker ACTION = 13, 46*cf78ab8cSAndroid Build Coastguard Worker} 47*cf78ab8cSAndroid Build Coastguard Worker 48*cf78ab8cSAndroid Build Coastguard Workergroup FrameControl { 49*cf78ab8cSAndroid Build Coastguard Worker version : 2, // B1..B0 50*cf78ab8cSAndroid Build Coastguard Worker ftype: FrameType, // B3..B2 51*cf78ab8cSAndroid Build Coastguard Worker stype: 4, // B7..B4 52*cf78ab8cSAndroid Build Coastguard Worker to_ds: 1, // B8 53*cf78ab8cSAndroid Build Coastguard Worker from_ds: 1, // B9 54*cf78ab8cSAndroid Build Coastguard Worker more_frags: 1, // B10 55*cf78ab8cSAndroid Build Coastguard Worker retry: 1, // B11 56*cf78ab8cSAndroid Build Coastguard Worker pm : 1, // B12 57*cf78ab8cSAndroid Build Coastguard Worker more_data: 1, // B13 58*cf78ab8cSAndroid Build Coastguard Worker protected: 1, // B14 59*cf78ab8cSAndroid Build Coastguard Worker order: 1, // B15 60*cf78ab8cSAndroid Build Coastguard Worker} 61*cf78ab8cSAndroid Build Coastguard Worker 62*cf78ab8cSAndroid Build Coastguard Worker 63*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211 { 64*cf78ab8cSAndroid Build Coastguard Worker FrameControl, 65*cf78ab8cSAndroid Build Coastguard Worker duration_id: 16, 66*cf78ab8cSAndroid Build Coastguard Worker _payload_, 67*cf78ab8cSAndroid Build Coastguard Worker} 68*cf78ab8cSAndroid Build Coastguard Worker 69*cf78ab8cSAndroid Build Coastguard Worker/* 70*cf78ab8cSAndroid Build Coastguard Worker * DS bit usage 71*cf78ab8cSAndroid Build Coastguard Worker * 72*cf78ab8cSAndroid Build Coastguard Worker * TA = transmitter address 73*cf78ab8cSAndroid Build Coastguard Worker * RA = receiver address 74*cf78ab8cSAndroid Build Coastguard Worker * DA = destination address 75*cf78ab8cSAndroid Build Coastguard Worker * SA = source address 76*cf78ab8cSAndroid Build Coastguard Worker * 77*cf78ab8cSAndroid Build Coastguard Worker * ToDS FromDS A1(RA) A2(TA) A3 A4 Use 78*cf78ab8cSAndroid Build Coastguard Worker * ----------------------------------------------------------------- 79*cf78ab8cSAndroid Build Coastguard Worker * 0 0 DA SA BSSID - IBSS/DLS 80*cf78ab8cSAndroid Build Coastguard Worker * 0 1 DA BSSID SA - AP -> STA 81*cf78ab8cSAndroid Build Coastguard Worker * 1 0 BSSID SA DA - AP <- STA 82*cf78ab8cSAndroid Build Coastguard Worker * 1 1 RA TA DA SA unspecified (WDS) 83*cf78ab8cSAndroid Build Coastguard Worker */ 84*cf78ab8cSAndroid Build Coastguard Worker 85*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211Ibss : Ieee80211 (to_ds=0, from_ds=0) { 86*cf78ab8cSAndroid Build Coastguard Worker destination : MacAddress, 87*cf78ab8cSAndroid Build Coastguard Worker source : MacAddress, 88*cf78ab8cSAndroid Build Coastguard Worker bssid : MacAddress, 89*cf78ab8cSAndroid Build Coastguard Worker seq_ctrl : 16, 90*cf78ab8cSAndroid Build Coastguard Worker payload: 8[], 91*cf78ab8cSAndroid Build Coastguard Worker} 92*cf78ab8cSAndroid Build Coastguard Worker 93*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211FromAp : Ieee80211 (to_ds=0, from_ds=1) { 94*cf78ab8cSAndroid Build Coastguard Worker destination : MacAddress, 95*cf78ab8cSAndroid Build Coastguard Worker bssid : MacAddress, 96*cf78ab8cSAndroid Build Coastguard Worker source : MacAddress, 97*cf78ab8cSAndroid Build Coastguard Worker seq_ctrl : 16, 98*cf78ab8cSAndroid Build Coastguard Worker payload: 8[], 99*cf78ab8cSAndroid Build Coastguard Worker} 100*cf78ab8cSAndroid Build Coastguard Worker 101*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211ToAp : Ieee80211 (to_ds=1, from_ds=0) { 102*cf78ab8cSAndroid Build Coastguard Worker bssid : MacAddress, 103*cf78ab8cSAndroid Build Coastguard Worker source : MacAddress, 104*cf78ab8cSAndroid Build Coastguard Worker destination : MacAddress, 105*cf78ab8cSAndroid Build Coastguard Worker seq_ctrl : 16, 106*cf78ab8cSAndroid Build Coastguard Worker payload: 8[], 107*cf78ab8cSAndroid Build Coastguard Worker} 108*cf78ab8cSAndroid Build Coastguard Worker 109*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211Wds : Ieee80211 (to_ds=1, from_ds=1) { 110*cf78ab8cSAndroid Build Coastguard Worker receiver : MacAddress, 111*cf78ab8cSAndroid Build Coastguard Worker transmitter : MacAddress, 112*cf78ab8cSAndroid Build Coastguard Worker destination : MacAddress, 113*cf78ab8cSAndroid Build Coastguard Worker seq_ctrl : 16, 114*cf78ab8cSAndroid Build Coastguard Worker source : MacAddress, 115*cf78ab8cSAndroid Build Coastguard Worker payload: 8[], 116*cf78ab8cSAndroid Build Coastguard Worker} 117