diff --git a/actube.workspace b/actube.workspace
index 361145ca..c63c2d68 100644
--- a/actube.workspace
+++ b/actube.workspace
@@ -4,9 +4,9 @@
-
+
-
+
diff --git a/src/cw/capwap.h b/src/cw/capwap.h
index 1d15b5ac..bd4f7dd6 100644
--- a/src/cw/capwap.h
+++ b/src/cw/capwap.h
@@ -227,7 +227,7 @@
#define CW_ELEM_DATA_TRANSFER_DATA 13
#define CW_ELEM_DATA_TRANSFER_MODE 14
#define CW_ELEM_DECRYPTION_ERROR_REPORT 15
-#define CW_ELEM_DECRYPTION_ERROR_REPORT_PERIOD 16
+#define CAPWAP_ELEM_DECRYPTION_ERROR_REPORT_PERIOD 16
#define CW_ELEM_DELETE_MAC_ACL_ENTRY 17
#define CW_ELEM_DELETE_STATION 18
#define CW_ELEM_RESERVED_19 19
@@ -238,7 +238,7 @@
#define CW_ELEM_DUPLICATE_IPV4_ADDRESS 21
#define CW_ELEM_DUPLICATE_IPV6_ADRESS 22
#define CAPWAP_ELEM_ECN_SUPPORT 53
-#define CW_ELEM_IDLE_TIMEOUT 23
+#define CAPWAP_ELEM_IDLE_TIMEOUT 23
#define CW_ELEM_IMAGE_DATA 24
#define CW_ELEM_IMAGE_IDENTIFIER 25
#define CW_ELEM_IMAGE_INFORMATION 26
@@ -247,7 +247,7 @@
#define CAPWAP_ELEM_MAXIMUM_MESSAGE_LENGTH 29
#define CAPWAP_ELEM_MTU_DISCOVERY_PADDING 52
#define CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE 31
-#define CW_ELEM_RADIO_OPERATIONAL_STATE 32
+#define CAPWAP_ELEM_RADIO_OPERATIONAL_STATE 32
#define CAPWAP_ELEM_RESULT_CODE 33
#define CW_ELEM_RETURNED_MESSAGE_ELEMENT 34
#define CAPWAP_ELEM_SESSION_ID 35
diff --git a/src/cw/capwap_strings_elem.c b/src/cw/capwap_strings_elem.c
index f7eeb0c9..37ede1cc 100644
--- a/src/cw/capwap_strings_elem.c
+++ b/src/cw/capwap_strings_elem.c
@@ -22,7 +22,7 @@ struct cw_StrListElem capwap_strings_elem[] = {
{CW_ELEM_DATA_TRANSFER_DATA, "Data Transfer Data"},
{CW_ELEM_DATA_TRANSFER_MODE, "Data Transfer Mode"},
{CW_ELEM_DECRYPTION_ERROR_REPORT, "Encryption Error Report"},
- {CW_ELEM_DECRYPTION_ERROR_REPORT_PERIOD, "Decryption Error Report Period"},
+ {CAPWAP_ELEM_DECRYPTION_ERROR_REPORT_PERIOD, "Decryption Error Report Period"},
{CW_ELEM_DELETE_MAC_ACL_ENTRY, "Delete MAC ACL Entry"},
{CW_ELEM_DELETE_STATION, "Delete Station"},
{CW_ELEM_RESERVED_19, "Reserved 19"},
@@ -30,7 +30,7 @@ struct cw_StrListElem capwap_strings_elem[] = {
{CW_ELEM_DUPLICATE_IPV4_ADDRESS, "Duplicate IPv4 Address"},
{CW_ELEM_DUPLICATE_IPV6_ADRESS, "Duplicate IPv6 Address"},
{CAPWAP_ELEM_ECN_SUPPORT, "ECN Support"},
- {CW_ELEM_IDLE_TIMEOUT, "Idle Timeout"},
+ {CAPWAP_ELEM_IDLE_TIMEOUT, "Idle Timeout"},
{CW_ELEM_IMAGE_DATA, "Image Data"},
{CW_ELEM_IMAGE_IDENTIFIER, "Image Identifier"},
{CW_ELEM_IMAGE_INFORMATION, "Image Information"},
@@ -39,7 +39,7 @@ struct cw_StrListElem capwap_strings_elem[] = {
{CAPWAP_ELEM_MAXIMUM_MESSAGE_LENGTH, "Maximum Message Length"},
{CAPWAP_ELEM_MTU_DISCOVERY_PADDING, "MTU Discovery Padding"},
{CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, "Radio Administrative State"},
- {CW_ELEM_RADIO_OPERATIONAL_STATE, "Radio Operational State"},
+ {CAPWAP_ELEM_RADIO_OPERATIONAL_STATE, "Radio Operational State"},
{CAPWAP_ELEM_RESULT_CODE, "Result Code"},
{CW_ELEM_RETURNED_MESSAGE_ELEMENT, "Returned Message Element"},
{CAPWAP_ELEM_SESSION_ID, "Session ID"},
diff --git a/src/cw/cw_put_elem_radio_operational_state.c b/src/cw/cw_put_elem_radio_operational_state.c
index 9337d693..5917f687 100644
--- a/src/cw/cw_put_elem_radio_operational_state.c
+++ b/src/cw/cw_put_elem_radio_operational_state.c
@@ -29,7 +29,7 @@ int xcw_put_elem_radio_operational_state(uint8_t * dst, int rid, int os, int d7m
/* Put oper state */
cw_set_word(d+5,os);
- d+=3+cw_put_elem_hdr(d,CW_ELEM_RADIO_OPERATIONAL_STATE,3);
+ d+=3+cw_put_elem_hdr(d,CAPWAP_ELEM_RADIO_OPERATIONAL_STATE,3);
return d-dst;
}
diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c
index f009c2e5..c7e3d3f5 100644
--- a/src/mod/capwap/capwap_actions_ac.c
+++ b/src/mod/capwap/capwap_actions_ac.c
@@ -46,6 +46,14 @@ static cw_KTVStruct_t capwap_timers[] = {
{NULL,NULL,0,0}
};
+static cw_KTVStruct_t radio_operational_state[] = {
+
+ {CW_TYPE_BYTE, "state", 1,-1},
+ {CW_TYPE_BYTE, "cause", 1,-1},
+ {NULL,NULL,0,0}
+};
+
+
static struct cw_ElemHandler handlers[] = {
{
@@ -316,7 +324,52 @@ static struct cw_ElemHandler handlers[] = {
cw_out_generic_struct /* put */
}
,
+ {
+ "Decryption Error Report Period", /* name */
+ CAPWAP_ELEM_DECRYPTION_ERROR_REPORT_PERIOD, /* Element ID */
+ 0, 0, /* Vendor / Proto */
+ 3, 3, /* min/max length */
+ CW_TYPE_WORD, /* type */
+ "decryption-error-report-period", /* Key */
+ cw_in_radio_generic, /* get */
+ cw_out_radio_generic /* put */
+ }
+ ,
+ {
+ "Idle Timeout", /* name */
+ CAPWAP_ELEM_IDLE_TIMEOUT, /* Element ID */
+ 0, 0, /* Vendor / Proto */
+ 4, 4, /* min/max length */
+ CW_TYPE_DWORD, /* type */
+ "idle-timeout", /* Key */
+ cw_in_generic, /* get */
+ cw_out_generic /* put */
+ }
+ ,
+
+ {
+ "WTP Fallback", /* name */
+ CAPWAP_ELEM_WTP_FALLBACK, /* Element ID */
+ 0, 0, /* Vendor / Proto */
+ 1, 1, /* min/max length */
+ CW_TYPE_BYTE, /* type */
+ "wtp-fallback", /* Key */
+ cw_in_generic, /* get */
+ cw_out_generic /* put */
+ }
+ ,
+ {
+ "Radio Operational State", /* name */
+ CAPWAP_ELEM_RADIO_OPERATIONAL_STATE, /* Element ID */
+ 0, 0, /* Vendor / Proto */
+ 3, 3, /* min/max length */
+ radio_operational_state, /* type */
+ "operational-state", /* Key */
+ cw_in_radio_generic_struct, /* get */
+ cw_out_radio_generic_struct /* put */
+ }
+ ,
{0,0,0,0,0,0,0,0}
@@ -399,10 +452,12 @@ static struct cw_ElemDef configuration_status_request_elements[] ={
static int configuration_status_response_states[] = {CAPWAP_STATE_JOIN,0};
static struct cw_ElemDef configuration_status_response_elements[] ={
- {0,0,CAPWAP_ELEM_CAPWAP_TIMERS, 1, 0},
- {0,0,CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, 1, 0},
+ {0,0,CAPWAP_ELEM_CAPWAP_TIMERS, 1, 0},
+ {0,0,CAPWAP_ELEM_DECRYPTION_ERROR_REPORT_PERIOD, 1, 0},
+ {0,0,CAPWAP_ELEM_IDLE_TIMEOUT, 1, 0},
+ {0,0,CAPWAP_ELEM_WTP_FALLBACK, 1, 0},
- {0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
+ {0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
{0,0,0,0,0}
};
diff --git a/src/mod/capwap/capwap_actions_wtp.c b/src/mod/capwap/capwap_actions_wtp.c
index fa167773..2aed1d9c 100644
--- a/src/mod/capwap/capwap_actions_wtp.c
+++ b/src/mod/capwap/capwap_actions_wtp.c
@@ -227,7 +227,7 @@ static cw_action_in_t actions_in[] = {
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_RESPONSE,
- .elem_id = CW_ELEM_DECRYPTION_ERROR_REPORT_PERIOD,
+ .elem_id = CAPWAP_ELEM_DECRYPTION_ERROR_REPORT_PERIOD,
.item_id = CW_RADIOITEM_DECRYPTION_ERROR_REPORT_PERIOD,
.start = cw_in_radio_generic,
.min_len = 3,
@@ -241,7 +241,7 @@ static cw_action_in_t actions_in[] = {
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_RESPONSE,
- .elem_id = CW_ELEM_IDLE_TIMEOUT,
+ .elem_id = CAPWAP_ELEM_IDLE_TIMEOUT,
.item_id = CW_ITEM_IDLE_TIMEOUT,
.start = cw_in_generic2,
.min_len = 4,
@@ -684,7 +684,7 @@ static cw_action_out_t actions_out[] = {
/* Radio Operational State(s) - Change State Event */
{
.msg_id = CAPWAP_MSG_CHANGE_STATE_EVENT_REQUEST,
- .elem_id = CW_ELEM_RADIO_OPERATIONAL_STATE,
+ .elem_id = CAPWAP_ELEM_RADIO_OPERATIONAL_STATE,
.item_id = CW_RADIOITEM_OPER_STATE,
// .out = cw_out_radio_operational_state,
.out = cw_out_radio_generic,
diff --git a/src/mod/capwap80211/capwap80211_messages.c b/src/mod/capwap80211/capwap80211_messages.c
index fa923181..f899d4af 100644
--- a/src/mod/capwap80211/capwap80211_messages.c
+++ b/src/mod/capwap80211/capwap80211_messages.c
@@ -31,10 +31,10 @@ static struct cw_ElemHandler handlers[] = {
CAPWAP80211_ELEM_RATE_SET, /* Element ID */
0, 0, /* Vendor / Proto */
3, 0, /* min/max length */
- NULL, /* type */
+ CW_TYPE_BSTR16, /* type */
"rate_set", /* Key */
- capwap80211_in_crate_set, /* get */
- NULL /* put */
+ cw_in_radio_generic, /* get */
+ cw_out_radio_generic /* put */
}
,
{NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL}
@@ -126,14 +126,14 @@ static int capwap80211_in_crate_set(struct cw_ElemHandler *eh,
struct cw_ElemHandlerParams *params,
uint8_t * data, int len)
{
- int radio;
+/* int radio;
int i;
radio = cw_get_byte(data);
for (i=0; iremote_cfg,DBG_INFO,"Config ***","CFG: ", "End config ***");
return 1;
}