From 8cc6559f08b0b21dd501a46dd3079b8901a0ff34 Mon Sep 17 00:00:00 2001 From: Andreas Schultz Date: Wed, 17 Aug 2016 16:01:53 +0200 Subject: [PATCH] report supported Split MAC profiles and validate it in AC requests --- src/wtp/wtp.h | 1 + src/wtp/wtp_dfa_discovery.c | 1 + src/wtp/wtp_dfa_join.c | 1 + src/wtp/wtp_element_helper.c | 23 +++++++++++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/src/wtp/wtp.h b/src/wtp/wtp.h index 4020a1e..54f1a18 100644 --- a/src/wtp/wtp.h +++ b/src/wtp/wtp.h @@ -173,6 +173,7 @@ void wtp_create_radioadmstate_element(struct capwap_packet_txmng* txmngpacket); void wtp_create_radioopsstate_element(struct capwap_packet_txmng* txmngpacket); void wtp_create_80211_wtpradioinformation_element(struct capwap_packet_txmng* txmngpacket); void wtp_create_80211_encryption_capability_elements(struct capwap_packet_txmng *txmngpacket); +void wtp_create_80211_supported_mac_profiles_elements(struct capwap_packet_txmng *txmngpacket); struct wtp_radio; diff --git a/src/wtp/wtp_dfa_discovery.c b/src/wtp/wtp_dfa_discovery.c index e69d9ca..80b0185 100644 --- a/src/wtp/wtp_dfa_discovery.c +++ b/src/wtp/wtp_dfa_discovery.c @@ -51,6 +51,7 @@ static void wtp_send_discovery_request() if (g_wtp.binding == CAPWAP_WIRELESS_BINDING_IEEE80211) { wtp_create_80211_wtpradioinformation_element(txmngpacket); wtp_create_80211_encryption_capability_elements(txmngpacket); + wtp_create_80211_supported_mac_profiles_elements(txmngpacket); } /* CAPWAP_ELEMENT_MTUDISCOVERY */ /* TODO */ diff --git a/src/wtp/wtp_dfa_join.c b/src/wtp/wtp_dfa_join.c index 37a746f..061d041 100644 --- a/src/wtp/wtp_dfa_join.c +++ b/src/wtp/wtp_dfa_join.c @@ -48,6 +48,7 @@ void wtp_dfa_state_join_enter(void) if (g_wtp.binding == CAPWAP_WIRELESS_BINDING_IEEE80211) { wtp_create_80211_wtpradioinformation_element(txmngpacket); wtp_create_80211_encryption_capability_elements(txmngpacket); + wtp_create_80211_supported_mac_profiles_elements(txmngpacket); } capwap_packet_txmng_add_message_element(txmngpacket, CAPWAP_ELEMENT_ECNSUPPORT, &g_wtp.ecn); diff --git a/src/wtp/wtp_element_helper.c b/src/wtp/wtp_element_helper.c index b8d7bd6..817f10f 100644 --- a/src/wtp/wtp_element_helper.c +++ b/src/wtp/wtp_element_helper.c @@ -99,3 +99,26 @@ void wtp_create_80211_encryption_capability_elements(struct capwap_packet_txmng wtp_create_80211_encryption_capability_element(txmngpacket, radio); } } + +/* */ +void wtp_create_80211_supported_mac_profiles_elements(struct capwap_packet_txmng *txmngpacket) +{ + struct capwap_80211_supported_mac_profiles_element *element; + + switch (g_wtp.mactype.type) { + case CAPWAP_SPLITMAC: + case CAPWAP_LOCALANDSPLITMAC: + element = alloca(sizeof(struct capwap_80211_supported_mac_profiles_element) + + sizeof(uint8_t)); + + element->supported_mac_profilescount = 1; + element->supported_mac_profiles[0] = 0; /* IEEE 802.11 Split MAC Profile with WTP + encryption */ + capwap_packet_txmng_add_message_element(txmngpacket, + CAPWAP_ELEMENT_80211_SUPPORTED_MAC_PROFILES, element); + break; + + default: + break; + } +}