diff --git a/src/cw/capwap_items.c b/src/cw/capwap_items.c index ec821527..392c93e5 100644 --- a/src/cw/capwap_items.c +++ b/src/cw/capwap_items.c @@ -21,6 +21,8 @@ const char CW_ITEM_WTP_HARDWARE_VENDOR= const char CW_ITEM_WTP_HARDWARE_VERSION[]="wtp_hardware_version"; const char CW_ITEM_WTP_SOFTWARE_VERSION[]="wtp_software_version"; +const char CW_ITEM_WTP_BOOT_VERSION[]="wtp_boot_version"; +const char CW_ITEM_WTP_OTHER_VERSION[]="wtp_other_version"; /* const char CW_ITEM_WTP_SOFTWARE_VENDOR, @@ -53,26 +55,26 @@ const char CW_ITEM_CAPWAP_LOCAL_IP_ADDRESS[]="capwap_local_ip_addr"; const char CW_ITEM_LOCATION_DATA[]="location_data"; const char CW_ITEM_SESSION_ID[]="session_id"; - + const char CW_ITEM_AC_TIMESTAMP[]="ac_timestamp"; const char CW_ITEM_STATISTICS_TIMER[]="statistics_timer"; const char CW_ITEM_WTP_REBOOT_STATISTICS[]="wtp_reboot_statistics"; const char CW_ITEM_IMAGE_IDENTIFIER[]="image_identifier"; const char CW_ITEM_AC_HASH_VALUE[]="ac_hash_value"; - + const char CW_ITEM_AC_NAME_WITH_PRIORITY[]="ac_name_with_priority"; const char CW_ITEM_MAXIMUM_MESSAGE_LENGTH[]="maximum_message_length"; /* CIPWAP and Cisco */ const char CW_ITEM_WTP_GROUP_NAME[]="wtp_group_name"; - + /* Other Items */ const char CW_ITEM_AC_IMAGE_DIR[]="ac_img_dir"; /* Path where WTP images are stored */ const char CW_ITEM_IMAGE_FILENAME[]="img_filename"; /* Full path of image filename */ const char CW_ITEM_DISCOVERIES[]="discoveries"; - + /** FILE handle for uploading and downloading images */ const char CW_ITEM_IMAGE_FILEHANDLE[]="image_file_handle"; @@ -82,11 +84,11 @@ const char CW_ITEM_AP_MODE_AND_TYPE[]="cisco_ap_mode_and_type"; const char CW_ITEM_CISCO_BOARD_DATA_OPTIONS[]="cisco_board_data_options"; const char CW_ITEM_RADIOS[]="radios"; const char CW_ITEM_RADIO_OPER_STATE[]="radio_oper_state"; - + const char CW_ITEM_WTP_BOARD_VENDOR[]="vendor_id"; const char CW_ITEM_WTP_BOARD_MODELNO[]="model_no"; -const char CW_ITEM_WTP_BOARD_MACADDRESS[]="wtp_board_macadddress"; +const char CW_ITEM_WTP_BOARD_MACADDRESS[]="wtp_board_macaddress"; const char CW_ITEM_WTP_BOARD_ID[]="wtp_board_id"; const char CW_ITEM_WTP_BOARD_REVISION[]="wtp_board_revision"; const char CW_ITEM_WTP_BOARD_SERIALNO[]="serial_no"; @@ -105,6 +107,8 @@ struct cw_itemdef capwap_itemdefs[] = { {CW_ITEM_LOCATION_DATA,CW_ITEM_NONE,MBAG_STR}, {CW_ITEM_WTP_HARDWARE_VERSION,CW_ITEM_NONE,MBAG_VENDORSTR}, {CW_ITEM_WTP_SOFTWARE_VERSION,CW_ITEM_NONE,MBAG_VENDORSTR}, +{CW_ITEM_WTP_BOOT_VERSION,CW_ITEM_NONE,MBAG_VENDORSTR}, +{CW_ITEM_WTP_OTHER_VERSION,CW_ITEM_NONE,MBAG_VENDORSTR}, {CW_ITEM_WTP_GROUP_NAME,CW_ITEM_NONE,MBAG_STR}, {CW_ITEM_MAXIMUM_MESSAGE_LENGTH,CW_ITEM_NONE,MBAG_WORD}, {CW_ITEM_STATISTICS_TIMER,CW_ITEM_NONE,MBAG_WORD}, @@ -129,7 +133,7 @@ struct cw_itemdef capwap_itemdefs[] = { {CW_ITEM_WTP_BOARD_DATA,CW_ITEM_WTP_BOARD_SERIALNO,MBAG_BSTR16}, -/* Cisco Specific items, should be moved to a file like +/* Cisco Specific items, should be moved to a file like cisco_items or so */ {CW_ITEM_AP_MODE_AND_TYPE,CW_ITEM_NONE,MBAG_WORD}, @@ -154,9 +158,3 @@ struct cw_itemdef capwap_radiodefs[] = { {CW_ITEM_NONE} }; - - - - - - diff --git a/src/cw/capwap_items.h b/src/cw/capwap_items.h index 0570c321..bf6f1e3f 100644 --- a/src/cw/capwap_items.h +++ b/src/cw/capwap_items.h @@ -45,25 +45,25 @@ CW_ITEM_LOCATION_DATA, CW_ITEM_SESSION_ID, - + CW_ITEM_AC_TIMESTAMP, CW_ITEM_STATISTICS_TIMER, CW_ITEM_WTP_REBOOT_STATISTICS, CW_ITEM_IMAGE_IDENTIFIER, CW_ITEM_AC_HASH_VALUE, - + CW_ITEM_AC_NAME_WITH_PRIORITY, CW_ITEM_MAXIMUM_MESSAGE_LENGTH, CW_ITEM_WTP_GROUP_NAME, - - CW_ITEM_AC_IMAGE_DIR, + + CW_ITEM_AC_IMAGE_DIR, CW_ITEM_IMAGE_FILENAME, CW_ITEM_DISCOVERIES, - - CW_ITEM_IMAGE_FILEHANDLE, + + CW_ITEM_IMAGE_FILEHANDLE, CW_ITEM_RADIO_CFG, CW_ITEM_AP_MODE_AND_TYPE, @@ -71,7 +71,7 @@ CW_ITEM_CISCO_BOARD_DATA_OPTIONS, CW_ITEM_RADIOS, CW_ITEM_RADIO_OPER_STATE, - + */ @@ -124,13 +124,13 @@ extern const char CW_ITEM_CAPWAP_LOCAL_IP_ADDRESS[]; extern const char CW_ITEM_LOCATION_DATA[]; extern const char CW_ITEM_SESSION_ID[]; - + extern const char CW_ITEM_AC_TIMESTAMP[]; extern const char CW_ITEM_STATISTICS_TIMER[]; extern const char CW_ITEM_WTP_REBOOT_STATISTICS[]; extern const char CW_ITEM_IMAGE_IDENTIFIER[]; extern const char CW_ITEM_AC_HASH_VALUE[]; - + extern const char CW_ITEM_AC_NAME_WITH_PRIORITY[]; extern const char CW_ITEM_MAXIMUM_MESSAGE_LENGTH[]; extern const char CW_ITEM_CAPWAP_TRANSPORT_PROTOCOL[]; @@ -138,13 +138,13 @@ extern const char CW_ITEM_CAPWAP_TRANSPORT_PROTOCOL[]; /* CIPWAP and Cisco */ extern const char CW_ITEM_WTP_GROUP_NAME[]; - + /* Other Items */ extern const char CW_ITEM_AC_IMAGE_DIR[]; /* Path where WTP images are stored */ extern const char CW_ITEM_IMAGE_FILENAME[]; /* Full path of image filename */ extern const char CW_ITEM_DISCOVERIES[]; - + /** FILE handle for uploading and downloading images */ extern const char CW_ITEM_IMAGE_FILEHANDLE[]; @@ -154,7 +154,7 @@ extern const char CW_ITEM_AP_MODE_AND_TYPE[]; extern const char CW_ITEM_CISCO_BOARD_DATA_OPTIONS[]; extern const char CW_ITEM_RADIOS[]; extern const char CW_ITEM_RADIO_OPER_STATE[]; - + extern const char CW_ITEM_WTP_BOARD_VENDOR[]; extern const char CW_ITEM_WTP_BOARD_MODELNO[]; @@ -165,6 +165,8 @@ extern const char CW_ITEM_WTP_BOARD_SERIALNO[]; extern const char CW_ITEM_WTP_SOFTWARE_VERSION[]; extern const char CW_ITEM_WTP_HARDWARE_VERSION[]; +extern const char CW_ITEM_WTP_BOOT_VERSION[]; +extern const char CW_ITEM_WTP_OTHER_VERSION[]; extern const char CW_ITEM_WTP_BOOTLOADER_VERSION[]; diff --git a/src/cw/cw_in_generic2.c b/src/cw/cw_in_generic2.c index 766ded6d..ee45384b 100644 --- a/src/cw/cw_in_generic2.c +++ b/src/cw/cw_in_generic2.c @@ -29,6 +29,7 @@ int static check_len(struct conn *conn, struct cw_action_in *a, uint8_t * data, } */ +#if 0 int static do_save(mbag_t itemstore, struct conn *conn, struct cw_action_in *a, uint8_t * data, int len, struct sockaddr *from) { @@ -92,6 +93,7 @@ int static do_save(mbag_t itemstore, struct conn *conn, struct cw_action_in *a, } +#endif int cw_in_generic2(struct conn *conn, struct cw_action_in *a, uint8_t * data, int len, struct sockaddr *from) diff --git a/src/cw/cw_in_vendor_specific_payload.c b/src/cw/cw_in_vendor_specific_payload.c index 79b3a353..2d6c5fbc 100644 --- a/src/cw/cw_in_vendor_specific_payload.c +++ b/src/cw/cw_in_vendor_specific_payload.c @@ -2,6 +2,7 @@ #include "cw.h" #include "dbg.h" #include "log.h" +#include "stravltree.h" /** * @file diff --git a/src/cw/cw_out_wtp_descriptor.c b/src/cw/cw_out_wtp_descriptor.c index db9e5701..c6df904b 100644 --- a/src/cw/cw_out_wtp_descriptor.c +++ b/src/cw/cw_out_wtp_descriptor.c @@ -61,6 +61,21 @@ int cw_out_wtp_descriptor(struct conn *conn, struct cw_action_out *a, uint8_t * cw_log(LOG_ERR, "Can't send Software Version in WTP descriptor, not set."); } + i = mbag_get(mbag,CW_ITEM_WTP_BOOT_VERSION); + if ( i ) { + d += cw_put_version(d,CW_SUBELEM_WTP_BOOTLOADER_VERSION,i->data); + } + else { + cw_log(LOG_INFO, "Can't send Boot Version in WTP descriptor, not set."); + } + + i = mbag_get(mbag,CW_ITEM_WTP_OTHER_VERSION); + if ( i ) { + d += cw_put_version(d,CW_SUBELEM_WTP_OTHERSOFTWARE_VERSION,i->data); + } + else { + cw_log(LOG_INFO, "Can't send Other Version in WTP descriptor, not set."); + } int len = d-dst-4; return len + cw_put_elem_hdr(dst,a->elem_id,len);