CAPWAP: Add Vendor Specific from Cisco
authorAlexis La Goutte <alexis.lagoutte@gmail.com>
Tue, 28 Apr 2015 05:44:57 +0000 (07:44 +0200)
committerAlexis La Goutte <alexis.lagoutte@gmail.com>
Tue, 26 May 2015 09:22:36 +0000 (09:22 +0000)
Based on work of actube https://github.com/7u83/actube

Change-Id: I4f9b3bfa263446fb380127640ba99ecb0043eef2
Reviewed-on: https://code.wireshark.org/review/8307
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
epan/dissectors/packet-capwap.c

index ab9bf94233fa453e9fd5c8c04d9d2ba2c5c93060..1355d580e4e6b0106144295571847e00081ea289 100644 (file)
@@ -529,7 +529,8 @@ static int hf_capwap_fortinet_unknown = -1;
 
 static int hf_capwap_cisco_element_id = -1;
 static int hf_capwap_cisco_value = -1;
-static int hf_capwap_cisco_ap_name = -1;
+static int hf_capwap_cisco_mwar_addr = -1;
+static int hf_capwap_cisco_rad_name = -1;
 static int hf_capwap_cisco_mwar_type = -1;
 static int hf_capwap_cisco_mwar_hardware = -1;
 static int hf_capwap_cisco_mwar_software = -1;
@@ -537,7 +538,23 @@ static int hf_capwap_cisco_mwar_active_ms = -1;
 static int hf_capwap_cisco_mwar_supported_ms = -1;
 static int hf_capwap_cisco_mwar_active_rad = -1;
 static int hf_capwap_cisco_mwar_supported_rad = -1;
+static int hf_capwap_cisco_ap_mode_and_type_mode = -1;
+static int hf_capwap_cisco_ap_mode_and_type_type = -1;
+static int hf_capwap_cisco_ap_static_ip_addr = -1;
+static int hf_capwap_cisco_ap_static_ip_netmask = -1;
+static int hf_capwap_cisco_ap_static_ip_gateway = -1;
+static int hf_capwap_cisco_ap_static_ip_type = -1;
+static int hf_capwap_cisco_ap_static_ip_reserved = -1;
+static int hf_capwap_cisco_ap_uptime_current = -1;
+static int hf_capwap_cisco_ap_uptime_last = -1;
+static int hf_capwap_cisco_ap_group_name = -1;
+static int hf_capwap_cisco_spam_ap_led_state = -1;
 static int hf_capwap_cisco_ap_timesync = -1;
+static int hf_capwap_cisco_ap_timesync_type = -1;
+static int hf_capwap_cisco_board_data_options_ant_type = -1;
+static int hf_capwap_cisco_board_data_options_flex_connect = -1;
+static int hf_capwap_cisco_board_data_options_ap_type = -1;
+static int hf_capwap_cisco_board_data_options_join_priority = -1;
 static int hf_capwap_cisco_unknown = -1;
 
 static int hf_msg_fragments = -1;
@@ -1873,18 +1890,161 @@ dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *s
     return offset;
 }
 
-/* From Cisco WLC
+/* From Cisco WLC with help of actube  (http://www.github.com/7u83/actube */
 
-*/
+/* Copy and rename (CW_ => VSP_ for actube/capwap/capwap_cisco.h (revision g387cc5da) */
 #define VSP_CISCO_AP_NAME 5
 #define VSP_CISCO_MWAR 6
 #define VSP_CISCO_AP_TIMESYNC 151
 
