Added a lot of cisco stuff

FossilOrigin-Name: 1a3b0824d3b9bc97cf15dd7f3922ea96fccb707695f0bacdd9570e212428e4a5
This commit is contained in:
7u83@mail.ru 2018-04-18 07:40:37 +00:00
parent 128b388032
commit d786fa1928
12 changed files with 213 additions and 29 deletions

View File

@ -4,9 +4,9 @@
<Project Name="wtp" Path="wtp.project" Active="No"/>
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>
<Project Name="mod_cisco" Path="mod_cisco.project" Active="Yes"/>
<Project Name="libcw" Path="libcw.project" Active="No"/>
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="Yes"/>
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
<BuildMatrix>
<WorkspaceConfiguration Name="Debug" Selected="yes">

View File

@ -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

View File

@ -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"},

View File

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

View File

@ -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}
@ -400,7 +453,9 @@ 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_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,0,0,0}

View File

@ -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,

View File

@ -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; i<len-1; i++){
int rate = (data+1)[i];
sprintf(d,"%0.1f",dot11_rate2float(val & 0x7f));
}
*/
}

View File

@ -42,7 +42,7 @@
#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 CISCO_ELEM_TX_POWER LW_ELEM_80211_TX_POWER /* 12 */
#define CW_CISCO_TX_POWER_LEVELS LW_ELEM_80211_TX_POWER_LEVELS /* 13 */
#define CW_CISCO_DIRECT_SEQUENCE_CONTROL LW_ELEM_DIRECT_SEQUENCE_CONTROL /* 14 */
#define CW_CISCO_SUPPORTED_RATES LW_ELEM_80211_RATE_SET /* 16 */
@ -60,7 +60,7 @@
#define CISCO_ELEM_WTP_BOARD_DATA LW_ELEM_WTP_BOARD_DATA /* 50 */
#define CW_CISCO_BCAST_SSID_MODE LW_BCAST_SSID_MODE
#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 CISCO_ELEM_AP_QOS LW_ELEM_QOS /* 57 */
#define CW_CISCO_AC_IPV4_LIST LW_ELEM_AC_IPV4_LIST /* 59 */
@ -68,7 +68,7 @@
#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
#define CISCO_ELEM_AIRSPACE_CAPABILITY 88
#define CW_CISCO_AC_NAME_WITH_INDEX 91
#define CW_CISCO_SPAM_DOMAIN_SECRET 96

View File

