aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-capwap.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2013-02-21 15:32:07 +0000
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2013-02-21 15:32:07 +0000
commit84e31e29b73d7570cc66d751716401b877631a26 (patch)
treeb88027d05cdfbc42e3707c0c484e5f3ae3f76be0 /epan/dissectors/packet-capwap.c
parent964d9adf422f1e4d274c7425d70712798824fa42 (diff)
Replace proto_tree_add_text/uint/boolean by proto_tree_add_item Use bitmask (remove tvb_get_bits(..))
svn path=/trunk/; revision=47798
Diffstat (limited to 'epan/dissectors/packet-capwap.c')
-rw-r--r--epan/dissectors/packet-capwap.c145
1 files changed, 92 insertions, 53 deletions
diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c
index d1aa15c3a0..80b081d83b 100644
--- a/epan/dissectors/packet-capwap.c
+++ b/epan/dissectors/packet-capwap.c
@@ -106,6 +106,7 @@ static int hf_capwap_control_header_flags = -1;
static int hf_capwap_control_header_msg_element_length = -1;
static int hf_capwap_message_element = -1;
+static int hf_capwap_msg_element = -1;
static int hf_capwap_msg_element_type = -1;
static int hf_capwap_msg_element_length = -1;
static int hf_capwap_msg_element_value = -1;
@@ -127,6 +128,7 @@ static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_d = -1;
static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_c = -1;
static int hf_capwap_msg_element_type_ac_descriptor_dtls_policy_r = -1;
+static int hf_capwap_msg_element_type_ac_information = -1;
static int hf_capwap_msg_element_type_ac_information_vendor = -1;
static int hf_capwap_msg_element_type_ac_information_type = -1;
static int hf_capwap_msg_element_type_ac_information_length = -1;
@@ -173,6 +175,7 @@ static int hf_capwap_msg_element_type_vsp_vendor_identifier = -1;
static int hf_capwap_msg_element_type_vsp_vendor_element_id = -1;
static int hf_capwap_msg_element_type_vsp_vendor_data = -1;
+static int hf_capwap_msg_element_type_wtp_board_data = -1;
static int hf_capwap_msg_element_type_wtp_board_data_vendor = -1;
static int hf_capwap_msg_element_type_wtp_board_data_type = -1;
static int hf_capwap_msg_element_type_wtp_board_data_length = -1;
@@ -186,9 +189,12 @@ static int hf_capwap_msg_element_type_wtp_board_data_base_mac_address = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_max_radios = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_radio_in_use = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_number_encrypt = -1;
+static int hf_capwap_msg_element_type_wtp_descriptor_encrypt = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities = -1;
+
+static int hf_capwap_msg_element_type_wtp_descriptor = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_vendor = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_type = -1;
static int hf_capwap_msg_element_type_wtp_descriptor_length = -1;
@@ -736,21 +742,21 @@ dissect_capwap_data_message_bindings_ieee80211(tvbuff_t *tvb, proto_tree *data_m
static void
dissect_capwap_encryption_capabilities(tvbuff_t *tvb, proto_tree *encryption_capabilities_tree, guint offset)
{
- guint wbid,encryption_capabilities = 0;
proto_item *encryption_capabilities_item;
proto_tree *sub_encryption_capabilities_tree;
- encryption_capabilities = tvb_get_ntohs(tvb, offset+1);
- wbid = tvb_get_bits8(tvb, offset*8+3,5);
-
- encryption_capabilities_item = proto_tree_add_text(encryption_capabilities_tree, tvb, offset, 3, "Encryption Capabilities: (WBID=%d) %d", wbid, encryption_capabilities);
+ encryption_capabilities_item = proto_tree_add_item(encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt, tvb, offset, 3, ENC_NA);
sub_encryption_capabilities_tree = proto_item_add_subtree(encryption_capabilities_item, ett_capwap);
- proto_tree_add_uint(sub_encryption_capabilities_tree,hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved, tvb, offset, 1, tvb_get_bits8(tvb, offset*8,3));
+ proto_tree_add_item(sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved, tvb, offset, 1, ENC_NA);
+
+ proto_tree_add_item (sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid, tvb, offset, 1, ENC_NA);
+ proto_item_append_text(encryption_capabilities_item, ": (WBID %d)",tvb_get_guint8(tvb, offset) & 0x1F);
- proto_tree_add_uint(sub_encryption_capabilities_tree,hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid, tvb, offset, 1, wbid);
proto_tree_add_item(sub_encryption_capabilities_tree, hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities, tvb, offset+1, 2, ENC_BIG_ENDIAN);
+ proto_item_append_text(encryption_capabilities_item, " %d",tvb_get_ntohs(tvb, offset+1));
+
}
/* Returns the number of bytes consumed by this option. */
@@ -763,7 +769,10 @@ dissect_capwap_ac_information(tvbuff_t *tvb, proto_tree *ac_information_type_tre
ac_information_type = tvb_get_ntohs(tvb, offset+4);
optlen = tvb_get_ntohs(tvb, offset+6);
- ac_information_type_item = proto_tree_add_text(ac_information_type_tree, tvb, offset, 4+2+2+optlen, "AC Information Type: (t=%d,l=%d) %s", ac_information_type, optlen, val_to_str(ac_information_type,ac_information_type_vals,"Unknown AC Information Type (%02d)") );
+ ac_information_type_item = proto_tree_add_item(ac_information_type_tree, hf_capwap_msg_element_type_ac_information, tvb, offset, 4+2+2+optlen, ENC_NA );
+
+ proto_item_append_text(ac_information_type_item,": (t=%d,l=%d) %s", ac_information_type, optlen, val_to_str(ac_information_type,ac_information_type_vals,"Unknown AC Information Type (%02d)") );
+
sub_ac_information_type_tree = proto_item_add_subtree(ac_information_type_item, ett_capwap);
proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_vendor, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -773,6 +782,7 @@ dissect_capwap_ac_information(tvbuff_t *tvb, proto_tree *ac_information_type_tre
proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_length, tvb, offset+6, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_value, tvb, offset+8, optlen, ENC_NA);
+
switch (ac_information_type) {
case AC_INFORMATION_HARDWARE_VERSION:
proto_tree_add_item(sub_ac_information_type_tree, hf_capwap_msg_element_type_ac_information_hardware_version, tvb, offset+8, optlen, ENC_ASCII|ENC_NA);
@@ -799,7 +809,10 @@ dissect_capwap_wtp_descriptor(tvbuff_t *tvb, proto_tree *wtp_descriptor_type_tre
wtp_descriptor_type = tvb_get_ntohs(tvb, offset+4);
optlen = tvb_get_ntohs(tvb, offset+6);
- wtp_descriptor_type_item = proto_tree_add_text(wtp_descriptor_type_tree, tvb, offset, 4+2+2+optlen, "WTP Descriptor Type: (t=%d,l=%d) %s", wtp_descriptor_type, optlen, val_to_str(wtp_descriptor_type,wtp_descriptor_type_vals,"Unknown WTP Descriptor Type (%02d)") );
+ wtp_descriptor_type_item = proto_tree_add_item(wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor, tvb, offset, 4+2+2+optlen, ENC_NA);
+
+ proto_item_append_text(wtp_descriptor_type_item, ": (t=%d,l=%d) %s", wtp_descriptor_type, optlen, val_to_str(wtp_descriptor_type,wtp_descriptor_type_vals,"Unknown WTP Descriptor Type (%02d)") );
+
sub_wtp_descriptor_type_tree = proto_item_add_subtree(wtp_descriptor_type_item, ett_capwap);
proto_tree_add_item(sub_wtp_descriptor_type_tree, hf_capwap_msg_element_type_wtp_descriptor_vendor, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -845,10 +858,13 @@ dissect_capwap_board_data(tvbuff_t *tvb, proto_tree *board_data_type_tree, guint
board_data_type = tvb_get_ntohs(tvb, offset);
optlen = tvb_get_ntohs(tvb, offset+2);
- board_data_type_item = proto_tree_add_text(board_data_type_tree, tvb, offset, 2+2+optlen, "Board Data Type: (t=%d,l=%d) %s", board_data_type, optlen, val_to_str(board_data_type,board_data_type_vals,"Unknown Board Data Type (%02d)") );
+ board_data_type_item = proto_tree_add_item(board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data, tvb, offset, 2+2+optlen, ENC_NA );
+
+ proto_item_append_text(board_data_type_item, ": (t=%d,l=%d) %s", board_data_type, optlen, val_to_str(board_data_type,board_data_type_vals,"Unknown Board Data Type (%02d)") );
+
sub_board_data_type_tree = proto_item_add_subtree(board_data_type_item, ett_capwap);
- proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_type,tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_board_data_type_tree, hf_capwap_msg_element_type_wtp_board_data_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
@@ -892,10 +908,13 @@ dissect_capwap_message_element_type(tvbuff_t *tvb, proto_tree *msg_element_type_
msg_element_type = tvb_get_ntohs(tvb, offset);
optlen = tvb_get_ntohs(tvb, offset+2);
- msg_element_type_item = proto_tree_add_text(msg_element_type_tree, tvb, offset, 2+2+optlen, "Type: (t=%d,l=%d) %s", msg_element_type, optlen, val_to_str(msg_element_type,message_element_type_vals,"Unknown Message Element Type (%02d)") );
+ msg_element_type_item = proto_tree_add_item(msg_element_type_tree, hf_capwap_msg_element, tvb, offset, 2+2+optlen, ENC_NA );
+
+ proto_item_append_text(msg_element_type_item, ": (t=%d,l=%d) %s", msg_element_type, optlen, val_to_str(msg_element_type,message_element_type_vals,"Unknown Message Element Type (%02d)") );
+
sub_msg_element_type_tree = proto_item_add_subtree(msg_element_type_item, ett_capwap);
- proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type,tvb, offset, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
@@ -1211,39 +1230,38 @@ dissect_capwap_header(tvbuff_t *tvb, proto_tree *capwap_control_tree, guint offs
capwap_header_tree = proto_item_add_subtree(ti, ett_capwap);
/* Header Length : 5 Bits */
- ti_len = proto_tree_add_uint(capwap_header_tree, hf_capwap_header_hlen, tvb, offset+plen, 1, tvb_get_bits8(tvb, (offset+plen)*8, 5));
+ ti_len = proto_tree_add_item(capwap_header_tree, hf_capwap_header_hlen, tvb, offset+plen, 1, ENC_BIG_ENDIAN);
proto_item_append_text(ti_len, " (%d)",hlen+1);
/* Radio ID : 5 Bits */
- proto_tree_add_uint(capwap_header_tree, hf_capwap_header_rid, tvb, offset+plen, 1, tvb_get_bits8(tvb, (offset+plen)*8+5, 5));
+ proto_tree_add_item(capwap_header_tree, hf_capwap_header_rid, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
/* Wireless Binding ID : 5 Bits */
- proto_tree_add_uint(capwap_header_tree, hf_capwap_header_wbid, tvb, offset+plen, 1, tvb_get_bits8(tvb, (offset+plen)*8+10, 5));
+ proto_tree_add_item(capwap_header_tree, hf_capwap_header_wbid, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
/* WBid of Payload (for CAPWAP Data Packet) */
*payload_wbid = tvb_get_bits8(tvb, (offset+plen)*8+10, 5);
- plen++;
/* Flags : 9 Bits */
- flags = tvb_get_bits16(tvb, (offset+plen)*8+7, 9, ENC_BIG_ENDIAN);
- ti_flag = proto_tree_add_uint_format(capwap_header_tree, hf_capwap_header_flags, tvb, offset+plen, 1, 0, "Header flags");
+ flags = tvb_get_bits16(tvb, (offset+plen)*8+15, 9, ENC_BIG_ENDIAN);
+ ti_flag = proto_tree_add_item(capwap_header_tree, hf_capwap_header_flags, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
capwap_header_flags_tree = proto_item_add_subtree(ti_flag, ett_capwap);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_t, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_f, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_l, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_w, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_m, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_k, tvb, offset+plen, 1, flags);
- proto_tree_add_boolean(capwap_header_flags_tree, hf_capwap_header_flags_r, tvb, offset+plen, 1, flags);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_t, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_f, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_l, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_w, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_m, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_k, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
+ proto_tree_add_item(capwap_header_flags_tree, hf_capwap_header_flags_r, tvb, offset+plen, 3, ENC_BIG_ENDIAN);
/* Fragment ??*/
*fragment_is = ((flags & 0x80) == 0x80) ? TRUE : FALSE;
*fragment_more = ((flags &0x40) == 0x40) ? FALSE : TRUE;
/* Type of Payload (for CAPWAP Data Packet) */
- *payload_type = tvb_get_bits8(tvb, (offset+plen)*8+7,1);
+ *payload_type = tvb_get_bits8(tvb, (offset+plen)*8+15,1);
- plen += 2;
+ plen += 3;
/* Fragment ID : 16 Bits */
proto_tree_add_item(capwap_header_tree, hf_capwap_header_fragment_id, tvb, offset+plen, 2, ENC_BIG_ENDIAN);
@@ -1251,13 +1269,11 @@ dissect_capwap_header(tvbuff_t *tvb, proto_tree *capwap_control_tree, guint offs
plen += 2;
/* Fragment offset : 13 Bits */
- /* FIXME: Use _item and mask in hf element */
- proto_tree_add_uint(capwap_header_tree, hf_capwap_header_fragment_offset, tvb, offset+plen, 2, tvb_get_bits16(tvb, (offset+plen)*8, 13, ENC_BIG_ENDIAN));
+ proto_tree_add_item(capwap_header_tree, hf_capwap_header_fragment_offset, tvb, offset+plen, 2, ENC_BIG_ENDIAN);
*fragment_offset = 8 * (guint32)tvb_get_bits16(tvb, (offset+plen)*8, 13, ENC_BIG_ENDIAN);
/* Reserved 3 Bits */
- /* FIXME: Use _item and mask in hf element */
- proto_tree_add_uint(capwap_header_tree, hf_capwap_header_reserved, tvb, offset+plen+1, 1, tvb_get_bits8(tvb, (offset+plen)*8+13, 3));
+ proto_tree_add_item(capwap_header_tree, hf_capwap_header_reserved, tvb, offset+plen+1, 1, ENC_BIG_ENDIAN);
plen += 2;
/* Optionnal Headers */
if (flags & 0x10 /* Radio MAC address */) {
@@ -1327,9 +1343,9 @@ dissect_capwap_preamble(tvbuff_t *tvb, proto_tree *capwap_control_tree, guint of
ti = proto_tree_add_item(capwap_control_tree, hf_capwap_preamble, tvb, offset+plen, -1, ENC_NA);
capwap_preamble_tree = proto_item_add_subtree(ti, ett_capwap);
- proto_tree_add_uint(capwap_preamble_tree, hf_capwap_preamble_version, tvb, offset+plen, 1, hi_nibble(tvb_get_guint8(tvb, offset+plen)));
- proto_tree_add_uint(capwap_preamble_tree, hf_capwap_preamble_type, tvb, offset+plen, 1, lo_nibble(tvb_get_guint8(tvb, offset+plen)));
- *type_header = lo_nibble(tvb_get_guint8(tvb, offset+plen));
+ proto_tree_add_item(capwap_preamble_tree, hf_capwap_preamble_version, tvb, offset+plen, 1, ENC_NA);
+ proto_tree_add_item(capwap_preamble_tree, hf_capwap_preamble_type, tvb, offset+plen, 1, ENC_NA);
+ *type_header = tvb_get_guint8(tvb, offset+plen) & 0x0F;
plen++;
/* DTLS Header ? */
if (*type_header == 1) {
@@ -1542,11 +1558,11 @@ proto_register_capwap_control(void)
NULL, HFILL }},
{ &hf_capwap_preamble_version,
{ "Version", "capwap.preamble.version",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT8, BASE_DEC, NULL, 0xF0,
"Version of CAPWAP", HFILL }},
{ &hf_capwap_preamble_type,
{ "Type", "capwap.preamble.type",
- FT_UINT8, BASE_DEC, VALS(type_header_vals), 0x0,
+ FT_UINT8, BASE_DEC, VALS(type_header_vals), 0x0F,
"Type of Payload", HFILL }},
{ &hf_capwap_preamble_reserved,
{ "Reserved", "capwap.preamble.reserved",
@@ -1559,47 +1575,47 @@ proto_register_capwap_control(void)
NULL, HFILL }},
{ &hf_capwap_header_hlen,
{ "Header Length", "capwap.header.length",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Length of the CAPWAP transport header in 4-byte words (similar to IP header length) ", HFILL }},
+ FT_UINT24, BASE_DEC, NULL, 0xF80000,
+ "Length of the CAPWAP transport header in 4-byte words (similar to IP header length)", HFILL }},
{ &hf_capwap_header_rid,
{ "Radio ID", "capwap.header.rid",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT24, BASE_DEC, NULL, 0x07C000,
NULL, HFILL }},
{ &hf_capwap_header_wbid,
{ "Wireless Binding ID", "capwap.header.wbid",
- FT_UINT8, BASE_DEC, VALS(type_wbid), 0x0,
+ FT_UINT24, BASE_DEC, VALS(type_wbid), 0x003E00,
NULL, HFILL }},
{ &hf_capwap_header_flags,
{ "Header Flags", "capwap.header.flags",
- FT_UINT8, BASE_DEC, NULL, 0x0,
+ FT_UINT24, BASE_HEX, NULL, 0x0001FF,
NULL, HFILL }},
{ &hf_capwap_header_flags_t,
{ "Payload Type", "capwap.header.flags.t",
- FT_BOOLEAN, 9, TFS(&flag_type_t), 0x100,
+ FT_BOOLEAN, 24, TFS(&flag_type_t), 0x0000100,
NULL, HFILL }},
{ &hf_capwap_header_flags_f,
{ "Fragment", "capwap.header.flags.f",
- FT_BOOLEAN, 9, TFS(&flag_type_f), 0x80,
+ FT_BOOLEAN, 24, TFS(&flag_type_f), 0x000080,
NULL, HFILL }},
{ &hf_capwap_header_flags_l,
{ "Last Fragment", "capwap.header.flags.l",
- FT_BOOLEAN, 9, TFS(&flag_type_l), 0x40,
+ FT_BOOLEAN, 24, TFS(&flag_type_l), 0x000040,
NULL, HFILL }},
{ &hf_capwap_header_flags_w,
{ "Wireless header", "capwap.header.flags.w",
- FT_BOOLEAN, 9, TFS(&flag_type_w), 0x20,
+ FT_BOOLEAN, 24, TFS(&flag_type_w), 0x000020,
NULL, HFILL }},
{ &hf_capwap_header_flags_m,
{ "Radio MAC header", "capwap.header.flags.m",
- FT_BOOLEAN, 9, TFS(&flag_type_m), 0x10,
+ FT_BOOLEAN, 24, TFS(&flag_type_m), 0x000010,
NULL, HFILL }},
{ &hf_capwap_header_flags_k,
{ "Keep-Alive", "capwap.header.flags.k",
- FT_BOOLEAN, 9, TFS(&flag_type_k), 0x08,
+ FT_BOOLEAN, 24, TFS(&flag_type_k), 0x000008,
NULL, HFILL }},
{ &hf_capwap_header_flags_r,
{ "Reserved", "capwap.header.flags.r",
- FT_BOOLEAN, 9, TFS(&tfs_set_notset), 0x07,
+ FT_BOOLEAN, 24, TFS(&tfs_set_notset), 0x000007,
NULL, HFILL }},
{ &hf_capwap_header_fragment_id,
{ "Fragment ID", "capwap.header.fragment.id",
@@ -1607,11 +1623,11 @@ proto_register_capwap_control(void)
NULL, HFILL }},
{ &hf_capwap_header_fragment_offset,
{ "Fragment Offset", "capwap.header.fragment.offset",
- FT_UINT16, BASE_DEC, NULL, 0x00,
+ FT_UINT16, BASE_DEC, NULL, 0xFFF8,
NULL, HFILL }},
{ &hf_capwap_header_reserved,
{ "Reserved", "capwap.header.fragment.reserved",
- FT_UINT8, BASE_DEC, NULL, 0x00,
+ FT_UINT16, BASE_DEC, NULL, 0x0007,
NULL, HFILL }},
{ &hf_capwap_header_mac_length,
{ "MAC length", "capwap.header.mac.length",
@@ -1708,6 +1724,11 @@ proto_register_capwap_control(void)
{ "Message Element", "capwap.message_element",
FT_NONE, BASE_NONE, NULL, 0x00,
NULL, HFILL }},
+ { &hf_capwap_msg_element,
+ { "Type", "capwap.message_element",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }},
+
{ &hf_capwap_msg_element_type,
{ "Type", "capwap.message_element.type",
FT_UINT16, BASE_DEC, VALS(message_element_type_vals), 0x00,
@@ -1784,6 +1805,11 @@ proto_register_capwap_control(void)
FT_BOOLEAN, 8, TFS(&tfs_set_notset), 0xF9,
NULL, HFILL }},
+ { &hf_capwap_msg_element_type_ac_information,
+ { "AC Information", "capwap.control.message_element.ac_information",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }},
+
{ &hf_capwap_msg_element_type_ac_information_vendor,
{ "AC Information Vendor", "capwap.control.message_element.ac_information.vendor",
FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00,
@@ -1918,6 +1944,10 @@ proto_register_capwap_control(void)
FT_BYTES, BASE_NONE, NULL, 0x00,
NULL, HFILL }},
+ { &hf_capwap_msg_element_type_wtp_board_data,
+ { "WTP Board Data", "capwap.control.message_element.wtp_board_data",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }},
{ &hf_capwap_msg_element_type_wtp_board_data_vendor,
{ "WTP Board Data Vendor", "capwap.control.message_element.wtp_board_data.vendor",
FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00,
@@ -1968,18 +1998,27 @@ proto_register_capwap_control(void)
{ "Encryption Capabilities (Number)", "capwap.control.message_element.wtp_descriptor.number_encrypt",
FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }},
+ { &hf_capwap_msg_element_type_wtp_descriptor_encrypt,
+ { "Encryption Capabilities", "capwap.control.message_element.wtp_descriptor.encrypt",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }},
{ &hf_capwap_msg_element_type_wtp_descriptor_encrypt_reserved,
{ "Reserved (Encrypt)", "capwap.control.message_element.wtp_descriptor.encrypt_reserved",
- FT_UINT8, BASE_DEC, NULL, 0x00,
+ FT_UINT8, BASE_DEC, NULL, 0xE0,
NULL, HFILL }},
{ &hf_capwap_msg_element_type_wtp_descriptor_encrypt_wbid,
{ "Encrypt WBID", "capwap.control.message_element.wtp_descriptor.encrypt_wbid",
- FT_UINT8, BASE_DEC, VALS(type_wbid), 0x00,
+ FT_UINT8, BASE_DEC, VALS(type_wbid), 0x1F,
NULL, HFILL }},
{ &hf_capwap_msg_element_type_wtp_descriptor_encrypt_capabilities,
{ "Encryption Capabilities", "capwap.control.message_element.wtp_descriptor.encrypt_capabilities",
FT_UINT16, BASE_DEC, NULL, 0x00,
NULL, HFILL }},
+
+ { &hf_capwap_msg_element_type_wtp_descriptor,
+ { "WTP Descriptor", "capwap.control.message_element.wtp_descriptor",
+ FT_NONE, BASE_NONE, NULL, 0x00,
+ NULL, HFILL }},
{ &hf_capwap_msg_element_type_wtp_descriptor_vendor,
{ "WTP Descriptor Vendor", "capwap.control.message_element.wtp_descriptor.vendor",
FT_UINT32, BASE_DEC|BASE_EXT_STRING, &sminmpec_values_ext, 0x00,