diff options
author | Chris Brandson <chris.brandson@gmail.com> | 2014-11-07 14:11:02 -0800 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-12-17 11:53:26 +0000 |
commit | df639f509e812fff3c5eb4bdf4f77988c6ec122b (patch) | |
tree | 2d6733280c8596f2dfacc878c878b469d301428f /epan/dissectors/packet-zbee-zcl.h | |
parent | c5b720708e75562d1b8676fd5ab75f9d7b338652 (diff) |
Fixed bug in ZigBee (zbee) decryption, added Key Establishment cluster and moved IAS, Thermostat and Poll clusters out of the ZCL foundation dissector.
Removed attrID and cmdID ZCL cluster functions.
Bug in ZCL HVAC attribute registration.
Fixed bug in ZCL command ID field registration.
Update Manufacturer Codes and Profile Ids to ZigBee-053874r26 Oct 2014
Fixed broken fragmented ZigBee packet collection and reassembly
Use protocol fields for Thermostat schedule transitions.
Added support for Key Establishment Cluster (CBKE) at SE 1.2a
Updated Message cluster to SE 1.2a spec
Added attribute reporting status which is common to all SE 1.2a clusters
Added SE 1.2a tunnel cluster support
ZigBee Smart Energy (SE) decryption appears to have been broken for some time. For SE you do not know the Link Key until after successful completion of Key Establishment and then manually enter it into preferences. Entry in preferences was broken such that when the new Link Key was entered all existing link keys would be lost. This lead to the loss of the Network Key as well when the Transport Key message was re-processed without the Pre-Configured Link Key. The Link Key 'key ring' has been moved to the UAT post-update callback so that it will always be updated correctly after changes to the link keys in preferences
The attribute reporting status attribute which is common to all SE clusters was accidentally shared, now each cluster has it's own instance
ZigBee security added key display for decrypted packets
ZigBee Security Preferences fixed UAT type for Label so key label is editable again
Added definition for Retail Service profile
Added dissection for profile-wide (General Command Frame) commands when the profile is unknown
Added zbee-zcl-misc.c to precommit check whitelist as it contains ias and hvac clusters avoiding proliferation of too many small files
Change-Id: I53d85ba9d782db6a0e7e78c51b0bc7cdcdbca3ad
Reviewed-on: https://code.wireshark.org/review/5565
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-zbee-zcl.h')
-rw-r--r-- | epan/dissectors/packet-zbee-zcl.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/epan/dissectors/packet-zbee-zcl.h b/epan/dissectors/packet-zbee-zcl.h index 626db333e0..4672457b63 100644 --- a/epan/dissectors/packet-zbee-zcl.h +++ b/epan/dissectors/packet-zbee-zcl.h @@ -133,7 +133,7 @@ typedef struct{ /* ZCL Miscellaneous */ #define ZBEE_ZCL_INVALID_STR_LENGTH 0xff #define ZBEE_ZCL_INVALID_LONG_STR_LENGTH 0xffff -#define ZBEE_ZCL_NUM_INDIVIDUAL_ETT 9 +#define ZBEE_ZCL_NUM_INDIVIDUAL_ETT 2 #define ZBEE_ZCL_NUM_ATTR_ETT 64 #define ZBEE_ZCL_NUM_ARRAY_ELEM_ETT 16 #define ZBEE_ZCL_NUM_TOTAL_ETT (ZBEE_ZCL_NUM_INDIVIDUAL_ETT + ZBEE_ZCL_NUM_ATTR_ETT + ZBEE_ZCL_NUM_ARRAY_ELEM_ETT) @@ -181,19 +181,18 @@ typedef struct{ #define MONTHS_PER_YEAR 12 #define YEAR_OFFSET 1900 -typedef void (*zbee_zcl_fn_attr_id) (proto_tree *tree, tvbuff_t *tvb, guint *offset); -typedef void (*zbee_zcl_fn_attr_data) (proto_tree *tree, tvbuff_t *tvb, guint *offset, guint16 attr_id, guint data_type); -typedef void (*zbee_zcl_fn_cmd_id) (proto_tree *tree, tvbuff_t *tvb, guint *offset, guint8 dir); +typedef void (*zbee_zcl_fn_attr_data)(proto_tree *tree, tvbuff_t *tvb, guint *offset, guint16 attr_id, guint data_type); typedef struct _zbee_zcl_cluster_desc { int proto_id; protocol_t *proto; const char *name; int ett; + int hf_attr_id; + int hf_cmd_rx_id; + int hf_cmd_tx_id; guint16 cluster_id; - zbee_zcl_fn_attr_id fn_attr_id; zbee_zcl_fn_attr_data fn_attr_data; - zbee_zcl_fn_cmd_id fn_cmd_id; } zbee_zcl_cluster_desc; extern const value_string zbee_zcl_short_data_type_names[]; @@ -209,7 +208,7 @@ extern void dissect_zcl_read_attr_resp (tvbuff_t *tvb, packet_info *pinfo, proto void decode_zcl_time_in_seconds (gchar *s, guint16 value); void decode_zcl_time_in_minutes (gchar *s, guint16 value); void dissect_zcl_attr_data (tvbuff_t *tvb, proto_tree *tree, guint *offset, guint data_type); -void zbee_zcl_init_cluster(int proto, gint ett, guint16 cluster_id, zbee_zcl_fn_attr_id fn_attr_id, zbee_zcl_fn_attr_data fn_attr_data, zbee_zcl_fn_cmd_id fn_cmd_id); +void zbee_zcl_init_cluster(int proto, gint ett, guint16 cluster_id, int hf_attr_id, int hf_cmd_rx_id, int hf_cmd_tx_id, zbee_zcl_fn_attr_data fn_attr_data); zbee_zcl_cluster_desc *zbee_zcl_get_cluster_desc(guint16 cluster_id); /* Cluster-specific commands and parameters */ |