+#define VSP_CISCO_MWAR_ADDR                 2
+#define VSP_CISCO_RAD                       3
+#define VSP_CISCO_RAD_SLOT                  4
+#define VSP_CISCO_RAD_NAME                  5
+#define        VSP_CISCO_MWAR                      6
+#define VSP_CISCO_ADD_WLAN                  7
+#define VSP_CISCO_WTP_RADIO_CFG             8
+
+#define VSP_CISCO_MULTI_DOMAIN_CAPAB        10
+#define VSP_CISCO_MAC_OPERATION             11
+
+#define VSP_CISCO_TX_POWER                  12
+#define VSP_CISCO_TX_POWER_LEVELS           13
+#define VSP_CISCO_DIRECT_SEQUENCE_CONTROL   14
+#define VSP_CISCO_SUPPORTED_RATES           16
+
+#define VSP_CISCO_80211_DELETE_WLAN         28
+
+#define VSP_CISCO_MWAR_NAME                 31
+
+#define VSP_CISCO_LOCATION_DATA             35
+#define VSP_CISCO_STATISTICS_TIMER          37
+
+#define VSP_CISCO_ANTENNA_PAYLOAD           41
+
+#define VSP_CISCO_CERTIFICATE               44
+#define VSP_CISCO_WTP_BOARD_DATA            50
+#define VSP_CISCO_AP_MODE_AND_TYPE          54
+#define VSP_CISCO_AP_QOS                    57
+#define VSP_CISCO_AC_IPV4_LIST              59
+
+#define VSP_CISCO_AP_STATIC_IP_ADDR         83
+#define VSP_CISCO_SIG_PAYLOAD               84
+#define VSP_CISCO_SIG_TOGGLE                87
+
+#define VSP_CISCO_AC_NAME_WITH_INDEX        91
+#define VSP_CISCO_SPAM_DOMAIN_SECRET        96
+
+#define VSP_CISCO_SPAM_VENDOR_SPECIFIC      104
+
+#define VSP_CISCO_AP_UPTIME                 108
+
+#define VSP_CISCO_AP_GROUP_NAME             123
+#define VSP_CISCO_SPAM_AP_LED_STATE         125
+#define VSP_CISCO_AP_MODEL                  127
+#define VSP_CISCO_AP_RESET_BUTTON_STATE     128
+
+#define VSP_CISCO_AP_LED_STATE_CONFIG       125
+#define VSP_CISCO_AP_REGULATORY_DOMAIN      126
+
+#define VSP_CISCO_LWAPP_CHANNEL_POWER       134
+#define VSP_CISCO_AP_PRE_STD_SWITCH_CONFIG  137
+#define VSP_CISCO_AP_POWER_INJECTOR_CONFIG  138
+
+#define VSP_CISCO_AP_MINIOS_VERSION         149
+#define VSP_CISCO_AP_TIMESYNC               151
+#define VSP_CISCO_AP_DOMAIN                 169
+#define VSP_CISCO_AP_DNS                    170
+
+#define VSP_CISCO_AP_BACKUP_SOFTWARE_VERSION 183
+#define VSP_CISCO_BOARD_DATA_OPTIONS        207
+#define VSP_CISCO_MWAR_TYPE                 208
+#define VSP_CISCO_80211_ASSOC_LIMIT         213
+#define VSP_CISCO_TLV_PAYLOAD               215
+#define VSP_CISCO_AP_LOG_FACILITY           224
+#define VSP_CISCO_AP_RETRANSMIT_PARAM       240
+#define VSP_CISCO_AP_VENUE_SETTINGS         249
+
 
 static const value_string cisco_element_id_vals[] = {
-    { VSP_CISCO_AP_NAME, "AP Name" },
+    { VSP_CISCO_MWAR_ADDR, "MWAR Address" },
+    { VSP_CISCO_RAD, "RAD" },
+    { VSP_CISCO_RAD_SLOT, "RAD Slot" },
+    { VSP_CISCO_RAD_NAME, "RAD (AP) Name" },
     { VSP_CISCO_MWAR, "MWAR" },
+    { VSP_CISCO_ADD_WLAN, "Add WLAN" },
+    { VSP_CISCO_WTP_RADIO_CFG, "WTP Radio Configuration" },
+
+    { VSP_CISCO_MULTI_DOMAIN_CAPAB, "Multi Domain Capability" },
+    { VSP_CISCO_MAC_OPERATION, "MAC Operation" },
+
+    { VSP_CISCO_TX_POWER, "TX Power" },
+    { VSP_CISCO_TX_POWER_LEVELS, "TX Power Levels" },
+    { VSP_CISCO_DIRECT_SEQUENCE_CONTROL, "Direct Sequence Control" },
+    { VSP_CISCO_SUPPORTED_RATES, "Supported Rates" },
+
+    { VSP_CISCO_80211_DELETE_WLAN, "802.11 Delete WLAN" },
+
+    { VSP_CISCO_MWAR_NAME, "MWAR NAME" },
+
+    { VSP_CISCO_LOCATION_DATA, "Location Data" },
+    { VSP_CISCO_STATISTICS_TIMER, "Statistics Timer" },
+
+    { VSP_CISCO_ANTENNA_PAYLOAD, "Antenna Payload" },
+
+    { VSP_CISCO_CERTIFICATE, "Certificate" },
+    { VSP_CISCO_WTP_BOARD_DATA, "WTP Board Data" },
+    { VSP_CISCO_AP_MODE_AND_TYPE, "AP Mode and Type" },
+
+    { VSP_CISCO_AP_QOS, "AP QoS"},
+    { VSP_CISCO_AC_IPV4_LIST, "AC IPv4 List" },
+
+    { VSP_CISCO_AP_STATIC_IP_ADDR, "AP Static IP Addr" },
+    { VSP_CISCO_SIG_PAYLOAD, "SIG Payload" },
+    { VSP_CISCO_SIG_TOGGLE, "SIG Toggle" },
+
+    { VSP_CISCO_AC_NAME_WITH_INDEX, "AC Name with Index" },
+    { VSP_CISCO_SPAM_DOMAIN_SECRET, "SPAM Domain Secret" },
+
+    { VSP_CISCO_SPAM_VENDOR_SPECIFIC, "SPAM Vendor Specific" },
+
+    { VSP_CISCO_AP_UPTIME, "AP Uptime" },
+
+    { VSP_CISCO_AP_GROUP_NAME, "AP Group Name" },
+    { VSP_CISCO_SPAM_AP_LED_STATE, "SPAM AP Led State" },
+    { VSP_CISCO_AP_MODEL, "AP Model" },
+    { VSP_CISCO_AP_RESET_BUTTON_STATE, "AP reset button state" },
+
+    { VSP_CISCO_AP_LED_STATE_CONFIG, "AP Led State Config" },
+    { VSP_CISCO_AP_REGULATORY_DOMAIN, "AP Regulatory domain" },
+
+    { VSP_CISCO_LWAPP_CHANNEL_POWER, "LWAPP Channel Power" },
+    { VSP_CISCO_AP_PRE_STD_SWITCH_CONFIG, "AP Pre STD Switch Config" },
+    { VSP_CISCO_AP_POWER_INJECTOR_CONFIG, "AP Power Injector config" },
+
+    { VSP_CISCO_AP_MINIOS_VERSION, "AP MinIOS Version" },
     { VSP_CISCO_AP_TIMESYNC, "AP Time Sync" },
+    { VSP_CISCO_AP_DOMAIN, "AP Domain" },
+    { VSP_CISCO_AP_DNS, "AP DNS" },
+
+    { VSP_CISCO_AP_BACKUP_SOFTWARE_VERSION, "AP Backup software version" },
+    { VSP_CISCO_BOARD_DATA_OPTIONS, "Board Data Options" },
+    { VSP_CISCO_MWAR_TYPE, "MWAR Type" },
+    { VSP_CISCO_80211_ASSOC_LIMIT, "802.11 Assoc Limit" },
+    { VSP_CISCO_TLV_PAYLOAD, "TLV Payload" },
+    { VSP_CISCO_AP_LOG_FACILITY, "AP Log Facility" },
+
+    { VSP_CISCO_AP_RETRANSMIT_PARAM, "AP Retransmit Param" },
+    { VSP_CISCO_AP_VENUE_SETTINGS, "AP Venue Settings" },
+    { 0,     NULL     }
+};
+
+static const value_string cisco_ap_mode_and_type_mode_vals[] = {
+    { 0, "Split MAC / Local Mode" },
+    { 1, "Monitor" },
+    { 2, "Local MAC / FlexConnect" },
+    { 3, "Rogue Detector" },
+    { 4, "Sniffer" },
     { 0,     NULL     }
 };
 
