From c4f9bca1e670742e48f189b63707715347966eed Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Thu, 10 Mar 2016 06:48:59 +0000 Subject: [PATCH] Added som docs and some messages. FossilOrigin-Name: 023b3d3c1254cb814383d73b5f6dd36e983117b45675caa1626fc9fccfecbee9 --- src/cw/Makefile | 1 + src/cw/capwap.h | 2 +- src/cw/capwap80211.h | 17 +++++++------ src/cw/capwap_strings_elem.c | 2 +- src/cw/cw.h | 3 +++ ...adding.c => cw_in_mtu_discovery_padding.c} | 25 ++++++++++--------- src/mod/capwap/capwap_actions_ac.c | 16 +++++++++--- 7 files changed, 42 insertions(+), 24 deletions(-) rename src/cw/{cw_readelem_mtu_discovery_padding.c => cw_in_mtu_discovery_padding.c} (67%) diff --git a/src/cw/Makefile b/src/cw/Makefile index eb7d2a7f..1602e37b 100644 --- a/src/cw/Makefile +++ b/src/cw/Makefile @@ -131,6 +131,7 @@ CAPWAPOBJS= \ capwap_strings_vendor.o \ capwap_strings_elem.o \ cw_in_vendor_specific_payload.o \ + cw_in_mtu_discovery_padding.o\ cw_in_wtp_board_data.o \ cw_in_check_disc_req.o \ cw_in_check_chng_state_evnt_req.o\ diff --git a/src/cw/capwap.h b/src/cw/capwap.h index d861cad9..751b097c 100644 --- a/src/cw/capwap.h +++ b/src/cw/capwap.h @@ -254,7 +254,7 @@ CW_MSG_MAXMSG = 26 #define CW_ELEM_INITIATE_DOWNLOAD 27 #define CW_ELEM_LOCATION_DATA 28 #define CW_ELEM_MAXIMUM_MESSAGE_LENGTH 29 -#define CWMSGELEM_MTU_DISCOVERY_PADDING 52 +#define CW_ELEM_MTU_DISCOVERY_PADDING 52 #define CW_ELEM_RADIO_ADMINISTRATIVE_STATE 31 #define CW_ELEM_RADIO_OPERATIONAL_STATE 32 #define CW_ELEM_RESULT_CODE 33 diff --git a/src/cw/capwap80211.h b/src/cw/capwap80211.h index c712875d..3ba0cef4 100644 --- a/src/cw/capwap80211.h +++ b/src/cw/capwap80211.h @@ -16,8 +16,8 @@ #define CW80211IANA_ENTERPRISE_NUMBER 13277 -#define CWMSG_80211_WLAN_CONFIGURATION_REQUEST 3398913 -#define CWMSG_80211_WLAN_CONFIGURATION_REPONSE 3398914 +#define CW_MSG80211_WLAN_CONFIGURATION_REQUEST 3398913 +#define CW_MSG80211_WLAN_CONFIGURATION_REPONSE 3398914 /** *@defgroup Msg Elements @@ -52,13 +52,16 @@ enum radioelems { CW_ELEM80211_RSNA_ERROR_REPORT_FROM_STATION=1035, /** IEEE 802.11 Station */ CW_ELEM80211_STATION=1036, + /** IEEE 802.11 Station QoS Profile */ + CW_ELEM80211_STATION_QOS_PROFILE=1037, + /** IEEE 802.11 Station Session Key */ + CW_ELEM80211_STATIONN_SESSION_KEY=1038, + /** IEEE 802.11 Statistics */ + CW_ELEM80211_STATISTICS=1039, + /** IEEE 802.11 Supported Rates */ + CW_ELEM80211_SUPORTED_RATES=1040, /* - IEEE 802.11 Station 1036 - IEEE 802.11 Station QoS Profile 1037 - IEEE 802.11 Station Session Key 1038 - IEEE 802.11 Statistics 1039 - IEEE 802.11 Supported Rates 1040 IEEE 802.11 Tx Power 1041 IEEE 802.11 Tx Power Level 1042 IEEE 802.11 Update Station QoS 1043 diff --git a/src/cw/capwap_strings_elem.c b/src/cw/capwap_strings_elem.c index 2ee2a5f8..5316f357 100644 --- a/src/cw/capwap_strings_elem.c +++ b/src/cw/capwap_strings_elem.c @@ -36,7 +36,7 @@ struct cw_strlist_elem capwap_strings_elem[] = { {CW_ELEM_INITIATE_DOWNLOAD, "Initiate Download"}, {CW_ELEM_LOCATION_DATA, "Location Data"}, {CW_ELEM_MAXIMUM_MESSAGE_LENGTH, "Maximum Message Length"}, - {CWMSGELEM_MTU_DISCOVERY_PADDING, "MTU Discovery Padding"}, + {CW_ELEM_MTU_DISCOVERY_PADDING, "MTU Discovery Padding"}, {CW_ELEM_RADIO_ADMINISTRATIVE_STATE, "Radio Administrative State"}, {CW_ELEM_RADIO_OPERATIONAL_STATE, "Radio Operational State"}, {CW_ELEM_RESULT_CODE, "Result Code"}, diff --git a/src/cw/cw.h b/src/cw/cw.h index 7b9415d1..7dcb5ef1 100644 --- a/src/cw/cw.h +++ b/src/cw/cw.h @@ -91,6 +91,9 @@ extern int cw_in_check_generic_resp(struct conn *conn, struct cw_action_in *a, extern int cw_in_check_generic_req(struct conn *conn, struct cw_action_in *a, uint8_t * data, int len, struct sockaddr *from); +extern int cw_in_mtu_discovery_padding(struct conn *conn, struct cw_action_in *a, + uint8_t * data, int len,struct sockaddr *from); + /** diff --git a/src/cw/cw_readelem_mtu_discovery_padding.c b/src/cw/cw_in_mtu_discovery_padding.c similarity index 67% rename from src/cw/cw_readelem_mtu_discovery_padding.c rename to src/cw/cw_in_mtu_discovery_padding.c index 79b9f175..f32ea966 100644 --- a/src/cw/cw_readelem_mtu_discovery_padding.c +++ b/src/cw/cw_in_mtu_discovery_padding.c @@ -17,24 +17,25 @@ */ -#include "capwap.h" -#include "cw_log.h" +#include "cw.h" +#include "dbg.h" + + +int cw_in_mtu_discovery_padding(struct conn *conn, struct cw_action_in *a, + uint8_t * data, int len,struct sockaddr *from) -int cw_readelem_mtu_discovery_padding(int type, uint8_t * msgelem, int len) { - if (type != CWMSGELEM_MTU_DISCOVERY_PADDING) - return 0; - if (!cw_dbg_is_level(DBG_CW_RFC)) - return 1; - int i, n = 0; for (i = 0; i < len; i++) { - if (msgelem[i] != 0xff) + if (data[i] != 0xff) n++; } - if (n) - cw_dbg(DBG_CW_RFC, - "MTU discovery padding msgelem contains %d non-0xFF byte(s) out of %d, See RFC 5415.", + if (n){ + cw_dbg(DBG_RFC, + "MTU discovery padding msg elem contains %d non-0xFF byte(s) out of %d, See RFC 5415.", n, len); + if (conn->strict_capwap) + return 0; + } return 1; } diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c index 2cca4741..fc2a512f 100644 --- a/src/mod/capwap/capwap_actions_ac.c +++ b/src/mod/capwap/capwap_actions_ac.c @@ -107,10 +107,20 @@ static cw_action_in_t actions_in[] = { .capwap_state = CW_STATE_DISCOVERY, .msg_id = CW_MSG_DISCOVERY_REQUEST, .elem_id = CW_ELEM_VENDOR_SPECIFIC_PAYLOAD, - .start = cw_in_vendor_specific_payload + .start = cw_in_vendor_specific_payload, + .min_len=7 } , + /* MTU Discovery Padding */ + { + .capwap_state = CW_STATE_DISCOVERY, + .msg_id = CW_MSG_DISCOVERY_REQUEST, + .elem_id = CW_ELEM_MTU_DISCOVERY_PADDING, + .start = cw_in_mtu_discovery_padding, + } + , + /* --------------------------------------------------------------------------- @@ -249,13 +259,13 @@ static cw_action_in_t actions_in[] = { } , - /* Vendor Specific Payload - Join Request*/ { .capwap_state = CW_STATE_JOIN, .msg_id = CW_MSG_JOIN_REQUEST, .elem_id = CW_ELEM_VENDOR_SPECIFIC_PAYLOAD, - .start = cw_in_vendor_specific_payload + .start = cw_in_vendor_specific_payload, + .min_len=7 } ,