A lot of Cisco stuff added
FossilOrigin-Name: ea4edc78cae6fe99d7b4b29d95a8c30a4672d1d1448c0597f5e65e2a74138b9b
This commit is contained in:
@ -27,6 +27,17 @@
|
||||
|
||||
#include "mod_capwap.h"
|
||||
|
||||
static cw_KTVStruct_t wtp_reboot_statistics[] = {
|
||||
{CW_TYPE_WORD, "reboot-count", 2,-1},
|
||||
{CW_TYPE_WORD, "ac-initiated-count", 2,-1},
|
||||
{CW_TYPE_WORD, "link-failure-count", 2,-1},
|
||||
{CW_TYPE_WORD, "sw-failure-count", 2,-1},
|
||||
{CW_TYPE_WORD, "hw-failure-count", 2,-1},
|
||||
{CW_TYPE_WORD, "other-failure-count", 2,-1},
|
||||
{CW_TYPE_WORD, "unknown-failure-count", 2,-1},
|
||||
{CW_TYPE_WORD, "last-failure-type", 2,-1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static struct cw_ElemHandler handlers[] = {
|
||||
|
||||
@ -124,7 +135,7 @@ static struct cw_ElemHandler handlers[] = {
|
||||
"AC Name", /* name */
|
||||
CAPWAP_ELEM_AC_NAME, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
0,0, /* min/max length */
|
||||
1,CAPWAP_MAX_AC_NAME_LEN, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
"ac-name", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
@ -250,6 +261,43 @@ static struct cw_ElemHandler handlers[] = {
|
||||
}
|
||||
|
||||
,
|
||||
|
||||
{
|
||||
"Statitsics Timer", /* name */
|
||||
CAPWAP_ELEM_STATISTICS_TIMER, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
2,2, /* min/max length */
|
||||
CW_TYPE_WORD, /* type */
|
||||
"statistics-timer", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"WTP Reboot Statistics", /* name */
|
||||
CAPWAP_ELEM_WTP_REBOOT_STATISTICS, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
15,15, /* min/max length */
|
||||
wtp_reboot_statistics, /* type */
|
||||
"wtp-reboot-statistics", /* Key */
|
||||
cw_in_generic_struct, /* handler */
|
||||
cw_out_generic_struct /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"Radio Administrative State", /* name */
|
||||
CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE, /* Element ID */
|
||||
0, 0, /* Vendor / Proto */
|
||||
2, 2, /* min/max length */
|
||||
CW_TYPE_BYTE, /* type */
|
||||
"admin-state", /* Key */
|
||||
cw_in_radio_generic, /* get */
|
||||
cw_out_radio_generic /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{0,0,0,0,0,0,0,0}
|
||||
|
||||
};
|
||||
@ -294,15 +342,7 @@ static struct cw_ElemDef join_request_elements[] ={
|
||||
|
||||
{0,0,CAPWAP_ELEM_MAXIMUM_MESSAGE_LENGTH, 0, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
|
||||
|
||||
/* {0,0,CAPWAP_ELEM_DISCOVERY_TYPE, 1, 0},
|
||||
|
||||
{0,0,CAPWAP_ELEM_WTP_DESCRIPTOR, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_WTP_FRAME_TUNNEL_MODE, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_WTP_MAC_TYPE, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_MTU_DISCOVERY_PADDING, 0, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
|
||||
*/
|
||||
{0,0,0,0,0}
|
||||
};
|
||||
|
||||
@ -319,16 +359,24 @@ static struct cw_ElemDef join_response_elements[] ={
|
||||
|
||||
{0,0,CAPWAP_ELEM_MAXIMUM_MESSAGE_LENGTH, 0, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},
|
||||
|
||||
/* {0,0,CAPWAP_ELEM_AC_DESCRIPTOR, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_AC_NAME, 1, 0},
|
||||
{0,0,CW_ELEM_CAPWAP_CONTROL_IPV4_ADDRESS, 1, 0},
|
||||
{0,0,CW_ELEM_CAPWAP_CONTROL_IPV6_ADDRESS, 1, 0},
|
||||
{0,0,CAPWAP_ELEM_VENDOR_SPECIFIC_PAYLOAD, 0, CW_IGNORE},*/
|
||||
|
||||
{0,0,0,0,0}
|
||||
|
||||
};
|
||||
|
||||
|
||||
static int configuration_status_request_states[] = {CAPWAP_STATE_JOIN,0};
|
||||
static struct cw_ElemDef configuration_status_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 struct cw_MsgDef messages[] = {
|
||||
{
|
||||
"Discovery Request",
|
||||
@ -362,6 +410,13 @@ static struct cw_MsgDef messages[] = {
|
||||
join_response_elements
|
||||
},
|
||||
|
||||
{
|
||||
"Configuration Status Request", /* name */
|
||||
CAPWAP_MSG_CONFIGURATION_STATUS_REQUEST, /* msg type */
|
||||
CW_ROLE_AC, /* role */
|
||||
configuration_status_request_states, /* allowed states */
|
||||
configuration_status_request_elements /* msg elements */
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
@ -421,7 +421,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CW_STATE_RUN,
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST,
|
||||
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.elem_id = CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.item_id = CW_RADIOITEM_ADMIN_STATE,
|
||||
.start = cw_in_radio_generic,
|
||||
.min_len=2,
|
||||
@ -639,7 +639,7 @@ static cw_action_out_t actions_out[] = {
|
||||
/* Radio Admin State - Config Status Request - OUT */
|
||||
{
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_REQUEST,
|
||||
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.elem_id = CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.item_id = CW_RADIOITEM_ADMIN_STATE,
|
||||
.out = cw_out_radio_generic,
|
||||
// .out = cw_out_radio_administrative_states,
|
||||
@ -665,7 +665,7 @@ static cw_action_out_t actions_out[] = {
|
||||
/* Statistics Timer - Join Request */
|
||||
{
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_REQUEST,
|
||||
.elem_id = CW_ELEM_STATISTICS_TIMER,
|
||||
.elem_id = CAPWAP_ELEM_STATISTICS_TIMER,
|
||||
.item_id = CW_ITEM_STATISTICS_TIMER,
|
||||
.out = cw_out_generic,
|
||||
.get = cw_out_get_config,
|
||||
|
@ -53,7 +53,7 @@ static struct cw_ElemDef join_response_elements[] = {
|
||||
|
||||
static struct cw_MsgDef messages[] = {
|
||||
{
|
||||
"Discovery Request",
|
||||
NULL,
|
||||
CAPWAP_MSG_DISCOVERY_REQUEST,
|
||||
CW_ROLE_AC,
|
||||
discovery_request_states,
|
||||
@ -61,7 +61,7 @@ static struct cw_MsgDef messages[] = {
|
||||
}
|
||||
,
|
||||
{
|
||||
"Join Request",
|
||||
NULL,
|
||||
CAPWAP_MSG_JOIN_REQUEST,
|
||||
CW_ROLE_AC,
|
||||
join_request_states,
|
||||
@ -69,7 +69,7 @@ static struct cw_MsgDef messages[] = {
|
||||
}
|
||||
,
|
||||
{
|
||||
"Join Request",
|
||||
NULL,
|
||||
CAPWAP_MSG_JOIN_RESPONSE,
|
||||
CW_ROLE_AC,
|
||||
join_response_states,
|
||||
|
@ -39,8 +39,8 @@
|
||||
#define CW_CISCO_ADD_WLAN LW_ELEM_80211_ADD_WLAN /* 7 */
|
||||
#define CW_CISCO_WTP_RADIO_CFG 8
|
||||
|
||||
#define CW_CISCO_MULTI_DOMAIN_CAPAB LW_ELEM_80211_MULTI_DOMAIN_CAPABILITY /* 10 */
|
||||
#define CW_CISCO_MAC_OPERATION LW_ELEM_80211_MAC_OPERATION /* 11 */
|
||||
#define CISCO_ELEM_MULTI_DOMAIN_CAPABILITY LW_ELEM_80211_MULTI_DOMAIN_CAPABILITY /* 10 */
|
||||
#define CISCO_ELEM_MAC_OPERATION LW_ELEM_80211_MAC_OPERATION /* 11 */
|
||||
|
||||
#define CW_CISCO_TX_POWER LW_ELEM_80211_TX_POWER /* 12 */
|
||||
#define CW_CISCO_TX_POWER_LEVELS LW_ELEM_80211_TX_POWER_LEVELS /* 13 */
|
||||
@ -57,15 +57,15 @@
|
||||
#define CW_CISCO_ANTENNA_PAYLOAD 41
|
||||
|
||||
#define CW_CISCO_CERTIFICATE LW_ELEM_CERTIFICATE /* 44 */
|
||||
#define CW_CISCO_WTP_BOARD_DATA LW_ELEM_WTP_BOARD_DATA /* 50 */
|
||||
#define CISCO_ELEM_WTP_BOARD_DATA LW_ELEM_WTP_BOARD_DATA /* 50 */
|
||||
#define CW_CISCO_BCAST_SSID_MODE LW_BCAST_SSID_MODE
|
||||
#define CW_CISCO_AP_MODE_AND_TYPE LW_ELEM_80211_WTP_MODE_AND_TYPE /* 54 */
|
||||
#define CISCO_ELEM_AP_MODE_AND_TYPE LW_ELEM_80211_WTP_MODE_AND_TYPE /* 54 */
|
||||
#define CW_CISCO_AP_QOS LW_ELEM_QOS /* 57 */
|
||||
|
||||
#define CW_CISCO_AC_IPV4_LIST LW_ELEM_AC_IPV4_LIST /* 59 */
|
||||
|
||||
#define CW_CISCO_CAPWAP_TIMERS LW_ELEM_LWAPP_TIMERS /* 68 */
|
||||
#define CW_CISCO_AP_STATIC_IP_ADDR 83
|
||||
#define CISCO_ELEM_AP_STATIC_IP_ADDR 83
|
||||
#define CW_CISCO_SIG_PAYLOAD 84
|
||||
#define CW_CISCO_SIG_TOGGLE 87
|
||||
#define CW_CISCO_AIRSPACE_CAPABILITY 88
|
||||
@ -75,10 +75,10 @@
|
||||
|
||||
#define CISCO_ELEM_SPAM_VENDOR_SPECIFIC 104
|
||||
|
||||
#define CW_CISCO_AP_UPTIME 108
|
||||
#define CISCO_ELEM_AP_UPTIME 108
|
||||
|
||||
#define CISCO_ELEM_AP_GROUP_NAME 123
|
||||
#define CW_CISCO_AP_LED_STATE_CONFIG 125
|
||||
#define CISCO_ELEM_AP_LED_STATE_CONFIG 125
|
||||
#define CW_CISCO_AP_MODEL 127
|
||||
#define CW_CISCO_AP_RESET_BUTTON_STATE 128
|
||||
|
||||
@ -86,20 +86,20 @@
|
||||
|
||||
#define CW_CISCO_LWAPP_CHANNEL_POWER 134
|
||||
#define CW_CISCO_AP_CORE_DUMP 135
|
||||
#define CW_CISCO_AP_PRE_STD_SWITCH_CONFIG 137
|
||||
#define CW_CISCO_AP_POWER_INJECTOR_CONFIG 138
|
||||
#define CISCO_ELEM_AP_PRE_STD_SWITCH_CONFIG 137
|
||||
#define CISCO_ELEM_AP_POWER_INJECTOR_CONFIG 138
|
||||
|
||||
#define CW_CISCO_AP_MINIOS_VERSION 149
|
||||
#define CISCO_ELEM_AP_MIN_IOS_VERSION 149
|
||||
#define CISCO_ELEM_AP_TIMESYNC 151
|
||||
#define CW_CISCO_AP_DOMAIN 169
|
||||
#define CW_CISCO_AP_DNS 170
|
||||
|
||||
#define CW_CISCO_AP_BACKUP_SOFTWARE_VERSION 183
|
||||
#define CISCO_ELEM_AP_BACKUP_SOFTWARE_VERSION 183
|
||||
#define CW_CISCO_BOARD_DATA_OPTIONS 207
|
||||
#define CISCO_ELEM_MWAR_TYPE 208
|
||||
#define CW_CISCO_80211_ASSOC_LIMIT 213
|
||||
#define CW_CISCO_TLV_PAYLOAD 215
|
||||
#define CW_CISCO_AP_LOG_FACILITY 224
|
||||
#define CISCO_ELEM_AP_LOG_FACILITY 224
|
||||
|
||||
#define CW_CISCO_OPER_STATE_DETAIL_CAUSE 235
|
||||
|
||||
@ -109,7 +109,7 @@
|
||||
#define CW_CISCO_DOT11_CONFIG_CHECKER 242
|
||||
|
||||
#define CW_CISCO_AP_VENUE_SETTINGS 249
|
||||
#define CW_CISCO_AP_LED_FLASH_CONFIG 254
|
||||
#define CISCO_ELEM_AP_LED_FLASH_CONFIG 254
|
||||
|
||||
|
||||
/*
|
||||
|
@ -27,6 +27,11 @@
|
||||
|
||||
#include "capwap_cisco.h"
|
||||
#include "mod_cisco.h"
|
||||
#include "cw/dbg.h"
|
||||
#include "cw/format.h"
|
||||
|
||||
static int postprocess_discovery();
|
||||
|
||||
|
||||
|
||||
static cw_KTVStruct_t ap_time_sync[] = {
|
||||
@ -45,10 +50,94 @@ static cw_KTVStruct_t mwar_addr[] = {
|
||||
static cw_KTVStruct_t cisco_lw_path_mtu[] = {
|
||||
{CW_TYPE_WORD, "max", 2,-1},
|
||||
{CW_TYPE_WORD, "len", 2,-1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_ap_uptime[] = {
|
||||
{CW_TYPE_DWORD, "current-uptime", 4,-1},
|
||||
{CW_TYPE_DWORD, "last-uptime", 4,-1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_ap_username_and_password[] = {
|
||||
{CW_TYPE_STR, "username", 33, -1 },
|
||||
{CW_TYPE_STR, "password", 121, -1 },
|
||||
{CW_TYPE_STR, "enable-password", 121, 33+121 },
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_loghost_config[] = {
|
||||
{CW_TYPE_IPADDRESS, "loghost", 4, -1 },
|
||||
{CW_TYPE_STR, "last-joined-ap", 32, -1 },
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_ap_led_state_config[] = {
|
||||
{CW_TYPE_BYTE, "led-state", 1, -1},
|
||||
{CW_TYPE_BYTE, "save-flag", 1, -1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVEnum_t cisco_ap_telnet_ssh[] ={
|
||||
{0, "telnet", CW_TYPE_BOOL, cw_in_generic },
|
||||
{1, "ssh", CW_TYPE_BOOL, cw_in_generic },
|
||||
{0,0,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_multi_domain_cabability[]={
|
||||
{CW_TYPE_BYTE, "reserved", 1, -1},
|
||||
{CW_TYPE_WORD, "first-channel", 2, -1},
|
||||
{CW_TYPE_WORD, "number-of-channels", 2, -1},
|
||||
{CW_TYPE_WORD, "max-tx-power-level", 2, -1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
|
||||
static cw_KTVStruct_t cisco_wtp_board_data[]={
|
||||
{CW_TYPE_WORD, "card-id", 2, -1},
|
||||
{CW_TYPE_WORD, "card-revision", 2, -1},
|
||||
{CW_TYPE_DWORD, "wtp-model-lo", 4, -1},
|
||||
{CW_TYPE_DWORD, "wtp-model-hi", 4, -1},
|
||||
{CW_TYPE_STR, "wtp-serial-number", 16, -1},
|
||||
|
||||
{CW_TYPE_BSTR16, "ethernet-mac-address", 6, 40},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_ap_led_flash_config[]={
|
||||
{CW_TYPE_BYTE, "flahs-enable", 1, 0},
|
||||
{CW_TYPE_DWORD, "flsh-sec", 4, 4},
|
||||
{CW_TYPE_BYTE, "save-flag", 4, 8},
|
||||
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
static cw_KTVStruct_t cisco_ap_static_ip_addr[]={
|
||||
{CW_TYPE_IPADDRESS,"address", 4,-1},
|
||||
{CW_TYPE_IPADDRESS,"netmask", 4,-1},
|
||||
{CW_TYPE_IPADDRESS,"gateway", 4,-1},
|
||||
{CW_TYPE_IPADDRESS,"unknown", 4,-1},
|
||||
{CW_TYPE_BOOL,"enabled", 1,-1},
|
||||
{NULL,NULL,0,0}
|
||||
};
|
||||
|
||||
|
||||
static struct cw_ElemHandler handlers[] = {
|
||||
|
||||
{
|
||||
"AC Name -(zero-length allowed)", /* name */
|
||||
CAPWAP_ELEM_AC_NAME, /* Element ID */
|
||||
0,0, /* Vendor / Proto */
|
||||
0,CAPWAP_MAX_AC_NAME_LEN, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
"ac-name", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
}
|
||||
,
|
||||
|
||||
|
||||
|
||||
{
|
||||
"WTP Descriptor (Draft 7)", /* name */
|
||||
CAPWAP_ELEM_WTP_DESCRIPTOR, /* Element ID */
|
||||
@ -117,7 +206,7 @@ static struct cw_ElemHandler handlers[] = {
|
||||
}
|
||||
,
|
||||
{
|
||||
"80211 WTP Radio Information - Cisco", /* name */
|
||||
"80211 WTP Radio Information - Cisco", /* name */
|
||||
CAPWAP80211_ELEM_WTP_RADIO_INFORMATION, /* Element ID */
|
||||
0, 0, /* Vendor / Proto */
|
||||
0, 0, /* min/max length */
|
||||
@ -202,11 +291,188 @@ static struct cw_ElemHandler handlers[] = {
|
||||
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
|
||||
0,0, /* min/max length */
|
||||
cisco_lw_path_mtu, /* type */
|
||||
"cisco/lw_path_mtu", /* Key */
|
||||
"cisco/lw-path-mtu", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cisco_out_lw_path_mtu /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"AP Uptime", /* name */
|
||||
CISCO_ELEM_AP_UPTIME, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
8,8, /* min/max length */
|
||||
cisco_ap_uptime, /* type */
|
||||
"cisco/ap-uptime", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"AP Username and Password", /* name */
|
||||
CISCO_LWELEM_AP_USERNAME_PASSWORD, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
|
||||
0,0, /* min/max length */
|
||||
cisco_ap_username_and_password, /* type */
|
||||
"cisco/ap-username-and-password", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
}
|
||||
,
|
||||
{
|
||||
"Loghost Config", /* name */
|
||||
CISCO_LWELEM_AP_LOGHOST_CONFIG, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
|
||||
36,36, /* min/max length */
|
||||
cisco_loghost_config, /* type */
|
||||
"cisco/loghost-config", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
}
|
||||
,
|
||||
{
|
||||
"AP LED State COnfig", /* name */
|
||||
CISCO_ELEM_AP_LED_STATE_CONFIG, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
2,2, /* min/max length */
|
||||
cisco_ap_led_state_config, /* type */
|
||||
"cisco/ap-led-state-config", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
}
|
||||
,
|
||||
{
|
||||
"AP Telnet SSH", /* name */
|
||||
CISCO_LWELEM_AP_TELNET_SSH, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
|
||||
2,2, /* min/max length */
|
||||
cisco_ap_telnet_ssh, /* type */
|
||||
"cisco/ap-telnet-ssh", /* Key */
|
||||
cw_in_generic_enum, /* get */
|
||||
NULL /* put */
|
||||
}
|
||||
,
|
||||
{
|
||||
"AP Log Facility", /* name */
|
||||
CISCO_ELEM_AP_LOG_FACILITY, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
1,1, /* min/max length */
|
||||
CW_TYPE_BYTE, /* type */
|
||||
"cisco/ap-log-facility", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
}
|
||||
,
|
||||
{
|
||||
"802.11 Multi Domain Capability", /* name */
|
||||
CISCO_ELEM_MULTI_DOMAIN_CAPABILITY, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
8,8, /* min/max length */
|
||||
cisco_multi_domain_cabability, /* type */
|
||||
"cisco-multi-domain-capability", /* Key */
|
||||
cw_in_radio_generic_struct, /* get */
|
||||
NULL /* put */
|
||||
}
|
||||
,
|
||||
|
||||
{
|
||||
"Cisco WTP Board Data", /* name */
|
||||
CISCO_ELEM_WTP_BOARD_DATA, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
8,48, /* min/max length */
|
||||
cisco_wtp_board_data, /* type */
|
||||
"cisco/wtp-board-data", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct, /* put */
|
||||
},
|
||||
{
|
||||
"AP LED Flash Config", /* name */
|
||||
CISCO_ELEM_AP_LED_FLASH_CONFIG, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
0,48, /* min/max length */
|
||||
cisco_ap_led_flash_config, /* type */
|
||||
"cisco/ap-led-flash-config", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Pre Std Switch Config", /* name */
|
||||
CISCO_ELEM_AP_PRE_STD_SWITCH_CONFIG, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
1,1, /* min/max length */
|
||||
CW_TYPE_BYTE, /* type */
|
||||
"cisco/ap-pre-std-switch-config", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Power Injector Config", /* name */
|
||||
CISCO_ELEM_AP_POWER_INJECTOR_CONFIG, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
8,8, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
"cisco/ap-power-injector-config", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Mode And Type", /* name */
|
||||
CISCO_ELEM_AP_MODE_AND_TYPE, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
2,2, /* min/max length */
|
||||
CW_TYPE_WORD, /* type */
|
||||
"cisco/ap-mode-and-type", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Sub Mode", /* name */
|
||||
CISCO_LWELEM_AP_SUBMODE, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
|
||||
1,1, /* min/max length */
|
||||
CW_TYPE_BYTE, /* type */
|
||||
"cisco/ap-sub-mode", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
{
|
||||
"AP Static IP Address", /* name */
|
||||
CISCO_ELEM_AP_STATIC_IP_ADDR, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
17,17, /* min/max length */
|
||||
cisco_ap_static_ip_addr, /* type */
|
||||
"cisco/ap-satic-ip-addr", /* Key */
|
||||
cw_in_generic_struct, /* get */
|
||||
cw_out_generic_struct /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Min IOS Version", /* name */
|
||||
CISCO_ELEM_AP_MIN_IOS_VERSION, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
0,32, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
"cisco/ap-min-ios-version", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
|
||||
{
|
||||
"AP Backup Software Version", /* name */
|
||||
CISCO_ELEM_AP_BACKUP_SOFTWARE_VERSION, /* Element ID */
|
||||
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
|
||||
0,32, /* min/max length */
|
||||
CW_TYPE_BSTR16, /* type */
|
||||
"cisco/ap-backup-software-version", /* Key */
|
||||
cw_in_generic, /* get */
|
||||
cw_out_generic /* put */
|
||||
},
|
||||
|
||||
{0,0,0,0,0,0,0,0}
|
||||
|
||||
};
|
||||
@ -256,33 +522,64 @@ static int join_response_states[] = {CAPWAP_STATE_JOIN,0};
|
||||
static struct cw_ElemDef join_response_elements[] ={
|
||||
{0,CW_VENDOR_ID_CISCO, CISCO_ELEM_SPAM_VENDOR_SPECIFIC,0, CW_IGNORE},
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_PATH_MTU, 0, 0},
|
||||
|
||||
{0,0, CAPWAP_ELEM_ECN_SUPPORT, 0, CW_DELETE},
|
||||
|
||||
{0,0,0,00}
|
||||
|
||||
};
|
||||
|
||||
|
||||
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_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},
|
||||
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_USERNAME_PASSWORD, 1, 0},
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_LOGHOST_CONFIG, 1, 0},
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_TELNET_SSH, 1, 0},
|
||||
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_SUBMODE, 1, 0},
|
||||
|
||||
{0,0,0,00}
|
||||
|
||||
};
|
||||
|
||||
|
||||
static struct cw_MsgDef messages[] = {
|
||||
{
|
||||
NULL, /* name */
|
||||
CAPWAP_MSG_DISCOVERY_REQUEST, /* type */
|
||||
CW_ROLE_AC,
|
||||
CW_ROLE_AC, /* role */
|
||||
discovery_request_states,
|
||||
discovery_request_elements
|
||||
discovery_request_elements,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
NULL, /* name */
|
||||
CAPWAP_MSG_DISCOVERY_RESPONSE, /* type */
|
||||
CW_ROLE_WTP,
|
||||
discovery_response_states,
|
||||
discovery_response_elements
|
||||
discovery_response_elements,
|
||||
|
||||
},
|
||||
{
|
||||
NULL, /* name */
|
||||
CAPWAP_MSG_JOIN_REQUEST, /* type */
|
||||
CW_ROLE_AC,
|
||||
join_request_states,
|
||||
join_request_elements
|
||||
join_request_elements,
|
||||
postprocess_discovery /* postprocess */
|
||||
},
|
||||
{
|
||||
NULL, /* name */
|
||||
@ -292,15 +589,22 @@ static struct cw_MsgDef messages[] = {
|
||||
join_response_elements
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
NULL, /* name */
|
||||
CAPWAP_MSG_CONFIGURATION_STATUS_REQUEST, /* type */
|
||||
CW_ROLE_AC,
|
||||
configuration_status_request_states,
|
||||
configuration_status_request_elements,
|
||||
NULL /* postprocess */
|
||||
},
|
||||
|
||||
{0,0,0,0}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
struct cw_MsgSet * cisco_register_msg_set(struct cw_MsgSet * set, int mode){
|
||||
if (mode != CW_MOD_MODE_CAPWAP)
|
||||
return NULL;
|
||||
@ -308,3 +612,30 @@ struct cw_MsgSet * cisco_register_msg_set(struct cw_MsgSet * set, int mode){
|
||||
return set;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void set_ac_version(struct conn * conn)
|
||||
{
|
||||
cw_KTV_t * wtpver;
|
||||
char verstr[512];
|
||||
wtpver = cw_ktv_get(conn->remote_cfg,"wtp-descriptor/software/version", CW_TYPE_BSTR16);
|
||||
if (wtpver){
|
||||
|
||||
cw_format_version(verstr,wtpver->type->data(wtpver),wtpver->type->len(wtpver));
|
||||
|
||||
cw_dbg(DBG_INFO, "Cisco - Setting AC software version to: %s", verstr);
|
||||
|
||||
mavl_del(conn->local_cfg,&wtpver);
|
||||
cw_ktv_add(conn->local_cfg,"ac-descriptor/software/version",CW_TYPE_BSTR16,
|
||||
wtpver->type->data(wtpver),wtpver->type->len(wtpver));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static int postprocess_discovery(struct conn *conn){
|
||||
if (conn->role != CW_ROLE_AC )
|
||||
return 0;
|
||||
set_ac_version(conn);
|
||||
cw_detect_nat(conn);
|
||||
return 1;
|
||||
}
|
@ -144,7 +144,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CW_STATE_RUN,
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST,
|
||||
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.elem_id = CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.item_id = CW_RADIOITEM_ADMIN_STATE,
|
||||
.start = cisco_in_radio_administrative_state,
|
||||
.min_len=2,
|
||||
@ -204,7 +204,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CW_STATE_CONFIGURE,
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_RESPONSE,
|
||||
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.elem_id = CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.item_id = CW_RADIOITEM_ADMIN_STATE,
|
||||
// .start = cw_in_radio_generic,
|
||||
.start = cisco_in_radio_administrative_state,
|
||||
|
@ -28,16 +28,16 @@
|
||||
* Vendor specific message elements defined in LWAPP by Cisco
|
||||
*/
|
||||
|
||||
#define LW_CISCO_AP_USERNAME_PASSWORD 18
|
||||
#define CISCO_LWELEM_AP_USERNAME_PASSWORD 18
|
||||
#define LW_CISCO_MANAGER_IP_ADDR 19
|
||||
#define LW_CISCO_RADIO_MODULE_INFO 21
|
||||
#define LW_CISCO_AC_IP_ADDR_WITH_INDEX 32
|
||||
#define LW_CISCO_AP_ETHERNET_PORT_SUBTYPE 34
|
||||
#define LW_CISCO_AP_LOGHOST_CONFIG 36
|
||||
#define CISCO_LWELEM_AP_LOGHOST_CONFIG 36
|
||||
#define LW_CISCO_MCAST_MGID_INFO 39
|
||||
|
||||
#define LW_CISCO_TELNET_SSH 44
|
||||
#define LW_CISCO_AP_SUBMODE 67
|
||||
#define CISCO_LWELEM_AP_TELNET_SSH 44
|
||||
#define CISCO_LWELEM_AP_SUBMODE 67
|
||||
#define LW_CISCO_AP_HEARTBEAT_TIMEOUT 68
|
||||
|
||||
#define LW_CISCO_PRIMED_DISCOVERY_TIMEOUT 50
|
||||
|
@ -122,7 +122,7 @@ static cw_action_in_t actions_in[] = {
|
||||
{
|
||||
.capwap_state = CW_STATE_RUN,
|
||||
.msg_id = CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST,
|
||||
.elem_id = CW_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.elem_id = CAPWAP_ELEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.item_id = CW_ITEM_RADIO_ADMINISTRATIVE_STATE,
|
||||
.start = cisco_in_radio_administrative_state_wtp,
|
||||
.mand = 1
|
||||
|
Reference in New Issue
Block a user