@@ -1904,8 +2064,14 @@ dissect_capwap_message_element_vendor_cisco_type(tvbuff_t *tvb, proto_tree *sub_
     proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_value, tvb, offset, optlen, ENC_NA);
 
     switch(element_id){
-        case VSP_CISCO_AP_NAME: /* AP Name (5) */
-            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_name, tvb, offset, optlen, ENC_ASCII|ENC_NA);
+        case VSP_CISCO_MWAR_ADDR: /* MWAR Address (2) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+        break;
+        case VSP_CISCO_RAD_NAME: /* RAD (AP) Name (5) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_rad_name, tvb, offset, optlen, ENC_ASCII|ENC_NA);
             offset += optlen;
         break;
         case VSP_CISCO_MWAR: /* MWAR (6) */
@@ -1924,11 +2090,59 @@ dissect_capwap_message_element_vendor_cisco_type(tvbuff_t *tvb, proto_tree *sub_
             proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_supported_rad, tvb, offset, 2, ENC_NA);
             offset += 2;
         break;
-        case VSP_CISCO_AP_TIMESYNC: /* AP TIMESYNC (151) */
+        case VSP_CISCO_AP_MODE_AND_TYPE: /* AP_MODE_AND_TYPE (54) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_mode_and_type_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_mode_and_type_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+            offset += 1;
+        break;
+        case VSP_CISCO_AP_STATIC_IP_ADDR: /* AP_MODE_AND_TYPE (83) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_addr, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_netmask, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_gateway, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_type, tvb, offset, 1, ENC_BIG_ENDIAN);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_static_ip_reserved, tvb, offset, 4, ENC_NA);
+            offset += 4;
+        break;
+        case VSP_CISCO_AP_UPTIME: /* AP Uptime (108) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_uptime_current, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_uptime_last, tvb, offset, 4, ENC_BIG_ENDIAN);
+            offset += 4;
+        break;
+        case VSP_CISCO_AP_GROUP_NAME: /* AP Group Name (123) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_group_name, tvb, offset, optlen, ENC_ASCII|ENC_NA);
+            offset += optlen;
+        break;
+        case VSP_CISCO_SPAM_AP_LED_STATE: /* SPAM AP Led State (125) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_spam_ap_led_state, tvb, offset, 2, ENC_NA);
+            offset += 2;
+        break;
+        case VSP_CISCO_AP_TIMESYNC: /* AP Timesync (151) */
             proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_timesync, tvb, offset, 4, ENC_NA);
             offset += 4;
 