@ -139,6 +139,19 @@ static cw_KTVStruct_t cisco_ap_regulatory_domain5[]={
{NULL,NULL,0,0}
};
static cw_KTVStruct_t cisco_mac_operation[]={
{CW_TYPE_BYTE,"reserved",1,-1},
{CW_TYPE_WORD,"rts-threshold",2,-1},
{CW_TYPE_BYTE,"short-retry",1,-1},
{CW_TYPE_BYTE,"long-retry",1,-1},
{CW_TYPE_WORD,"fragmentation-threshold",2,-1},
{CW_TYPE_DWORD,"tx-msdu-lifetime",4,-1},
{CW_TYPE_DWORD,"rx-msdu-lifetime",4,-1},
{NULL,NULL,0,0}
};
int cisco_in_ap_regulatory_domain(struct cw_ElemHandler *eh,
struct cw_ElemHandlerParams *params,
@ -236,6 +249,57 @@ static cw_KTVStruct_t cisco_wtp_radio_config[]={
{NULL,NULL,0,0}
};
static cw_KTVStruct_t cisco_tx_power[]={
{CW_TYPE_BYTE,"reserved",1,-1},
{CW_TYPE_WORD,"current-tx-power",2,-1},
{NULL,NULL,0,0}
};
static cw_KTVStruct_t cisco_ap_qos[]={
{CW_TYPE_BYTE,"tag-packets",1,-1},
{CW_TYPE_BYTE,"uranium-queue-depth",1,-1},
{CW_TYPE_WORD,"uranium-cwmin",2,-1},
{CW_TYPE_WORD,"uranium-cwmax",2,-1},
{CW_TYPE_BYTE,"uranium-aifs",1,-1},
{CW_TYPE_WORD,"uranium-cbr",2,-1},
{CW_TYPE_BYTE,"uranium-dot1p-tag",1,-1},
{CW_TYPE_BYTE,"uranium-dscp-tag",1,-1},
{CW_TYPE_BYTE,"platinum-queue-depth",1,-1},
{CW_TYPE_WORD,"platinum-cwmin",2,-1},
{CW_TYPE_WORD,"platinum-cwmax",2,-1},
{CW_TYPE_BYTE,"platinum-aifs",1,-1},
{CW_TYPE_WORD,"platinum-cbr",2,-1},
{CW_TYPE_BYTE,"platinum-dot1p-tag",1,-1},
{CW_TYPE_BYTE,"platinum-dscp-tag",1,-1},
{CW_TYPE_BYTE,"gold-queue-depth",1,-1},
{CW_TYPE_WORD,"gold-cwmin",2,-1},
{CW_TYPE_WORD,"gold-cwmax",2,-1},
{CW_TYPE_BYTE,"gold-aifs",1,-1},
{CW_TYPE_WORD,"gold-cbr",2,-1},
{CW_TYPE_BYTE,"gold-dot1p-tag",1,-1},
{CW_TYPE_BYTE,"gold-dscp-tag",1,-1},
{CW_TYPE_BYTE,"silver-queue-depth",1,-1},
{CW_TYPE_WORD,"silver-cwmin",2,-1},
{CW_TYPE_WORD,"silver-cwmax",2,-1},
{CW_TYPE_BYTE,"silver-aifs",1,-1},
{CW_TYPE_WORD,"silver-cbr",2,-1},
{CW_TYPE_BYTE,"silver-dot1p-tag",1,-1},
{CW_TYPE_BYTE,"silver-dscp-tag",1,-1},
{CW_TYPE_BYTE,"bronze-queue-depth",1,-1},
{CW_TYPE_WORD,"bronze-cwmin",2,-1},
{CW_TYPE_WORD,"bronze-cwmax",2,-1},
{CW_TYPE_BYTE,"bronze-aifs",1,-1},
{CW_TYPE_WORD,"bronze-cbr",2,-1},
{CW_TYPE_BYTE,"bronze-dot1p-tag",1,-1},
{CW_TYPE_BYTE,"bronze-dscp-tag",1,-1},
{NULL,NULL,0,0}
};
static struct cw_ElemHandler handlers[] = {
{
@ -484,7 +548,7 @@ static struct cw_ElemHandler handlers[] = {
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
8,8, /* min/max length */
cisco_multi_domain_cabability, /* type */
"cisco-multi-domain-capability", /* Key */
"cisco/multi-domain-capability", /* Key */
cw_in_radio_generic_struct, /* get */
NULL /* put */
}
@ -645,6 +709,60 @@ static struct cw_ElemHandler handlers[] = {
}
,
{
"MWAR Hash Value", /* name */
CISCO_LWELEM_MWAR_HASH_VALUE, /* Element ID */
CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */
1,64, /* min/max length */
CW_TYPE_BSTR16, /* type */
"cisco/mwar-hash-value", /* Key */
cw_in_generic, /* get */
cw_out_generic /* put */
},
{
"Mac Operation", /* name */
CISCO_ELEM_MAC_OPERATION, /* Element ID */
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
16,16, /* min/max length */
cisco_mac_operation, /* type */
"cisco/mac-operation", /* Key */
cw_in_radio_generic_struct, /* get */
cw_out_radio_generic_struct /* put */
},
{
"Tx Power", /* name */
CISCO_ELEM_TX_POWER, /* Element ID */
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
4,4, /* min/max length */
cisco_tx_power, /* type */
"cisco/tx-power", /* Key */
cw_in_radio_generic_struct, /* get */
cw_out_radio_generic_struct /* put */
},
{
"AP Quality of Service", /* name */
CISCO_ELEM_AP_QOS, /* Element ID */
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
52,52, /* min/max length */
cisco_ap_qos, /* type */
"cisco/ap-qos", /* Key */
cw_in_radio_generic_struct, /* get */
cw_out_radio_generic_struct /* put */
},
{
"Air Space Capability", /* name */
CISCO_ELEM_AIRSPACE_CAPABILITY, /* Element ID */
CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */
2,2, /* min/max length */
CW_TYPE_BYTE, /* type */
"cisco/air-space-capability", /* Key */
cw_in_radio_generic, /* get */
cw_out_radio_generic /* put */
},
{0,0,0,0,0,0,0,0}
@ -738,12 +856,21 @@ 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_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_MULTI_DOMAIN_CAPABILITY, 0, 0},
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_WTP_RADIO_CONFIGURATION, 1, 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_MAC_OPERATION, 0, 0},
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_TX_POWER, 0, 0},
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_QOS, 0, 0},
{0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AIRSPACE_CAPABILITY, 0, 0},
{CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_MWAR_HASH_VALUE, 1, 0},
{0,0,0,0}
};

