Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
9ded0bb87b | |||
b0aaaa4436 | |||
6024cc15cf |
6
NEWS.md
6
NEWS.md
@ -3,6 +3,12 @@ SmartCAPWAP
|
||||
|
||||
CAPWAP WTP and AC implementation
|
||||
|
||||
Version 1.2.1 - 06 May 2016
|
||||
---------------------------
|
||||
|
||||
* fix Add WLAN's capability field
|
||||
* fix mssing IEEE 802.11 Assigned WTP BSSID IE in Add WLAN response
|
||||
|
||||
Version 1.2.0 - 29 Apr 2016
|
||||
---------------------------
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
AC_PREREQ(2.63)
|
||||
|
||||
AC_INIT([SmartCAPWAP], [1.2], [https://github.com/travelping/smartcapwap], [smartcapwap])
|
||||
AC_INIT([SmartCAPWAP], [1.2.1], [https://github.com/travelping/smartcapwap], [smartcapwap])
|
||||
AC_CONFIG_AUX_DIR([build])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AM_INIT_AUTOMAKE([1.11 -Wall])
|
||||
|
@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=smartcapwap
|
||||
PKG_VERSION:=1.2
|
||||
PKG_VERSION:=1.2.1
|
||||
PKG_RELEASE:=1
|
||||
|
||||
SRC_SMARTCAPWAP := /usr/src/tplino/components/smartcapwap
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_URL:=git://github.com/travelping/smartcapwap.git
|
||||
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_SOURCE_VERSION:=v1.2.0
|
||||
PKG_SOURCE_VERSION:=v1.2.1
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
|
@ -139,7 +139,7 @@ struct capwap_list_item* capwap_get_message_element(struct capwap_parsed_packet*
|
||||
while (search) {
|
||||
struct capwap_message_element_itemlist* messageelement =
|
||||
(struct capwap_message_element_itemlist*)search->item;
|
||||
if ((id.vendor == messageelement->id.vendor) && (id.type == messageelement->id.type))
|
||||
if (message_element_id_eq(id, messageelement->id))
|
||||
return search;
|
||||
|
||||
/* */
|
||||
|
@ -10,6 +10,9 @@ struct capwap_message_element_id
|
||||
uint16_t type;
|
||||
};
|
||||
|
||||
#define message_element_id_eq(a, b) \
|
||||
(((a).vendor == (b).vendor) && ((a).type == (b).type))
|
||||
|
||||
/* */
|
||||
typedef void* capwap_message_elements_handle;
|
||||
struct capwap_write_message_elements_ops {
|
||||
|
@ -242,7 +242,7 @@ static void receive_ieee80211_wlan_configuration_request(struct capwap_parsed_pa
|
||||
/* Add message element */
|
||||
capwap_packet_txmng_add_message_element(txmngpacket, CAPWAP_ELEMENT_RESULTCODE, &resultcode);
|
||||
if (resultcode.code == CAPWAP_RESULTCODE_SUCCESS &&
|
||||
memcmp(&action, &CAPWAP_ELEMENT_80211_ADD_WLAN, sizeof(CAPWAP_ELEMENT_80211_ADD_WLAN)) == 0)
|
||||
message_element_id_eq(action, CAPWAP_ELEMENT_80211_ADD_WLAN))
|
||||
capwap_packet_txmng_add_message_element(txmngpacket, CAPWAP_ELEMENT_80211_ASSIGN_BSSID, &bssid);
|
||||
|
||||
/* CAPWAP_ELEMENT_VENDORPAYLOAD */ /* TODO */
|
||||
|
@ -195,7 +195,7 @@ static void wtp_radio_setconfiguration_80211(struct capwap_parsed_packet *packet
|
||||
|
||||
/* Parsing only IEEE 802.11 message element */
|
||||
if (!IS_80211_MESSAGE_ELEMENTS(messageelement->id) &&
|
||||
memcmp(&messageelement->id, &CAPWAP_ELEMENT_80211N_RADIO_CONF, sizeof(messageelement->id)) != 0)
|
||||
!message_element_id_eq(messageelement->id, CAPWAP_ELEMENT_80211N_RADIO_CONF))
|
||||
continue;
|
||||
|
||||
ASSERT(messageelements != NULL);
|
||||
@ -255,7 +255,7 @@ static void wtp_radio_setconfiguration_80211(struct capwap_parsed_packet *packet
|
||||
|
||||
/* Parsing only IEEE 802.11 message element */
|
||||
if (!IS_80211_MESSAGE_ELEMENTS(messageelement->id) &&
|
||||
memcmp(&messageelement->id, &CAPWAP_ELEMENT_80211N_RADIO_CONF, sizeof(messageelement->id)) != 0)
|
||||
!message_element_id_eq(messageelement->id, CAPWAP_ELEMENT_80211N_RADIO_CONF))
|
||||
continue;
|
||||
|
||||
ASSERT(messageelements != NULL);
|
||||
@ -652,6 +652,16 @@ void wtp_radio_receive_data_packet(uint8_t radioid, unsigned short binding, cons
|
||||
}
|
||||
}
|
||||
|
||||
/* source http://stackoverflow.com/a/16994674 */
|
||||
static uint16_t reverse(register uint16_t x)
|
||||
{
|
||||
x = (((x & 0xaaaa) >> 1) | ((x & 0x5555) << 1));
|
||||
x = (((x & 0xcccc) >> 2) | ((x & 0x3333) << 2));
|
||||
x = (((x & 0xf0f0) >> 4) | ((x & 0x0f0f) << 4));
|
||||
x = (((x & 0xff00) >> 8) | ((x & 0x00ff) << 8));
|
||||
return x;
|
||||
}
|
||||
|
||||
/* */
|
||||
uint32_t wtp_radio_create_wlan(struct capwap_parsed_packet* packet,
|
||||
struct capwap_80211_assignbssid_element* bssid)
|
||||
@ -700,7 +710,7 @@ uint32_t wtp_radio_create_wlan(struct capwap_parsed_packet* packet,
|
||||
params.wlanid = addwlan->wlanid;
|
||||
params.ssid = (const char*)addwlan->ssid;
|
||||
params.ssid_hidden = addwlan->suppressssid;
|
||||
params.capability = addwlan->capability;
|
||||
params.capability = reverse(addwlan->capability);
|
||||
params.qos = addwlan->qos;
|
||||
params.authmode = addwlan->authmode;
|
||||
params.macmode = addwlan->macmode;
|
||||
|
Reference in New Issue
Block a user