diff --git a/src/mod/capwap/capwap_actions_wtp.c b/src/mod/capwap/capwap_actions_wtp.c index 0f096a76..b77d4671 100644 --- a/src/mod/capwap/capwap_actions_wtp.c +++ b/src/mod/capwap/capwap_actions_wtp.c @@ -208,6 +208,8 @@ static cw_action_in_t actions_in[] = { .end = cw_in_check_generic_resp } , + + /* Capwap Timers - Config Status Resp */ { .capwap_state = CW_STATE_CONFIGURE, @@ -221,8 +223,20 @@ static cw_action_in_t actions_in[] = { } , - + /* Decryption Error Report - Config Status Resp */ + { + .capwap_state = CW_STATE_CONFIGURE, + .msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE, + .elem_id = CW_ELEM_DECRYPTION_ERROR_REPORT_PERIOD, + .item_id = CW_RADIOITEM_DECRYPTION_ERROR_REPORT_PERIOD, + .start = cw_in_radio_generic, + .min_len = 3, + .max_len = 3, + .mand = 1 + } + , + /* Idle Timeout - Config Status Resp */ { .capwap_state = CW_STATE_CONFIGURE, @@ -237,6 +251,20 @@ static cw_action_in_t actions_in[] = { , + /* WTP Fallback - Config Status Resp */ + { + .capwap_state = CW_STATE_CONFIGURE, + .msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE, + .elem_id = CW_ELEM_WTP_FALLBACK, + .item_id = CW_ITEM_WTP_FALLBACK, + .start = cw_in_generic2, + .min_len = 1, + .max_len = 1, + .mand = 1 + } + , + + /* Result Code - Config Status Resp */ diff --git a/src/mod/capwap80211/capwap80211_actions_wtp.c b/src/mod/capwap80211/capwap80211_actions_wtp.c index 8de5e71c..2a7a431d 100644 --- a/src/mod/capwap80211/capwap80211_actions_wtp.c +++ b/src/mod/capwap80211/capwap80211_actions_wtp.c @@ -47,18 +47,21 @@ static cw_action_in_t actions_wtp_in[] = { } , - - -// {0, 0, CW_STATE_DISCOVERY, CW_MSG_DISCOVERY_REQUEST, -// CW_ACTION_IN_80211_WTP_RADIO_INFORMATION, 1} /* -------------------------------------------------------- - * Discovery Resquest + * Configuration Status Response */ -// {0, 0, CW_STATE_JOIN, CW_MSG_JOIN_REQUEST, -// CW_ACTION_IN_80211_WTP_RADIO_INFORMATION, 1} - + /* Rate Set - Config Status Resp */ + { + .capwap_state = CW_STATE_CONFIGURE, + .msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE, + .elem_id = CW_ELEM80211_RATE_SET, + .item_id = CW_RADIOITEM80211_RATE_SET, + .start = cw_in_radio_generic + } + + , {0, 0, 0} }; @@ -123,6 +126,7 @@ int capwap80211_register_actions_wtp(struct cw_actiondef *def) rc+= cw_strheap_register_strings(def->strelem, capwap_strings_elem80211); rc += cw_itemdefheap_register(def->items,capwap80211_itemdefs); + rc += cw_itemdefheap_register(def->radioitems,capwap80211_radioitemdefs); /*rc += cw_strheap_register_strings(def->strelem, capwap_strings_elem); */ diff --git a/src/mod/cisco/cisco_actions_wtp.c b/src/mod/cisco/cisco_actions_wtp.c index 41a9b2aa..4e7e7074 100644 --- a/src/mod/cisco/cisco_actions_wtp.c +++ b/src/mod/cisco/cisco_actions_wtp.c @@ -26,6 +26,8 @@ #include "cw/capwap_cisco.h" #include "cw/capwap80211.h" #include "cw/capwap80211_items.h" +#include "cw/cipwap_items.h" +#include "cw/lwapp_cisco.h" #include "mod_cisco.h" @@ -133,6 +135,38 @@ static cw_action_in_t actions_in[] = { + /* ---------------------------------------------------------------- + * Configuration Status Response + */ + + + { + /* Cisco's Vendor specific encapsulation + * of LWAPP elements */ + + .capwap_state = CW_STATE_CONFIGURE, + .msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE, + .vendor_id = CW_VENDOR_ID_CISCO, + .elem_id = CW_CISCO_SPAM_VENDOR_SPECIFIC, + .start = lw_in_vendor_specific, + + } + , + + + /* LWAPP Vendor spec Messages */ + { + + .proto = CW_ACTION_PROTO_LWAPP, + .capwap_state = CW_STATE_CONFIGURE, + .msg_id = CW_MSG_CONFIGURATION_STATUS_RESPONSE, + .vendor_id = LW_VENDOR_ID_CISCO, + .elem_id = LW_CISCO_MWAR_HASH_VALUE, + .item_id = CIPWAP_ITEM_AP_HASH_VALUE, + .start = cw_in_generic2, //cisco_in_telnet_ssh + } + + , /* End of list */ {0, 0} }; diff --git a/src/mod/cisco/mod_cisco_wtp.c b/src/mod/cisco/mod_cisco_wtp.c index 38eebe21..1e0e786b 100644 --- a/src/mod/cisco/mod_cisco_wtp.c +++ b/src/mod/cisco/mod_cisco_wtp.c @@ -21,10 +21,10 @@ static int register_actions(struct cw_actiondef *actions, int mode) case MOD_MODE_CAPWAP: { - struct mod_wtp *cmod = modload_wtp("capwap"); + struct mod_wtp *cmod = modload_wtp("cipwap"); if (!cmod) { cw_log(LOG_ERR, - "Can't initzialize mod_cisco, failed to load base mod mod_capwap"); + "Can't initzialize mod_cisco, failed to load base mod mod_cipwap"); return 1; }