diff --git a/libcw.project b/libcw.project index 175b45f5..724d2977 100644 --- a/libcw.project +++ b/libcw.project @@ -289,6 +289,7 @@ + diff --git a/src/ac/config.ktv b/src/ac/config.ktv index e2caf860..b9a3eb97 100644 --- a/src/ac/config.ktv +++ b/src/ac/config.ktv @@ -38,7 +38,7 @@ result-code :Dword: 0 -ac-name:Bstr16:"TubesAC" +ac-name:Bstr16:"CiscoAC73" #capwap-control-ip-address/address.0:IPAddress:1192.168.0.14 capwap-control-ip-address/address.0:IPAddress:192.168.0.14 diff --git a/src/cw/Makefile b/src/cw/Makefile index 6d73db87..05970201 100644 --- a/src/cw/Makefile +++ b/src/cw/Makefile @@ -131,6 +131,7 @@ KTVSRC=\ cw_ktv_write_struct.c\ cw_ktv_std_types.c\ cw_ktv_base_exists.c\ + cw_ktv_save.c\ LWSRC=\ diff --git a/src/cw/cw_ktv_save.c b/src/cw/cw_ktv_save.c index e69de29b..b6e4f869 100644 --- a/src/cw/cw_ktv_save.c +++ b/src/cw/cw_ktv_save.c @@ -0,0 +1,58 @@ + +#include "ktv.h" + + +static int write_str(FILE *outfile,const char *str) +{ + if ( (strchr(str,'\\')!=NULL) || (strchr(str,'"')!=NULL) || (strchr(str,'\n')!=NULL)){ + fprintf(outfile,"\""); + + while (*str != 0){ + switch(*str){ + case '\n': + fprintf(outfile,"\\n"); + break; + case '\\': + fprintf(outfile,"\\\\"); + break; + case '"': + fprintf(outfile,"\\\""); + break; + default: + fprintf(outfile,"%c",*str); + break; + } + str++; + } + + fprintf(outfile,"\""); + return 1; + } + + fprintf(outfile,"%s",str); + return 1; +} + +int cw_ktv_save(mavl_t ktvstore, const char * filename){ + mavliter_t it; + FILE * outfile; + + outfile = fopen(filename,"w"); + if (outfile == NULL) + return 0; + + mavliter_init(&it,ktvstore); + mavliter_foreach(&it){ + cw_KTV_t * val; + char buf[4000]; + val = mavliter_get(&it); + val->type->to_str(val,buf,4000); + write_str(outfile,val->key); + fprintf(outfile," :%s: ",val->type->name); + write_str(outfile,buf); + fprintf(outfile,"\n"); + + } + fclose(outfile); + return 1; +} \ No newline at end of file diff --git a/src/cw/ktv.h b/src/cw/ktv.h index 7d0045d6..003cf1a7 100644 --- a/src/cw/ktv.h +++ b/src/cw/ktv.h @@ -172,7 +172,8 @@ char * cw_ktv_get_str(mavl_t ktv,const char *key, char * def); int cw_ktv_idx_get(mavl_t ktv, const char *key); cw_KTV_t * cw_ktv_base_exists(mavl_t ktvstore, const char *basekey); - +int cw_ktv_save(mavl_t ktvstore, const char * filename); + extern const cw_Type_t * cw_ktv_std_types[]; #define CW_KTV_STD_TYPES cw_ktv_std_types diff --git a/src/mod/capwap/capwap_actions_ac.c b/src/mod/capwap/capwap_actions_ac.c index 382a8d30..a74e70cf 100644 --- a/src/mod/capwap/capwap_actions_ac.c +++ b/src/mod/capwap/capwap_actions_ac.c @@ -473,6 +473,12 @@ static struct cw_ElemDef configuration_update_request_elements[] ={ {0,0,0,0,0} }; +static int configuration_update_response_states[] = {CAPWAP_STATE_RUN,0}; +static struct cw_ElemDef configuration_update_response_elements[] ={ + {0,0,CAPWAP_ELEM_RESULT_CODE, 1, 0}, + + {0,0,0,0,0} +}; static int echo_request_states[] = {CAPWAP_STATE_RUN,0}; @@ -546,6 +552,13 @@ static struct cw_MsgDef messages[] = { configuration_update_request_elements /* msg elements */ }, + { + "Configuration Update Reponse", /* name */ + CAPWAP_MSG_CONFIGURATION_UPDATE_RESPONSE, /* msg type */ + CW_ROLE_WTP, /* role */ + configuration_update_response_states, /* allowed states */ + configuration_update_response_elements /* msg elements */ + }, { diff --git a/src/mod/cisco/capwap_cisco.h b/src/mod/cisco/capwap_cisco.h index 89978ca4..810c1be4 100644 --- a/src/mod/cisco/capwap_cisco.h +++ b/src/mod/cisco/capwap_cisco.h @@ -34,7 +34,7 @@ #define CISCO_ELEM_MWAR_ADDR LWAPP_ELEM_AC_ADDRESS /* 2 */ #define CW_CISCO_RAD 3 #define CW_CISCO_RAD_SLOT 4 -#define CW_CISCO_RAD_NAME LWAPP_ELEM_WTP_NAME /* 5 */ +#define CISCO_ELEM_RAD_NAME LWAPP_ELEM_WTP_NAME /* 5 */ #define CW_CISCO_MWAR LW_ELEM_AC_DESCRIPTOR /* 6 */ #define CW_CISCO_ADD_WLAN LW_ELEM_80211_ADD_WLAN /* 7 */ #define CISCO_ELEM_WTP_RADIO_CONFIGURATION 8 @@ -70,7 +70,7 @@ #define CW_CISCO_SIG_TOGGLE 87 #define CISCO_ELEM_AIRSPACE_CAPABILITY 88 -#define CW_CISCO_AC_NAME_WITH_INDEX 91 +#define CISCO_ELEM_AC_NAME_WITH_INDEX 91 #define CW_CISCO_SPAM_DOMAIN_SECRET 96 #define CISCO_ELEM_SPAM_VENDOR_SPECIFIC 104 diff --git a/src/mod/cisco/cisco_actions_ac.c b/src/mod/cisco/cisco_actions_ac.c index 66e65f29..f4208fca 100644 --- a/src/mod/cisco/cisco_actions_ac.c +++ b/src/mod/cisco/cisco_actions_ac.c @@ -308,6 +308,61 @@ static cw_KTVStruct_t cisco_ap_core_dump[]={ }; +int cisco_in_with_index(struct cw_ElemHandler *eh, + struct cw_ElemHandlerParams *params, + uint8_t * data, int len) +{ + char key[CW_KTV_MAX_KEY_LEN]; + int idx; + + idx = cw_get_byte(data); + sprintf(key,"%s.%d",eh->key,idx); + cw_ktv_add(params->conn->remote_cfg,key,eh->type,data+1,len-1); + return 1; + +} + + +int cisco_out_with_index(struct cw_ElemHandler * eh, + struct cw_ElemHandlerParams * params, uint8_t * dst) + +{ + char key[CW_KTV_MAX_KEY_LEN]; + int idx; + cw_KTV_t * result, search; + int len,start; + uint8_t * ob; + + + idx = 0; + ob = dst; + + do { + sprintf(key,"%s.%d",eh->key,idx); + search.key=key; + result = mavl_get_first(params->conn->local_cfg,&search); + if (result==NULL) + break; + if (strncmp(result->key,key,strlen(key))!=0) + break; + + start = params->conn->header_len(eh); + len = cw_put_byte(ob+start,idx); + + len += result->type->put(result,ob+start+len); + + ob += params->conn->write_header(eh,ob,len); + + idx++; + + }while(1); + + return ob-dst; +} + + + + static struct cw_ElemHandler handlers[] = { @@ -349,7 +404,7 @@ static struct cw_ElemHandler handlers[] = { , { "RAD Name -> CAPWAP WTP Name", /* name */ - CW_CISCO_RAD_NAME, /* Element ID */ + CISCO_ELEM_RAD_NAME, /* Element ID */ CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ 1,512, /* min/max length */ CW_TYPE_BSTR16, /* type */ @@ -794,6 +849,53 @@ static struct cw_ElemHandler handlers[] = { cw_in_generic_struct, /* get */ cw_out_generic_struct /* put */ }, + + { + "Statitsics Timer", /* name */ + CISCO_ELEM_STATISTICS_TIMER, /* Element ID */ + CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ + 2,2, /* min/max length */ + CW_TYPE_WORD, /* type */ + "statistics-timer", /* Key */ + cw_in_generic, /* get */ + cw_out_generic /* put */ + } + , + + { + "AC Name with Index", /* name */ + CISCO_ELEM_AC_NAME_WITH_INDEX, /* Element ID */ + CW_VENDOR_ID_CISCO,0, /* Vendor / Proto */ + 1,513, /* min/max length */ + CW_TYPE_BSTR16, /* type */ + "cisco/ac-name-with-index", /* Key */ + cisco_in_with_index, /* get */ + cisco_out_with_index /* put */ + } + , + + { + "AC IP Address with Index", /* name */ + CISCO_LWELEM_AC_IP_ADDR_WITH_INDEX, /* Element ID */ + CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */ + 5,5, /* min/max length */ + CW_TYPE_IPADDRESS, /* type */ + "cisco/ac-ip-addr-with-index", /* Key */ + cisco_in_with_index, /* get */ + cisco_out_with_index /* put */ + } + , + { + "AP Failover Priority", /* name */ + CISCO_LWELEM_AP_FAILOVER_PRIORITY, /* Element ID */ + CW_VENDOR_ID_CISCO,CW_PROTO_LWAPP, /* Vendor / Proto */ + 1,1, /* min/max length */ + CW_TYPE_BYTE, /* type */ + "cisco/ap-failover-priority", /* Key */ + cw_in_generic, /* get */ + cw_out_generic /* put */ + } + , {0,0,0,0,0,0,0,0} @@ -804,7 +906,7 @@ static int discovery_request_states[] = {CAPWAP_STATE_DISCOVERY,0}; static struct cw_ElemDef discovery_request_elements[] ={ /* {0,0, CAPWAP_ELEM_WTP_DESCRIPTOR, 1, 0},*/ {0,0, CAPWAP_ELEM_WTP_BOARD_DATA, 0, 0}, - {0,CW_VENDOR_ID_CISCO, CW_CISCO_RAD_NAME, 1, 0}, + {0,CW_VENDOR_ID_CISCO, CISCO_ELEM_RAD_NAME, 1, 0}, {0,CW_VENDOR_ID_CISCO, CW_CISCO_BOARD_DATA_OPTIONS, 0, 0}, {0,0,0,00} @@ -873,12 +975,16 @@ static struct cw_ElemDef configuration_status_request_elements[] ={ {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_MODEL, 1, 0}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_RESET_BUTTON_STATE, 1, 0}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_WTP_RADIO_CONFIGURATION, 1, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AC_NAME_WITH_INDEX, 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}, {CW_PROTO_LWAPP, CW_VENDOR_ID_CISCO, CISCO_LWELEM_AP_ETHERNET_PORT_SUBTYPE, 1, 0}, + {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, 1, 0}, {0,0,0,00} @@ -927,13 +1033,18 @@ static struct cw_ElemDef configuration_update_request_elements[] ={ {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_RAD_NAME, 0, 0}, {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AP_CORE_DUMP, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_STATISTICS_TIMER, 0, 0}, + {0, CW_VENDOR_ID_CISCO, CISCO_ELEM_AC_NAME_WITH_INDEX, 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}, + {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}, {0,0,0,00} diff --git a/src/mod/cisco/cisco_actions_wtp.c b/src/mod/cisco/cisco_actions_wtp.c index dc664e02..080206e8 100644 --- a/src/mod/cisco/cisco_actions_wtp.c +++ b/src/mod/cisco/cisco_actions_wtp.c @@ -114,7 +114,7 @@ static cw_action_in_t actions_in[] = { .capwap_state = CW_STATE_RUN, .vendor_id = CW_VENDOR_ID_CISCO, .msg_id = CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST, - .elem_id = CW_CISCO_RAD_NAME, + .elem_id = CISCO_ELEM_RAD_NAME, .item_id = CW_ITEM_WTP_NAME, .start = cw_in_generic, .min_len = 0, @@ -280,7 +280,7 @@ static cw_action_out_t actions_out[]={ { .msg_id = CAPWAP_MSG_DISCOVERY_REQUEST, .vendor_id = CW_VENDOR_ID_CISCO, - .elem_id = CW_CISCO_RAD_NAME, + .elem_id = CISCO_ELEM_RAD_NAME, .item_id = CW_ITEM_WTP_NAME, .out = cw_out_generic, /* .get = cw_out_get_config,*/ diff --git a/src/mod/cisco/lwapp_cisco.h b/src/mod/cisco/lwapp_cisco.h index 54ccec55..3ce86055 100644 --- a/src/mod/cisco/lwapp_cisco.h +++ b/src/mod/cisco/lwapp_cisco.h @@ -31,7 +31,7 @@ #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 CISCO_LWELEM_AC_IP_ADDR_WITH_INDEX 32 #define CISCO_LWELEM_AP_ETHERNET_PORT_SUBTYPE 34 #define CISCO_LWELEM_AP_LOGHOST_CONFIG 36 #define LW_CISCO_MCAST_MGID_INFO 39 @@ -42,6 +42,7 @@ #define LW_CISCO_PRIMED_DISCOVERY_TIMEOUT 50 #define LW_CISCO_DELETE_WLAN 52 +#define CISCO_LWELEM_AP_FAILOVER_PRIORITY 53 #define CISCO_LWELEM_PATH_MTU 73 #define LW_CISCO_PRIMED_JOIN_TIMEOUT 85 #define LW_CISCO_AP_DTLS_DATA_CFG 74 diff --git a/src/mod/fortinet/fortinet_actions_ac.c b/src/mod/fortinet/fortinet_actions_ac.c index 1f333b93..11110163 100644 --- a/src/mod/fortinet/fortinet_actions_ac.c +++ b/src/mod/fortinet/fortinet_actions_ac.c @@ -61,7 +61,7 @@ static cw_action_in_t actions_in[] = { .capwap_state = CAPWAP_STATE_DISCOVERY, .msg_id = CAPWAP_MSG_DISCOVERY_REQUEST, .vendor_id = CW_VENDOR_ID_CISCO, - .elem_id = CW_CISCO_RAD_NAME, + .elem_id = CISCO_ELEM_RAD_NAME, .start=cw_in_generic2, .item_id = "wtp_name", .min_len=1, diff --git a/src/mod/fortinet/fortinet_actions_wtp.c b/src/mod/fortinet/fortinet_actions_wtp.c index 94db52e3..5741a052 100644 --- a/src/mod/fortinet/fortinet_actions_wtp.c +++ b/src/mod/fortinet/fortinet_actions_wtp.c @@ -109,7 +109,7 @@ static cw_action_in_t actions_in[] = { .capwap_state = CW_STATE_RUN, .vendor_id = CW_VENDOR_ID_CISCO, .msg_id = CAPWAP_MSG_CONFIGURATION_UPDATE_REQUEST, - .elem_id = CW_CISCO_RAD_NAME, + .elem_id = CISCO_ELEM_RAD_NAME, .item_id = CW_ITEM_WTP_NAME, .start = cw_in_generic2, .min_len = 0, @@ -158,7 +158,7 @@ static cw_action_out_t actions_out[]={ { .msg_id = CW_MSG_DISCOVERY_REQUEST, .vendor_id = CW_VENDOR_ID_CISCO, - .elem_id = CW_CISCO_RAD_NAME, + .elem_id = CISCO_ELEM_RAD_NAME, .item_id = CW_ITEM_WTP_NAME, .out = cw_out_generic, .get = cw_out_get_config, diff --git a/src/wtp/cisco.ktv b/src/wtp/cisco.ktv index 04c303b0..4b7dd6bc 100644 --- a/src/wtp/cisco.ktv +++ b/src/wtp/cisco.ktv @@ -1,28 +1,154 @@ -cisco/ssl-certfile:Str:"../../ssl/certs/wtpc.crt" -cisco/ssl-keyfile:Str:"../../ssl/certs/wtpc.key" -cisco/ssl-cipher:Str:ALL - - - -discovery-type :Byte: 0 - +ac-descriptor/dtls-policy :Byte: 0 +ac-descriptor/hardware/vendor :Dword: 4232704 +ac-descriptor/hardware/version :Bstr16: .x01000001 +ac-descriptor/max-wtps :Word: 200 +ac-descriptor/r-mac-field :Byte: 1 +ac-descriptor/reserved1 :Byte: 0 +ac-descriptor/security :Byte: 2 +ac-descriptor/software/vendor :Dword: 4232704 +ac-descriptor/software/version :Bstr16: .x07036500 +ac-descriptor/station-limit :Word: 1000 +ac-descriptor/stations :Word: 0 +ac-name :Bstr16: CiscoAC73 +ac-name-with-priority/TubesAC :Byte: 3 +ac-name-with-priority/ac2 :Byte: 5 +capwap-control-ip-address/address.0 :IPAddress: 192.168.0.173 +capwap-control-ip-address/address.1 :IPAddress: d96c:4c0a:da6c:4c0a:db6c:4c0a:dc6c:4c0a +capwap-control-ip-address/address.2 :IPAddress: 192.168.0.173 +capwap-control-ip-address/wtps.0 :Word: 0 +capwap-control-ip-address/wtps.1 :Word: 10 +capwap-control-ip-address/wtps.2 :Word: 1 capwap-local-ip-address :IPAddress: 192.168.0.14 +capwap-timers/echo-interval :Byte: 30 +capwap-timers/max-discovery-interval :Byte: 10 +capwap-timers/min-discovery-interval :Byte: 0 +cisco/ac-ip-addr-with-index.0 :IPAddress: 0.0.0.0 +cisco/ac-ip-addr-with-index.1 :IPAddress: 9.9.9.9 +cisco/ac-ip-addr-with-index.2 :IPAddress: 8.8.8.8 +cisco/ac-name-with-index.0 :Bstr16: CiscoAC73 +cisco/ac-name-with-index.1 :Bstr16: nudelnudel +cisco/ac-name-with-index.2 :Bstr16: nadelnalde +cisco/ap-failover-priority :Byte: 4 cisco/ap-group-name :Bstr16: default-group +cisco/ap-led-state-config/led-state :Byte: 1 +cisco/ap-led-state-config/save-flag :Byte: 1 +cisco/ap-log-facility :Byte: 0 +cisco/ap-regulatory-domain.0/code0 :Byte: 0 +cisco/ap-regulatory-domain.0/code1 :Byte: 1 +cisco/ap-regulatory-domain.0/set :Bool: true +cisco/ap-regulatory-domain.0/slot :Byte: 0 +cisco/ap-regulatory-domain.1/code0 :Byte: 0 +cisco/ap-regulatory-domain.1/code1 :Byte: 1 +cisco/ap-regulatory-domain.1/set :Bool: true +cisco/ap-regulatory-domain.1/slot :Byte: 1 +cisco/ap-telnet-ssh/ssh :Bool: false +cisco/ap-telnet-ssh/telnet :Bool: false +cisco/ap-timesync/timestamp :Dword: 1524133283 +cisco/ap-timesync/type :Byte: 0 cisco/board-data-options :Dword: 16777217 cisco/lw_path_mtu/len :Word: 1095 cisco/lw_path_mtu/max :Word: 1485 cisco/mwar-addr/address :IPAddress: 192.168.0.180 cisco/mwar-addr/mwar-type :Byte: 1 cisco/mwar-addr/unknown :Word: 0 - -location-data :Bstr16: default location -maximum-message-length :Word: 14000 +cisco/mwar-hash-value :Bstr16: 25f312452fcb0a908007304aa201d175d0516d7a +cisco/mwar-type :Byte: 0 +cisco/ssl-certfile :Str: ../../ssl/certs/wtpc.crt +cisco/ssl-cipher :Str: ALL +cisco/ssl-keyfile :Str: ../../ssl/certs/wtpc.key +discovery-type :Byte: 0 +idle-timeout :Dword: 300 +location-data :Bstr16: "superposition\"tobias" +maximum-message-length :Word: 4096 +radio.0/admin-state :Byte: 1 +radio.0/cisco-multi-domain-capability/first-channel :Word: 1 +radio.0/cisco-multi-domain-capability/max-tx-power-level :Word: 65535 +radio.0/cisco-multi-domain-capability/number-of-channels :Word: 13 +radio.0/cisco-multi-domain-capability/reserved :Byte: 1 +radio.0/cisco/air-space-capability :Byte: 0 +radio.0/cisco/mac-operation/fragmentation-threshold :Word: 2346 +radio.0/cisco/mac-operation/long-retry :Byte: 4 +radio.0/cisco/mac-operation/reserved :Byte: 1 +radio.0/cisco/mac-operation/rts-threshold :Word: 2347 +radio.0/cisco/mac-operation/rx-msdu-lifetime :Dword: 512 +radio.0/cisco/mac-operation/short-retry :Byte: 7 +radio.0/cisco/mac-operation/tx-msdu-lifetime :Dword: 512 +radio.0/cisco/multi-domain-capability/first-channel :Word: 1 +radio.0/cisco/multi-domain-capability/max-tx-power-level :Word: 20 +radio.0/cisco/multi-domain-capability/number-of-channels :Word: 13 +radio.0/cisco/multi-domain-capability/reserved :Byte: 1 +radio.0/cisco/tx-power/current-tx-power :Word: 0 +radio.0/cisco/tx-power/reserved :Byte: 1 +radio.0/cisco/wtp-radio-config/beacon-period :Word: 100 +radio.0/cisco/wtp-radio-config/bss-id :Bstr16: .x04fe7f499b90 +radio.0/cisco/wtp-radio-config/cfg-period :Byte: 4 +radio.0/cisco/wtp-radio-config/cfg-type :Byte: 1 +radio.0/cisco/wtp-radio-config/cfp-maximum-duration :Word: 60 +radio.0/cisco/wtp-radio-config/country-str1 :Bstr16: .x444500 +radio.0/cisco/wtp-radio-config/country-str2 :Bstr16: DE +radio.0/cisco/wtp-radio-config/gpr-period :Byte: 10 +radio.0/cisco/wtp-radio-config/max-stations :Byte: 200 +radio.0/cisco/wtp-radio-config/occupancy-limit :Word: 100 +radio.0/cisco/wtp-radio-config/reg :Dword: 65536 +radio.0/decryption-error-report-period :Word: 120 +radio.0/operational-state/cause :Byte: 0 +radio.0/operational-state/state :Byte: 2 +radio.0/rate_set :Bstr16: .x82848b960c1218243048606c +radio.0/wtp-radio-information :Dword: 1 +radio.1/admin-state :Byte: 1 +radio.1/cisco-multi-domain-capability/first-channel :Word: 36 +radio.1/cisco-multi-domain-capability/max-tx-power-level :Word: 65535 +radio.1/cisco-multi-domain-capability/number-of-channels :Word: 16 +radio.1/cisco-multi-domain-capability/reserved :Byte: 1 +radio.1/cisco/air-space-capability :Byte: 0 +radio.1/cisco/mac-operation/fragmentation-threshold :Word: 2346 +radio.1/cisco/mac-operation/long-retry :Byte: 4 +radio.1/cisco/mac-operation/reserved :Byte: 1 +radio.1/cisco/mac-operation/rts-threshold :Word: 2347 +radio.1/cisco/mac-operation/rx-msdu-lifetime :Dword: 512 +radio.1/cisco/mac-operation/short-retry :Byte: 7 +radio.1/cisco/mac-operation/tx-msdu-lifetime :Dword: 512 +radio.1/cisco/multi-domain-capability/first-channel :Word: 36 +radio.1/cisco/multi-domain-capability/max-tx-power-level :Word: 20 +radio.1/cisco/multi-domain-capability/number-of-channels :Word: 4 +radio.1/cisco/multi-domain-capability/reserved :Byte: 1 +radio.1/cisco/tx-power/current-tx-power :Word: 0 +radio.1/cisco/tx-power/reserved :Byte: 1 +radio.1/cisco/wtp-radio-config/beacon-period :Word: 100 +radio.1/cisco/wtp-radio-config/bss-id :Bstr16: .x04fe7f499b90 +radio.1/cisco/wtp-radio-config/cfg-period :Byte: 4 +radio.1/cisco/wtp-radio-config/cfg-type :Byte: 1 +radio.1/cisco/wtp-radio-config/cfp-maximum-duration :Word: 60 +radio.1/cisco/wtp-radio-config/country-str1 :Bstr16: .x444500 +radio.1/cisco/wtp-radio-config/country-str2 :Bstr16: DE +radio.1/cisco/wtp-radio-config/gpr-period :Byte: 10 +radio.1/cisco/wtp-radio-config/max-stations :Byte: 200 +radio.1/cisco/wtp-radio-config/occupancy-limit :Word: 100 +radio.1/cisco/wtp-radio-config/reg :Dword: 65536 +radio.1/decryption-error-report-period :Word: 120 +radio.1/operational-state/cause :Byte: 0 +radio.1/operational-state/state :Byte: 2 +radio.1/rate_set :Bstr16: .x8c129824b048606c +radio.1/wtp-radio-information :Dword: 2 +radio.255/admin-state :Byte: 1 +radio.255/operational-state/cause :Byte: 0 +radio.255/operational-state/state :Byte: 2 +radio/0/cisco/regulatory-domain/code0 :Byte: 0 +radio/0/cisco/regulatory-domain/code1 :Byte: 1 +radio/0/cisco/regulatory-domain/set :Bool: true +radio/0/cisco/regulatory-domain/slot :Byte: 0 radio/0/wtp-radio-information :Dword: 1 radio/1/wtp-radio-information :Dword: 2 +result-code :Dword: 0 session-id :Bstr16: .x00006215 +statistics-timer :Word: 180 +tube.0/main :Byte: 12 +tube.0/zumsel :Byte: 12 +tube.1/main :Byte: 12 +tube.1/zumsel :Byte: 12 wtp-board-data/board-id :Bstr16: .x0000 wtp-board-data/mac-address :Bstr16: .x902b34de9ef1 -wtp-board-data/model-no :Bstr16: AIR-LAP1142N-E-K9 +wtp-board-data/model-no :Bstr16: AIR-LAP1142N-E-K9 wtp-board-data/serial-no :Bstr16: FCZ1406W232 wtp-board-data/vendor :Dword: 4232704 wtp-descriptor/bootloader/vendor :Dword: 4232704 @@ -33,17 +159,10 @@ wtp-descriptor/max-radios :Byte: 2 wtp-descriptor/radios-in-use :Byte: 2 wtp-descriptor/software/vendor :Dword: 4232704 wtp-descriptor/software/version :Bstr16: .x06036500 +wtp-fallback :Byte: 1 wtp-frame-tunnel-mode :Byte: 4 wtp-mac-type :Byte: 1 -wtp-name :Bstr16: WFAT-01 - - -capwap-timers/max-discovery-interval:Byte:0 -capwap-timers/min-discovery-interval:Byte:0 -capwap-timers/echo-interval:Byte:3 - -ac-name-with-priority/TubesAC:Byte:3 - +wtp-name :Bstr16: Banane wtp-reboot-statistics/ac-initiated-count :Word: 2 wtp-reboot-statistics/hw-failure-count :Word: 0 wtp-reboot-statistics/last-failure-type :Byte: 0 @@ -52,64 +171,3 @@ wtp-reboot-statistics/other-failure-count :Word: 13 wtp-reboot-statistics/reboot-count :Word: 0 wtp-reboot-statistics/sw-failure-count :Word: 0 wtp-reboot-statistics/unknown-failure-count :Word: 0 - - - -radio/0/cisco/regulatory-domain/code0 :Byte: 0 -radio/0/cisco/regulatory-domain/code1 :Byte: 1 -radio/0/cisco/regulatory-domain/set :Bool: true -radio/0/cisco/regulatory-domain/slot :Byte: 0 - - -cisco/ap-regulatory-domain.0/code0 :Byte: 0 -cisco/ap-regulatory-domain.0/code1 :Byte: 1 -cisco/ap-regulatory-domain.0/set :Bool: true -cisco/ap-regulatory-domain.0/slot :Byte: 0 -cisco/ap-regulatory-domain.1/code0 :Byte: 0 -cisco/ap-regulatory-domain.1/code1 :Byte: 1 -cisco/ap-regulatory-domain.1/set :Bool: true -cisco/ap-regulatory-domain.1/slot :Byte: 1 - - -tube.0/main : Byte : 12 -tube.0/zumsel : Byte : 12 -tube.1/main : Byte : 12 -tube.1/zumsel : Byte : 12 - - -ac-name-with-priority/TubesAC:Byte:3 -ac-name-with-priority/"ac2":Byte:05 - -radio.0/cisco-multi-domain-capability/first-channel :Word: 1 -radio.0/cisco-multi-domain-capability/max-tx-power-level :Word: 65535 -radio.0/cisco-multi-domain-capability/number-of-channels :Word: 13 -radio.0/cisco-multi-domain-capability/reserved :Byte: 1 -radio.0/cisco/wtp-radio-config/beacon-period :Word: 0 -radio.0/cisco/wtp-radio-config/bss-id :Bstr16: .x04fe7f499b90 -radio.0/cisco/wtp-radio-config/cfg-period :Byte: 0 -radio.0/cisco/wtp-radio-config/cfg-type :Byte: 1 -radio.0/cisco/wtp-radio-config/cfp-maximum-duration :Word: 0 -radio.0/cisco/wtp-radio-config/country-str1 :Bstr16: "DE " -radio.0/cisco/wtp-radio-config/country-str2 :Bstr16: "DE " -radio.0/cisco/wtp-radio-config/gpr-period :Byte: 0 -radio.0/cisco/wtp-radio-config/max-stations :Byte: 0 -radio.0/cisco/wtp-radio-config/occupancy-limit :Word: 0 -radio.0/cisco/wtp-radio-config/reg :Dword: 65536 -radio.1/cisco-multi-domain-capability/first-channel :Word: 36 -radio.1/cisco-multi-domain-capability/max-tx-power-level :Word: 65535 -radio.1/cisco-multi-domain-capability/number-of-channels :Word: 16 -radio.1/cisco-multi-domain-capability/reserved :Byte: 1 -radio.1/cisco/wtp-radio-config/beacon-period :Word: 0 -radio.1/cisco/wtp-radio-config/bss-id :Bstr16: .x04fe7f499b90 -radio.1/cisco/wtp-radio-config/cfg-period :Byte: 0 -radio.1/cisco/wtp-radio-config/cfg-type :Byte: 1 -radio.1/cisco/wtp-radio-config/cfp-maximum-duration :Word: 0 -radio.1/cisco/wtp-radio-config/country-str1 :Bstr16: DE -radio.1/cisco/wtp-radio-config/country-str2 :Bstr16: DE -radio.1/cisco/wtp-radio-config/gpr-period :Byte: 0 -radio.1/cisco/wtp-radio-config/max-stations :Byte: 0 -radio.1/cisco/wtp-radio-config/occupancy-limit :Word: 0 -radio.1/cisco/wtp-radio-config/reg :Dword: 65536 - -radio.0/wtp-radio-information :Dword: 1 -radio.1/wtp-radio-information :Dword: 2 diff --git a/src/wtp/run.c b/src/wtp/run.c index 33b468ce..376da582 100644 --- a/src/wtp/run.c +++ b/src/wtp/run.c @@ -116,7 +116,23 @@ static void do_update(struct conn * conn) } +void clean_cfg(mavl_t cfg) +{ + char key[CW_KTV_MAX_KEY_LEN]; + cw_KTV_t search; + int i; + int max; + max = cw_ktv_idx_get(cfg,"radio"); + for (i=0;iremote_cfg); + mavl_merge(conn->local_cfg,conn->remote_cfg); + cw_ktv_save(conn->local_cfg,"cisco.ktv"); + /*cw_dbg(DBG_X,"We hav a message processed");*/ diff --git a/src/wtp/wtp_main.c b/src/wtp/wtp_main.c index f06a3852..c69050ba 100644 --- a/src/wtp/wtp_main.c +++ b/src/wtp/wtp_main.c @@ -142,6 +142,10 @@ int main (int argc, char **argv) cw_dbg_ktv_dump(global_cfg,DBG_CFG_DMP,"----- global cfg start -----","","----- global cfg end -----"); + + + /*clean_cfg(global_cfg);*/ + /* create a connection object */ conn = conn_create_noq(-1, NULL); @@ -216,11 +220,16 @@ exit(0); } } */ + mavl_del_all(conn->remote_cfg); join(conn,&dis); + clean_cfg(conn->remote_cfg); mavl_merge(conn->local_cfg,conn->remote_cfg); - + mavl_del_all(conn->remote_cfg); configure(conn); + clean_cfg(conn->remote_cfg); + mavl_merge(conn->local_cfg,conn->remote_cfg); + run(conn); cw_discovery_free_results(&dis);