aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-zbee-zdp.h
diff options
context:
space:
mode:
authorgerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-05-20 19:29:39 +0000
committergerald <gerald@f5534014-38df-0310-8fa8-9805f1628bb7>2009-05-20 19:29:39 +0000
commitb88af83b5f89dce7283b0ef8a6f2d8c008e4f579 (patch)
treecf014ea9608d08848508d6b9bc54bda8f10cc80c /epan/dissectors/packet-zbee-zdp.h
parent54cd1504535bfa852c938f1f6e0464ba1896e76f (diff)
From Owen Kirby via bug 3431:
The attached patch file adds dissectors for the ZigBee protocol stack, which runs atop the IEEE 802.15.4 dissector. Also included is the dissector for the ZigBee Encapsulation Protocol (packet-zep.c), used by the Exegin Q51 protocol analyzer. From me: Fix a bunch of gcc (the compiler, not me) warnings. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@28429 f5534014-38df-0310-8fa8-9805f1628bb7
Diffstat (limited to 'epan/dissectors/packet-zbee-zdp.h')
-rw-r--r--epan/dissectors/packet-zbee-zdp.h295
1 files changed, 295 insertions, 0 deletions
diff --git a/epan/dissectors/packet-zbee-zdp.h b/epan/dissectors/packet-zbee-zdp.h
new file mode 100644
index 0000000000..06ca2cc4f4
--- /dev/null
+++ b/epan/dissectors/packet-zbee-zdp.h
@@ -0,0 +1,295 @@
+/* packet-zbee-zdp.h
+ * Dissector routines for the ZigBee Device Profile (ZDP)
+ * By Owen Kirby <osk@exegin.com>
+ * Copyright 2009 Exegin Technologies Limited
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_ZBEE_ZDP_H
+#define PACKET_ZBEE_ZDP_H
+
+/* The Profile ID for the ZigBee Device Profile. */
+#define ZBEE_ZDP_PROFILE 0x0000
+
+/* ZDP Cluster Identifiers. */
+#define ZBEE_ZDP_REQ_NWK_ADDR 0x0000
+#define ZBEE_ZDP_REQ_IEEE_ADDR 0x0001
+#define ZBEE_ZDP_REQ_NODE_DESC 0x0002
+#define ZBEE_ZDP_REQ_POWER_DESC 0x0003
+#define ZBEE_ZDP_REQ_SIMPLE_DESC 0x0004
+#define ZBEE_ZDP_REQ_ACTIVE_EP 0x0005
+#define ZBEE_ZDP_REQ_MATCH_DESC 0x0006
+#define ZBEE_ZDP_REQ_COMPLEX_DESC 0x0010
+#define ZBEE_ZDP_REQ_USER_DESC 0x0011
+#define ZBEE_ZDP_REQ_DISCOVERY_CACHE 0x0012
+#define ZBEE_ZDP_REQ_DEVICE_ANNCE 0x0013
+#define ZBEE_ZDP_REQ_SET_USER_DESC 0x0014
+#define ZBEE_ZDP_REQ_SYSTEM_SERVER_DISC 0x0015 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_DISCOVERY 0x0016 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_NODE_DESC 0x0017 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_POWER_DESC 0x0018 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_ACTIVE_EP 0x0019 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_SIMPLE_DESC 0x001a // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_REMOVE_NODE_CACHE 0x001b // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_FIND_NODE_CACHE 0x001c // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_EXT_SIMPLE_DESC 0x001d // ZigBee 2007 & later.
+#define ZBEE_ZDP_REQ_EXT_ACTIVE_EP 0x001e // ZigBee 2007 & later.
+#define ZBEE_ZDP_REQ_END_DEVICE_BIND 0x0020
+#define ZBEE_ZDP_REQ_BIND 0x0021
+#define ZBEE_ZDP_REQ_UNBIND 0x0022
+#define ZBEE_ZDP_REQ_BIND_REGISTER 0x0023 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_REPLACE_DEVICE 0x0024 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_STORE_BAK_BIND_ENTRY 0x0025 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_REMOVE_BAK_BIND_ENTRY 0x0026 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_BACKUP_BIND_TABLE 0x0027 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_RECOVER_BIND_TABLE 0x0028 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_BACKUP_SOURCE_BIND 0x0029 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_RECOVER_SOURCE_BIND 0x002a // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_MGMT_NWK_DISC 0x0030
+#define ZBEE_ZDP_REQ_MGMT_LQI 0x0031
+#define ZBEE_ZDP_REQ_MGMT_RTG 0x0032
+#define ZBEE_ZDP_REQ_MGMT_BIND 0x0033
+#define ZBEE_ZDP_REQ_MGMT_LEAVE 0x0034
+#define ZBEE_ZDP_REQ_MGMT_DIRECT_JOIN 0x0035
+#define ZBEE_ZDP_REQ_MGMT_PERMIT_JOIN 0x0036 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_MGMT_CACHE 0x0037 // ZigBee 2006 & later.
+#define ZBEE_ZDP_REQ_MGMT_NWKUPDATE 0x0038 // ZigBee 2007 & later.
+
+#define ZBEE_ZDP_RSP_NWK_ADDR 0x8000
+#define ZBEE_ZDP_RSP_IEEE_ADDR 0x8001
+#define ZBEE_ZDP_RSP_NODE_DESC 0x8002
+#define ZBEE_ZDP_RSP_POWER_DESC 0x8003
+#define ZBEE_ZDP_RSP_SIMPLE_DESC 0x8004
+#define ZBEE_ZDP_RSP_ACTIVE_EP 0x8005
+#define ZBEE_ZDP_RSP_MATCH_DESC 0x8006
+#define ZBEE_ZDP_RSP_COMPLEX_DESC 0x8010
+#define ZBEE_ZDP_RSP_USER_DESC 0x8011
+#define ZBEE_ZDP_RSP_DISCOVERY_CACHE 0x8012
+#define ZBEE_ZDP_RSP_CONF_USER_DESC 0x8014 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_SYSTEM_SERVER_DISC 0x8015 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_DISCOVERY 0x8016 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_NODE_DESC 0x8017 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_POWER_DESC 0x8018 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_ACTIVE_EP 0x8019 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_SIMPLE_DESC 0x801a // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_REMOVE_NODE_CACHE 0x801b // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_FIND_NODE_CACHE 0x801c // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_EXT_SIMPLE_DESC 0x801d // ZigBee 2007 & later.
+#define ZBEE_ZDP_RSP_EXT_ACTIVE_EP 0x801e // ZigBee 2007 & later.
+#define ZBEE_ZDP_RSP_END_DEVICE_BIND 0x8020
+#define ZBEE_ZDP_RSP_BIND 0x8021
+#define ZBEE_ZDP_RSP_UNBIND 0x8022
+#define ZBEE_ZDP_RSP_BIND_REGISTER 0x8023 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_REPLACE_DEVICE 0x8024 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_STORE_BAK_BIND_ENTRY 0x8025 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_REMOVE_BAK_BIND_ENTRY 0x8026 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_BACKUP_BIND_TABLE 0x8027 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_RECOVER_BIND_TABLE 0x8028 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_BACKUP_SOURCE_BIND 0x8029 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_RECOVER_SOURCE_BIND 0x802a // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_MGMT_NWK_DISC 0x8030
+#define ZBEE_ZDP_RSP_MGMT_LQI 0x8031
+#define ZBEE_ZDP_RSP_MGMT_RTG 0x8032
+#define ZBEE_ZDP_RSP_MGMT_BIND 0x8033
+#define ZBEE_ZDP_RSP_MGMT_LEAVE 0x8034
+#define ZBEE_ZDP_RSP_MGMT_DIRECT_JOIN 0x8035
+#define ZBEE_ZDP_RSP_MGMT_PERMIT_JOIN 0x8036 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_MGMT_CACHE 0x8037 // ZigBee 2006 & later.
+#define ZBEE_ZDP_RSP_MGMT_NWKUPDATE 0x8038 // ZigBee 2007 & later.
+
+#define ZBEE_ZDP_MSG_RESPONSE_BIT 0x8000
+#define ZBEE_ZDP_MSG_MASK (ZBEE_ZDP_MSG_RESPONSE_BIT-1)
+#define ZBEE_ZDP_MSG_RESPONSE_BIT_2003 0x0080
+#define ZBEE_ZDP_MSG_MASK_2003 (ZBEE_ZDP_MSG_RESPONSE_BIT_2003-1)
+
+#define ZBEE_ZDP_STATUS_SUCCESS 0x00
+#define ZBEE_ZDP_STATUS_INV_REQUESTTYPE 0x80
+#define ZBEE_ZDP_STATUS_DEVICE_NOT_FOUND 0x81
+#define ZBEE_ZDP_STATUS_INVALID_EP 0x82
+#define ZBEE_ZDP_STATUS_NOT_ACTIVE 0x83
+#define ZBEE_ZDP_STATUS_NOT_SUPPORTED 0x84
+#define ZBEE_ZDP_STATUS_TIMEOUT 0x85
+#define ZBEE_ZDP_STATUS_NO_MATCH 0x86
+#define ZBEE_ZDP_STATUS_NO_ENTRY 0x88
+#define ZBEE_ZDP_STATUS_NO_DESCRIPTOR 0x89
+#define ZBEE_ZDP_STATUS_INSUFFICIENT_SPACE 0x8a
+#define ZBEE_ZDP_STATUS_NOT_PERMITTED 0x8b
+#define ZBEE_ZDP_STATUS_TABLE_FULL 0x8c
+
+#define ZBEE_ZDP_REQ_TYPE_SINGLE 0x00
+#define ZBEE_ZDP_REQ_TYPE_EXTENDED 0x01
+
+#define ZBEE_ZDP_NODE_TYPE 0x0007
+#define ZBEE_ZDP_NODE_TYPE_COORD 0x0000
+#define ZBEE_ZDP_NODE_TYPE_FFD 0x0001
+#define ZBEE_ZDP_NODE_TYPE_RFD 0x0002
+#define ZBEE_ZDP_NODE_COMPLEX 0x0008
+#define ZBEE_ZDP_NODE_USER 0x0010
+#define ZBEE_ZDP_NODE_APS 0x0700
+#define ZBEE_ZDP_NODE_FREQ 0xf800
+#define ZBEE_ZDP_NODE_FREQ_868MHZ 0x0800
+#define ZBEE_ZDP_NODE_FREQ_900MHZ 0x2000
+#define ZBEE_ZDP_NODE_FREQ_2400MHZ 0x4000
+
+#define ZBEE_ZDP_NODE_SERVER_PRIMARY_TRUST 0x0001
+#define ZBEE_ZDP_NODE_SERVER_BACKUP_TRUST 0x0002
+#define ZBEE_ZDP_NODE_SERVER_PRIMARY_BIND 0x0004
+#define ZBEE_ZDP_NODE_SERVER_BACKUP_BIND 0x0008
+#define ZBEE_ZDP_NODE_SERVER_PRIMARY_DISC 0x0010
+#define ZBEE_ZDP_NODE_SERVER_BACKUP_DISC 0x0020
+
+#define ZBEE_ZDP_POWER_MODE 0x000f
+#define ZBEE_ZDP_POWER_MODE_RX_ON 0x0000
+#define ZBEE_ZDP_POWER_MODE_RX_PERIODIC 0x0001
+#define ZBEE_ZDP_POWER_MODE_RX_STIMULATE 0x0002
+#define ZBEE_ZDP_POWER_AVAIL 0x00f0
+#define ZBEE_ZDP_POWER_AVAIL_AC 0x0010
+#define ZBEE_ZDP_POWER_AVAIL_RECHARGEABLE 0x0020
+#define ZBEE_ZDP_POWER_AVAIL_DISPOSEABLE 0x0040
+#define ZBEE_ZDP_POWER_SOURCE 0x0f00
+#define ZBEE_ZDP_POWER_SOURCE_AC 0x0100
+#define ZBEE_ZDP_POWER_SOURCE_RECHARGEABLE 0x0200
+#define ZBEE_ZDP_POWER_SOURCE_DISPOSEABLE 0x0400
+#define ZBEE_ZDP_POWER_LEVEL 0xf000
+#define ZBEE_ZDP_POWER_LEVEL_FULL 0xc000
+#define ZBEE_ZDP_POWER_LEVEL_OK 0x8000
+#define ZBEE_ZDP_POWER_LEVEL_LOW 0x4000
+#define ZBEE_ZDP_POWER_LEVEL_CRITICAL 0x0000
+
+#define ZBEE_ZDP_ADDR_MODE_GROUP 0x01
+#define ZBEE_ZDP_ADDR_MODE_UNICAST 0x03
+
+#define ZBEE_ZDP_MGMT_LEAVE_CHILDREN 0x80
+#define ZBEE_ZDP_MGMT_LEAVE_REJOIN 0x40
+
+#define ZBEE_ZDP_NWKUPDATE_SCAN_MAX 0x05
+#define ZBEE_ZDP_NWKUPDATE_CHANNEL_HOP 0xfe
+#define ZBEE_ZDP_NWKUPDATE_PARAMETERS 0xff
+
+/**************************************
+ * Field Indicies
+ **************************************
+ */
+/* General indicies. */
+extern int hf_zbee_zdp_ext_addr;
+extern int hf_zbee_zdp_device;
+extern int hf_zbee_zdp_req_type;
+extern int hf_zbee_zdp_index;
+extern int hf_zbee_zdp_status;
+extern int hf_zbee_zdp_ep_count;
+extern int hf_zbee_zdp_endpoint;
+extern int hf_zbee_zdp_profile;
+extern int hf_zbee_zdp_cluster;
+extern int hf_zbee_zdp_addr_mode;
+extern int hf_zbee_zdp_in_count;
+extern int hf_zbee_zdp_out_count;
+extern int hf_zbee_zdp_in_cluster;
+extern int hf_zbee_zdp_out_cluster;
+extern int hf_zbee_zdp_table_size;
+extern int hf_zbee_zdp_table_count;
+extern int hf_zbee_zdp_assoc_device_count;
+extern int hf_zbee_zdp_assoc_device;
+
+/* Discovery indicies. */
+extern int hf_zbee_zdp_cache;
+extern int hf_zbee_zdp_disc_node_size;
+extern int hf_zbee_zdp_disc_power_size;
+extern int hf_zbee_zdp_disc_ep_count;
+extern int hf_zbee_zdp_disc_simple_count;
+extern int hf_zbee_zdp_disc_simple_size;
+
+/* Descriptor indicies. */
+extern int hf_zbee_zdp_complex_length;
+extern int hf_zbee_zdp_user;
+extern int hf_zbee_zdp_user_length;
+extern int hf_zbee_zdp_simple_length;
+
+/* Binding indicies. */
+extern int hf_zbee_zdp_target;
+extern int hf_zbee_zdp_target64;
+extern int hf_zbee_zdp_target_ep;
+extern int hf_zbee_zdp_replacement;
+extern int hf_zbee_zdp_replacement_ep;
+extern int hf_zbee_zdp_bind_src;
+extern int hf_zbee_zdp_bind_src64;
+extern int hf_zbee_zdp_bind_src_ep;
+extern int hf_zbee_zdp_bind_dst;
+extern int hf_zbee_zdp_bind_dst64;
+extern int hf_zbee_zdp_bind_dst_ep;
+
+/* Network Management indicies. */
+extern int hf_zbee_zdp_duration;
+extern int hf_zbee_zdp_leave_children;
+extern int hf_zbee_zdp_leave_rejoin;
+extern int hf_zbee_zdp_significance;
+extern int hf_zbee_zdp_scan_count;
+extern int hf_zbee_zdp_update_id;
+extern int hf_zbee_zdp_manager;
+extern int hf_zbee_zdp_tx_total;
+extern int hf_zbee_zdp_tx_fail;
+extern int hf_zbee_zdp_channel_count;
+
+/* Subtree indicies. */
+extern gint ett_zbee_zdp_endpoint;
+extern gint ett_zbee_zdp_match_in;
+extern gint ett_zbee_zdp_match_out;
+extern gint ett_zbee_zdp_node;
+extern gint ett_zbee_zdp_node_in;
+extern gint ett_zbee_zdp_node_out;
+extern gint ett_zbee_zdp_power;
+extern gint ett_zbee_zdp_simple;
+extern gint ett_zbee_zdp_complex;
+extern gint ett_zbee_zdp_cinfo;
+extern gint ett_zbee_zdp_server;
+extern gint ett_zbee_zdp_simple_sizes;
+extern gint ett_zbee_zdp_bind;
+extern gint ett_zbee_zdp_bind_end_in;
+extern gint ett_zbee_zdp_bind_end_out;
+extern gint ett_zbee_zdp_bind_source;
+extern gint ett_zbee_zdp_channels;
+extern gint ett_zbee_zdp_assoc_device;
+extern gint ett_zbee_zdp_nwk;
+extern gint ett_zbee_zdp_lqi;
+extern gint ett_zbee_zdp_rtg;
+extern gint ett_zbee_zdp_cache;
+
+/**************************************
+ * Helper Functions
+ **************************************
+ */
+extern const gchar *zdp_status_name (guint8 status);
+extern void zdp_dump_excess (tvbuff_t *tvb, guint offset, packet_info *pinfo, proto_tree *tree);
+extern guint zbee_parse_uint (proto_tree *tree, int hfindex, tvbuff_t *tvb, guint *offset, guint length, proto_item **ti);
+extern guint64 zbee_parse_eui64 (proto_tree *tree, int hfindex, tvbuff_t *tvb, guint *offset, guint length, proto_item **ti);
+extern void zbee_append_info (proto_item *item, packet_info *pinfo, const gchar *format, ...) GNUC_FORMAT_CHECK(printf, 3, 4);
+
+extern void zdp_parse_node_desc (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, packet_info *pinfo);
+extern void zdp_parse_power_desc (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset);
+extern void zdp_parse_simple_desc (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, packet_info *pinfo);
+extern void zdp_parse_complex_desc (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, guint length);
+
+extern guint8 zdp_parse_status (proto_tree *tree, tvbuff_t *tvb, guint *offset);
+extern guint32 zdp_parse_chanmask (proto_tree *tree, tvbuff_t *tvb, guint *offset);
+extern guint8 zdp_parse_cinfo (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset);
+extern guint16 zdp_parse_server_flags (proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset);
+
+#endif /* PACKET_ZBEE_ZDP_H */