diff --git a/src/mpdu.c b/src/mpdu.c index 62928939..278a4b8e 100644 --- a/src/mpdu.c +++ b/src/mpdu.c @@ -124,6 +124,9 @@ static bool validate_mgmt_mpdu(const struct mpdu *mpdu, int len, int *offset) case MPDU_MANAGEMENT_SUBTYPE_REASSOCIATION_REQUEST: return validate_on_ies_start_position_mgmt_mpdu(mpdu, len, offset, 15); + case MPDU_MANAGEMENT_SUBTYPE_REASSOCIATION_RESPONSE: + return validate_on_ies_start_position_mgmt_mpdu(mpdu, len, + offset, 9); case MPDU_MANAGEMENT_SUBTYPE_ATIM: return validate_atim_mgmt_mpdu(mpdu, len, offset); case MPDU_MANAGEMENT_SUBTYPE_DISASSOCIATION: diff --git a/src/mpdu.h b/src/mpdu.h index 3f2ea8d8..d38ba4bb 100644 --- a/src/mpdu.h +++ b/src/mpdu.h @@ -32,13 +32,14 @@ enum mpdu_type { /* 802.11, Table 8-1 "Valid type and subtype combinations" */ enum mpdu_management_subtype { - MPDU_MANAGEMENT_SUBTYPE_ASSOCIATION_REQUEST = 0x0, - MPDU_MANAGEMENT_SUBTYPE_ASSOCIATION_RESPONSE = 0x1, - MPDU_MANAGEMENT_SUBTYPE_REASSOCIATION_REQUEST = 0x2, - MPDU_MANAGEMENT_SUBTYPE_ATIM = 0x9, - MPDU_MANAGEMENT_SUBTYPE_DISASSOCIATION = 0xA, - MPDU_MANAGEMENT_SUBTYPE_AUTHENTICATION = 0xB, - MPDU_MANAGEMENT_SUBTYPE_DEAUTHENTICATION = 0xC, + MPDU_MANAGEMENT_SUBTYPE_ASSOCIATION_REQUEST = 0x0, + MPDU_MANAGEMENT_SUBTYPE_ASSOCIATION_RESPONSE = 0x1, + MPDU_MANAGEMENT_SUBTYPE_REASSOCIATION_REQUEST = 0x2, + MPDU_MANAGEMENT_SUBTYPE_REASSOCIATION_RESPONSE = 0x3, + MPDU_MANAGEMENT_SUBTYPE_ATIM = 0x9, + MPDU_MANAGEMENT_SUBTYPE_DISASSOCIATION = 0xA, + MPDU_MANAGEMENT_SUBTYPE_AUTHENTICATION = 0xB, + MPDU_MANAGEMENT_SUBTYPE_DEAUTHENTICATION = 0xC, }; /* 802.11, Section 8.4.1.1 Authentication Algorithm Number field */ @@ -164,6 +165,14 @@ struct mpdu_reassociation_request { uint8_t ies[0]; } __attribute__ ((packed)); +/* 802.11, Section 8.3.3.8 */ +struct mpdu_reassociation_response { + struct mpdu_field_capability capability; + __le16 status_code; + __le16 aid; + uint8_t ies[0]; +} __attribute__ ((packed)); + /* 802.11, Section 8.3.3.4 */ struct mpdu_disassociation { __le16 reason_code; @@ -199,6 +208,7 @@ struct mpdu { struct mpdu_association_request assoc_req; struct mpdu_association_response assoc_resp; struct mpdu_reassociation_request reassoc_req; + struct mpdu_reassociation_response reassoc_resp; struct mpdu_disassociation disassoc; struct mpdu_authentication auth; struct mpdu_deauthentication deauth;