diff --git a/actube.workspace b/actube.workspace index b8870938..c63c2d68 100644 --- a/actube.workspace +++ b/actube.workspace @@ -3,8 +3,8 @@ - - + + diff --git a/src/ac/wtpman.c b/src/ac/wtpman.c index b42b6626..6b89d308 100644 --- a/src/ac/wtpman.c +++ b/src/ac/wtpman.c @@ -419,7 +419,7 @@ static void * wtpman_run(void *arg) - conn->capwap_state = CW_STATE_RUN; + conn->capwap_state = CAPWAP_STATE_RUN; /* // XXX testing ... // DBGX("Cofig to sql", ""); @@ -432,7 +432,7 @@ static void * wtpman_run(void *arg) reset_echointerval_timer(wtpman); rc = 0; - while (wtpman->conn->capwap_state == CW_STATE_RUN) { + while (wtpman->conn->capwap_state == CAPWAP_STATE_RUN) { rc = cw_read_messages(wtpman->conn); if (rc < 0) { if (errno != EAGAIN) diff --git a/src/cw/conn_process_packet.c b/src/cw/conn_process_packet.c index 1be6c074..d5ae821c 100644 --- a/src/cw/conn_process_packet.c +++ b/src/cw/conn_process_packet.c @@ -425,9 +425,9 @@ static int process_elements(struct conn *conn, uint8_t * rawmsg, int len, mavl_destroy(mand_found); - cw_dbg_ktv_dump(conn->remote_cfg,DBG_CFG_DMP, +/* cw_dbg_ktv_dump(conn->remote_cfg,DBG_CFG_DMP, " *** Remote CFG dump ***", "CFG:", " *** End of remote CFG dump"); - +*/ if (message->postprocess){ diff --git a/src/cw/cw_put_msg.c b/src/cw/cw_put_msg.c index 7296e1c3..2ddd8c47 100644 --- a/src/cw/cw_put_msg.c +++ b/src/cw/cw_put_msg.c @@ -46,7 +46,7 @@ int cw_put_msg(struct conn *conn, uint8_t * rawout) int len,l; cw_dbg(DBG_INFO, "Number of elements in ktv: %d",conn->local_cfg->count); - cw_dbg_ktv_dump(conn->local_cfg,DBG_CFG_DMP,"Local CFG","LOCAL:","End Local CFG"); +/* cw_dbg_ktv_dump(conn->local_cfg,DBG_CFG_DMP,"Local CFG","LOCAL:","End Local CFG");*/ /* rawout is already initialized, so we can get * msg type from buffer */ diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c index efb42880..382a8d30 100644 --- a/src/mod/capwap/capwap_actions_ac.c +++ b/src/mod/capwap/capwap_actions_ac.c @@ -464,10 +464,10 @@ static struct cw_ElemDef configuration_status_response_elements[] ={ static int configuration_update_request_states[] = {CAPWAP_STATE_RUN,0}; static struct cw_ElemDef configuration_update_request_elements[] ={ - {0,0,CAPWAP_ELEM_AC_NAME, 1, 0}, - {0,0,CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, 1, 0}, - {0,0,CAPWAP_ELEM_STATISTICS_TIMER, 1, 0}, - {0,0,CAPWAP_ELEM_WTP_REBOOT_STATISTICS, 1, 0}, + + {0,0,CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, 0, 0}, + {0,0,CAPWAP_ELEM_STATISTICS_TIMER, 0, 0}, + {0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE}, {0,0,0,0,0} @@ -477,18 +477,12 @@ static struct cw_ElemDef configuration_update_request_elements[] ={ static int echo_request_states[] = {CAPWAP_STATE_RUN,0}; static struct cw_ElemDef echo_request_elements[] ={ - {0,0,CAPWAP_ELEM_AC_NAME, 1, 0}, - {0,0,CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, 1, 0}, - {0,0,CAPWAP_ELEM_STATISTICS_TIMER, 1, 0}, - {0,0,CAPWAP_ELEM_WTP_REBOOT_STATISTICS, 1, 0}, - {0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE}, {0,0,0,0,0} }; static int echo_response_states[] = {CAPWAP_STATE_RUN,0}; static struct cw_ElemDef echo_response_elements[] ={ - {0,0,0,0,0} }; diff --git a/src/mod/cisco/capwap_cisco.h b/src/mod/cisco/capwap_cisco.h index b24e79bd..89978ca4 100644 --- a/src/mod/cisco/capwap_cisco.h +++ b/src/mod/cisco/capwap_cisco.h @@ -51,8 +51,8 @@ #define CW_CISCO_MWAR_NAME LW_ELEM_AC_NAME /* 31 */ -#define CW_CISCO_LOCATION_DATA LW_ELEM_LOCATION_DATA /* 35 */ -#define CW_CISCO_STATISTICS_TIMER LW_ELEM_STATISTICS_TIMER /* 37 */ +#define CISCO_ELEM_LOCATION_DATA LW_ELEM_LOCATION_DATA /* 35 */ +#define CISCO_ELEM_STATISTICS_TIMER LW_ELEM_STATISTICS_TIMER /* 37 */ #define CW_CISCO_ANTENNA_PAYLOAD 41 @@ -86,7 +86,7 @@ #define CW_CISCO_LWAPP_CHANNEL_POWER 134 -#define CW_CISCO_AP_CORE_DUMP 135 +#define CISCO_ELEM_AP_CORE_DUMP 135 #define CISCO_ELEM_AP_PRE_STD_SWITCH_CONFIG 137 #define CISCO_ELEM_AP_POWER_INJECTOR_CONFIG 138 diff --git a/src/mod/cisco/cisco_actions_ac.c b/src/mod/cisco/cisco_actions_ac.c index 2c0ce608..66e65f29 100644 --- a/src/mod/cisco/cisco_actions_ac.c +++ b/src/mod/cisco/cisco_actions_ac.c @@ -300,6 +300,15 @@ static cw_KTVStruct_t cisco_ap_qos[]={ {NULL,NULL,0,0} }; +static cw_KTVStruct_t cisco_ap_core_dump[]={ + {CW_TYPE_IPADDRESS,"tftp-server",4,-1}, + {CW_TYPE_BOOL,"enable",1,16}, + {CW_TYPE_STR,"filename",100,17}, + {NULL,NULL,0,0} +}; + + + static struct cw_ElemHandler handlers[] = { { @@ -764,6 +773,27 @@ static struct cw_ElemHandler handlers[] = { cw_out_radio_generic /* put */ }, + { + "Location Data", /* name */ + CISCO_ELEM_LOCATION_DATA, /* Element ID */ + CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ + 0,1024, /* min/max length */ + CW_TYPE_BSTR16, /* type */ + "location-data", /* Key */ + cw_in_generic, /* get */ + cw_out_generic /* put */ + }, + + { + "AP Core Dump", /* name */ + CISCO_ELEM_AP_CORE_DUMP, /* Element ID */ + CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ + 0,1024, /* min/max length */ + cisco_ap_core_dump, /* type */ + "cisco/ap-core-dump", /* Key */ + cw_in_generic_struct, /* get */ + cw_out_generic_struct /* put */ + }, {0,0,0,0,0,0,0,0} @@ -825,7 +855,7 @@ static struct cw_ElemDef join_response_elements[] ={ static int configuration_status_request_states[] = {CAPWAP_STATE_JOIN,0}; static struct cw_ElemDef configuration_status_request_elements[] ={ - {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,1, CW_IGNORE}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,0, CW_IGNORE}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_UPTIME, 0, 0}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_LED_STATE_CONFIG, 0, 0}, @@ -859,7 +889,7 @@ static struct cw_ElemDef configuration_status_response_elements[] ={ {0,0, CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, 1,0}, {0,0, CAPWAP_ELEM_RADIO_OPERATIONAL_STATE, 1,0}, - {0,CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,1, CW_IGNORE}, + {0,CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,0, CW_IGNORE}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_MULTI_DOMAIN_CAPABILITY, 0, 0}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_WTP_RADIO_CONFIGURATION, 1, 0}, @@ -875,6 +905,42 @@ static struct cw_ElemDef configuration_status_response_elements[] ={ {0,0,0,0} }; + +static int configuration_update_request_states[] = {CAPWAP_STATE_RUN,0}; +static struct cw_ElemDef configuration_update_request_elements[] ={ + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,0, CW_IGNORE}, + + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_UPTIME, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_LED_STATE_CONFIG, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_LOG_FACILITY, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_MULTI_DOMAIN_CAPABILITY, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_WTP_BOARD_DATA, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_LED_FLASH_CONFIG, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_PRE_STD_SWITCH_CONFIG, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_POWER_INJECTOR_CONFIG, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_MODE_AND_TYPE, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_STATIC_IP_ADDR, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_MIN_IOS_VERSION, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_BACKUP_SOFTWARE_VERSION, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_REGULATORY_DOMAIN, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_MODEL, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_RESET_BUTTON_STATE, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_WTP_RADIO_CONFIGURATION, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_LOCATION_DATA, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_CORE_DUMP, 0, 0}, + + {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_USERNAME_PASSWORD, 0, 0}, + {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_LOGHOST_CONFIG, 0, 0}, + {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_TELNET_SSH, 0, 0}, + {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_SUBMODE, 0, 0}, + {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_ETHERNET_PORT_SUBTYPE, 0, 0}, + + {0,0,0,00} + +}; + + + static struct cw_MsgDef messages[] = { { NULL, /* name */ @@ -927,6 +993,17 @@ static struct cw_MsgDef messages[] = { NULL /* postprocess */ }, + { + NULL, /* name */ + CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST, /* type */ + CW_ROLE_WTP, + configuration_update_request_states, + configuration_update_request_elements, + NULL /* postprocess */ + }, + + + {0,0,0,0} diff --git a/src/wtp/run.c b/src/wtp/run.c index c3122949..33b468ce 100644 --- a/src/wtp/run.c +++ b/src/wtp/run.c @@ -90,6 +90,13 @@ static void update_radios(struct conn * conn, mbag_t result) static void do_update(struct conn * conn) { int rc; + + cw_dbg_ktv_dump(conn->remote_cfg,DBG_INFO,"KTV DUMP ----------------","Remote:", "DUMP done -------"); + + + + + if (!update) return; update=0; @@ -117,7 +124,7 @@ int run(struct conn * conn) - conn->capwap_state = CW_STATE_RUN; + conn->capwap_state = CAPWAP_STATE_RUN; /* conn->msg_end=handle_update_req;*/ @@ -133,7 +140,8 @@ int run(struct conn * conn) - while (!cw_timer_timeout(timer) && conn->capwap_state == CW_STATE_RUN) { + while (!cw_timer_timeout(timer) && conn->capwap_state == CAPWAP_STATE_RUN) { + mavl_del_all(conn->remote_cfg); rc = cw_read_messages(conn); if (rc < 0 && errno == EAGAIN) { continue; @@ -167,7 +175,7 @@ int run(struct conn * conn) - } while (conn->capwap_state == CW_STATE_RUN); + } while (conn->capwap_state == CAPWAP_STATE_RUN); /*