View File

@ -247,7 +247,7 @@ static cw_action_in_t actions_in[] = {
.capwap_state = CW_STATE_CONFIGURE,
.msg_id = CAPWAP_MSG_CONFIGURATION_STATUS_RESPONSE,
.vendor_id = LW_VENDOR_ID_CISCO,
.elem_id = LW_CISCO_MWAR_HASH_VALUE,
.elem_id = CISCO_LWELEM_MWAR_HASH_VALUE,
.item_id = CIPWAP_ITEM_AC_HASH_VALUE,
.start = cw_in_generic, //cisco_in_telnet_ssh
}
@ -405,7 +405,7 @@ static cw_action_out_t actions_out[]={
/* Radio Operational State - OUT */
{
.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 = cisco_out_radio_operational_state,
.mand = 1
@ -426,7 +426,7 @@ static cw_action_in_t actions80211_in[] = {
{
.capwap_state = CW_STATE_CONFIGURE,
.msg_id= CAPWAP_MSG_CONFIGURATION_STATUS_RESPONSE,
.elem_id = CW_ELEM_RADIO_OPERATIONAL_STATE,
.elem_id = CAPWAP_ELEM_RADIO_OPERATIONAL_STATE,
.item_id = CW_RADIOITEM_OPER_STATE,
// .start = cw_in_radio_generic, //operational_state,
.start = cisco_in_radio_operational_state, //operational_state,
@ -440,7 +440,7 @@ static cw_action_in_t actions80211_in[] = {
{
.capwap_state = CW_STATE_RUN,
.msg_id= CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST,
.elem_id = CW_ELEM_RADIO_OPERATIONAL_STATE,
.elem_id = CAPWAP_ELEM_RADIO_OPERATIONAL_STATE,
.item_id = CW_RADIOITEM_OPER_STATE,
// .start = cw_in_radio_generic, //operational_state,
.start = cisco_in_radio_operational_state, //operational_state,

View File

@ -51,7 +51,7 @@
#define LW_CISCO_SSC_HASH_VALIDATION 133
#define LW_CISCO_MWAR_HASH_VALUE_1 132
#define LW_CISCO_MWAR_HASH_VALUE 134
#define CISCO_LWELEM_MWAR_HASH_VALUE 134
#define LW_CISCO_DOT11R_WLC_MAC_AND_IP 135
#define LW_CISCO_HARDWARE_INFO 139

View File

@ -35,5 +35,7 @@ int configure(struct conn * conn)
return 0;
}
cw_dbg_ktv_dump(conn->remote_cfg,DBG_INFO,"Config ***","CFG: ", "End config ***");
return 1;
}