|
|
|
@ -237,6 +237,24 @@ int cisco_out_ap_regulatory_domain(struct cw_ElemHandler * eh, |
|
|
|
|
|
|
|
|
|
idx = 0; |
|
|
|
|
ob = dst; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type = NULL; |
|
|
|
|
result = cw_ktv_get(params->conn->local_cfg,"ac-descriptor/software/version",CW_TYPE_BSTR16); |
|
|
|
|
if (result!=NULL){ |
|
|
|
|
if(result->type->len(result)==4){ |
|
|
|
|
uint32_t rv; |
|
|
|
|
rv = cw_get_dword(result->type->data(result)); |
|
|
|
|
if (rv >= 0x07056600){ |
|
|
|
|
type = cisco_ap_regulatory_domain5; |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
type = cisco_ap_regulatory_domain4; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
do { |
|
|
|
|
sprintf(key,"%s.%d",eh->key,idx); |
|
|
|
@ -247,13 +265,15 @@ int cisco_out_ap_regulatory_domain(struct cw_ElemHandler * eh, |
|
|
|
|
if (strncmp(result->key,key,strlen(key))!=0) |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
sprintf(testkey,"%s/%s",key,"band-id"); |
|
|
|
|
result = cw_ktv_get(params->conn->local_cfg,key,CW_TYPE_BYTE); |
|
|
|
|
if (result==NULL){ |
|
|
|
|
type = cisco_ap_regulatory_domain4; |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
type = cisco_ap_regulatory_domain5; |
|
|
|
|
if(type == NULL){ |
|
|
|
|
sprintf(testkey,"%s/%s",key,"band-id"); |
|
|
|
|
result = cw_ktv_get(params->conn->local_cfg,key,CW_TYPE_BYTE); |
|
|
|
|
if (result==NULL){ |
|
|
|
|
type = cisco_ap_regulatory_domain4; |
|
|
|
|
} |
|
|
|
|
else{ |
|
|
|
|
type = cisco_ap_regulatory_domain5; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
start = params->conn->header_len(eh); |
|
|
|
@ -266,12 +286,6 @@ int cisco_out_ap_regulatory_domain(struct cw_ElemHandler * eh, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(key,"%s.%d",eh->key,idx+1); |
|
|
|
|
/* if(len==4)
|
|
|
|
|
type = cisco_ap_regulatory_domain4; |
|
|
|
|
if(len==5) |
|
|
|
|
type = cisco_ap_regulatory_domain5; |
|
|
|
|
cw_ktv_read_struct(params->conn->remote_cfg,type,key,data,len); |
|
|
|
|
*/ |
|
|
|
|
return ob-dst; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -387,7 +401,40 @@ static cw_KTVStruct_t cisco_ap_mode_and_type[]={ |
|
|
|
|
{NULL,NULL,0,0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static cw_KTVStruct_t cisco_add_wlan[]={ |
|
|
|
|
{CW_TYPE_BYTE,"radio-id",1,-1}, |
|
|
|
|
{CW_TYPE_WORD,"wlan-capability",2,-1}, |
|
|
|
|
{CW_TYPE_BYTE,"wlan-id",1,-1}, |
|
|
|
|
{CW_TYPE_DWORD,"encryption-policy",4,-1}, |
|
|
|
|
|
|
|
|
|
{CW_TYPE_BSTR16,"wep-key",13,9}, |
|
|
|
|
{CW_TYPE_BYTE,"encryption",1,42}, |
|
|
|
|
|
|
|
|
|
{CW_TYPE_BOOL,"broadcast-ssid",1,426}, |
|
|
|
|
{CW_TYPE_WORD,"session-timout",2,475}, |
|
|
|
|
{CW_TYPE_BYTE, "dtim-period",1,541}, |
|
|
|
|
{CW_TYPE_STR, "ssid-a",30,545}, |
|
|
|
|
{CW_TYPE_BYTE, "allow-aaa-override",1,578}, |
|
|
|
|
{CW_TYPE_BYTE, "max-stations",1,580}, |
|
|
|
|
|
|
|
|
|
{NULL,NULL,0,0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static int cisoc_add_wlan_mkkey(const char *pkey, uint8_t*data, int len, char *dst) |
|
|
|
|
{ |
|
|
|
|
int wlan_id,radio_id; |
|
|
|
|
|
|
|
|
|
radio_id = cw_get_byte(data); |
|
|
|
|
wlan_id = cw_get_byte(data+3); |
|
|
|
|
sprintf(dst,"radio.%d/wlan.%d",radio_id,wlan_id); |
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static cw_KTVStruct_t cisco_ssc_hash[]={ |
|
|
|
|
{CW_TYPE_BOOL,"validate",1,-1}, |
|
|
|
|
{CW_TYPE_BSTR16,"hash",-1,-1}, |
|
|
|
|
{NULL,NULL,0,0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct cw_ElemHandler handlers[] = { |
|
|
|
@ -974,6 +1021,42 @@ static struct cw_ElemHandler handlers[] = { |
|
|
|
|
} |
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
"Add Cisco WLAN", /* name */ |
|
|
|
|
CISCO_ELEM_ADD_WLAN, /* Element ID */ |
|
|
|
|
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ |
|
|
|
|
7,1117, /* min/max length */ |
|
|
|
|
cisco_add_wlan, /* type */ |
|
|
|
|
"radio/wlan", /* Key */ |
|
|
|
|
cw_in_generic_struct, /* get */ |
|
|
|
|
cw_out_generic_struct, /* put */ |
|
|
|
|
cisoc_add_wlan_mkkey |
|
|
|
|
} |
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
"SSC Hash Validation", /* name */ |
|
|
|
|
CISCO_LWELEM_SSC_HASH_VALIDATION, /* Element ID */ |
|
|
|
|
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */ |
|
|
|
|
1,1, /* min/max length */ |
|
|
|
|
CW_TYPE_BOOL, /* type */ |
|
|
|
|
"cisco/ssh-hash-validation", /* Key */ |
|
|
|
|
cw_in_generic, /* get */ |
|
|
|
|
cw_out_generic /* put */ |
|
|
|
|
} |
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
"SSC Hash", /* name */ |
|
|
|
|
CISCO_LWELEM_SSC_HASH, /* Element ID */ |
|
|
|
|
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */ |
|
|
|
|
1,331, /* min/max length */ |
|
|
|
|
cisco_ssc_hash, /* type */ |
|
|
|
|
"cisco/hash", /* Key */ |
|
|
|
|
cw_in_generic_struct, /* get */ |
|
|
|
|
cw_out_generic_struct /* put */ |
|
|
|
|
} |
|
|
|
|
, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{0,0,0,0,0,0,0,0} |
|
|
|
@ -1125,6 +1208,8 @@ static struct cw_ElemDef configuration_update_request_elements[] ={ |
|
|
|
|
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AC_NAME_WITH_INDEX, 0, 0}, |
|
|
|
|
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_VENUE_SETTINGS, 0, 0}, |
|
|
|
|
|
|
|
|
|
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_ADD_WLAN, 0, CW_IGNORE}, |
|
|
|
|
|
|
|
|
|
{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}, |
|
|
|
@ -1133,6 +1218,9 @@ static struct cw_ElemDef configuration_update_request_elements[] ={ |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AC_IP_ADDR_WITH_INDEX, 0, 0}, |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_FAILOVER_PRIORITY, 0, 0}, |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_VLAN, 0, 0}, |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_SSC_HASH_VALIDATION, 0, 0}, |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_SSC_HASH, 0, 0}, |
|
|
|
|
|
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_TCP_ADJUST_MSS, 0, 0}, |
|
|
|
|
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_ROUGE_DETECTION, 0, 0}, |
|
|
|
|
|
|
|
|
@ -1155,6 +1243,13 @@ static struct cw_ElemDef wtp_event_response_elements[] ={ |
|
|
|
|
{0,0,0,0,0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static int wtp_echo_response_states[] = {CAPWAP_STATE_RUN,0}; |
|
|
|
|
static struct cw_ElemDef wtp_echo_response_elements[] ={ |
|
|
|
|
{0,CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_TIMESYNC, 1, 0}, |
|
|
|
|
{0,0,0,0,0} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct cw_MsgDef messages[] = { |
|
|
|
|
{ |
|
|
|
|
NULL, /* name */ |
|
|
|
@ -1234,6 +1329,14 @@ static struct cw_MsgDef messages[] = { |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
NULL, /* name */ |
|
|
|
|
CAPWAP_MSG_ECHO_RESPONSE, /* msg type */ |
|
|
|
|
CW_ROLE_WTP, /* role */ |
|
|
|
|
wtp_echo_response_states, /* allowed states */ |
|
|
|
|
wtp_echo_response_elements /* msg elements */ |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
{0,0,0,0} |
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|