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; }