-            offset += 1; /* Padding ? */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_ap_timesync_type, tvb, offset, 1, ENC_NA);
+            offset += 1;
+        break;
+        case VSP_CISCO_BOARD_DATA_OPTIONS: /* Board Data Options (207) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_ant_type, tvb, offset, 1, ENC_NA);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_flex_connect, tvb, offset, 1, ENC_NA);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_ap_type, tvb, offset, 1, ENC_NA);
+            offset += 1;
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_board_data_options_join_priority, tvb, offset, 1, ENC_NA);
+            offset += 1;
+        break;
+
+        case VSP_CISCO_MWAR_TYPE: /* MWAR_TYPE (208) */
+            proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_cisco_mwar_type, tvb, offset, 1, ENC_NA);
+            offset += 1;
         break;
         default:
             expert_add_info_format(pinfo, msg_element_type_item, &ei_capwap_message_element_cisco_type,
@@ -5302,8 +5516,13 @@ proto_register_capwap_control(void)
               FT_BYTES, BASE_NONE, NULL, 0x0,
               NULL, HFILL }
         },
-        { &hf_capwap_cisco_ap_name,
-            { "AP Name", "capwap.control.cisco.ap_name",
+        { &hf_capwap_cisco_mwar_addr,
+            { "Address", "capwap.control.cisco.mwar.address",
+              FT_IPv4, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_rad_name,
+            { "RAD (AP) Name", "capwap.control.cisco.rad_name",
               FT_STRING, BASE_NONE, NULL, 0x0,
               NULL, HFILL }
         },
@@ -5342,11 +5561,91 @@ proto_register_capwap_control(void)
               FT_UINT16, BASE_DEC, NULL, 0x0,
               NULL, HFILL }
         },
+        { &hf_capwap_cisco_ap_mode_and_type_mode,
+            { "Mode", "capwap.control.cisco.ap_mode_and_type.mode",
+              FT_UINT8, BASE_DEC, VALS(cisco_ap_mode_and_type_mode_vals), 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_mode_and_type_type,
+            { "Type", "capwap.control.cisco.ap_mode_and_type.type",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_static_ip_addr,
+            { "IP Address", "capwap.control.cisco.ap_static_ip.addr",
+              FT_IPv4, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_static_ip_netmask,
+            { "Netmask", "capwap.control.cisco.ap_static_ip.netmask",
+              FT_IPv4, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_static_ip_gateway,
+            { "Gateway", "capwap.control.cisco.ap_static_ip.gateway",
+              FT_IPv4, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_static_ip_type,
+            { "Type", "capwap.control.cisco.ap_static_ip.type",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_static_ip_reserved,
+            { "Reserved", "capwap.control.cisco.ap_static_ip.reserved",
+              FT_BYTES, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_uptime_current,
+            { "AP Uptime Current", "capwap.control.cisco.ap_uptime.current",
+              FT_UINT32, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_uptime_last,
+            { "AP Uptime Last", "capwap.control.cisco.ap_uptime.last",
+              FT_UINT32, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_ap_group_name,
+            { "AP Group Name", "capwap.control.cisco.ap_group_name",
+              FT_STRING, BASE_NONE, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_spam_ap_led_state,
+            { "Led State", "capwap.control.cisco.spam_ap_led_state",
+              FT_UINT16, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
         { &hf_capwap_cisco_ap_timesync,
             { "AP TimeSync", "capwap.control.cisco.ap_timesync",
               FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0,
               NULL, HFILL }
         },
+        { &hf_capwap_cisco_ap_timesync_type,
+            { "Type (?)", "capwap.control.cisco.ap_timesync.type",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_board_data_options_ant_type,
+            { "Antenna Type", "capwap.control.cisco.board_data_options.ant_type",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_board_data_options_flex_connect,
+            { "Flex Connect", "capwap.control.cisco.board_data_options.flex_connect",
+              FT_BOOLEAN, 8, TFS(&tfs_supported_not_supported), 0x01,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_board_data_options_ap_type,
+            { "AP Type", "capwap.control.cisco.board_data_options.ap_type",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
+        { &hf_capwap_cisco_board_data_options_join_priority,
+            { "Join Priority", "capwap.control.cisco.board_data_options.join_priority",
+              FT_UINT8, BASE_DEC, NULL, 0x0,
+              NULL, HFILL }
+        },
         { &hf_capwap_cisco_unknown,
             { "Unknown Data", "capwap.control.cisco.unknown",
               FT_BYTES, BASE_NONE, NULL, 0x0,