Added expert info to mark depreciated Zigbee ZDO commands and made
dissection of ZDO responses with a status other than SUCCESS more lenient, i.e. dissect what is possible and avoid reporting malformed
This commit is contained in:
parent
a714805628
commit
8e97359883
|
@ -589,23 +589,24 @@ dissect_zbee_zdp_rsp_bind_register(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
{
|
||||
proto_tree *field_tree = NULL;
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
/*guint16 table_size;*/
|
||||
guint32 i, table_count;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_zbee_zdp_bind, NULL, "Binding List");
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_zbee_zdp_bind, NULL, "Binding List");
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
zdp_parse_bind_table_entry(field_tree, tvb, &offset, version);
|
||||
} /* for */
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
zdp_parse_bind_table_entry(field_tree, tvb, &offset, version);
|
||||
} /* for */
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
|
@ -627,7 +628,6 @@ dissect_zbee_zdp_rsp_replace_device(tvbuff_t *tvb, packet_info *pinfo, proto_tre
|
|||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -648,7 +648,6 @@ dissect_zbee_zdp_rsp_store_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pro
|
|||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -669,7 +668,6 @@ dissect_zbee_zdp_rsp_remove_bak_bind_entry(tvbuff_t *tvb, packet_info *pinfo, pr
|
|||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -690,8 +688,11 @@ dissect_zbee_zdp_rsp_backup_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto_
|
|||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
}
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
|
@ -711,24 +712,25 @@ dissect_zbee_zdp_rsp_recover_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
{
|
||||
proto_tree *field_tree = NULL;
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
guint32 i, table_count;
|
||||
|
||||
guint8 status;
|
||||
guint32 i, table_count;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_zbee_zdp_bind, NULL, "Binding Table");
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_zbee_zdp_bind, NULL, "Binding Table");
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
zdp_parse_bind_table_entry(field_tree, tvb, &offset, version);
|
||||
} /* for */
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
zdp_parse_bind_table_entry(field_tree, tvb, &offset, version);
|
||||
} /* for */
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
|
@ -746,11 +748,10 @@ dissect_zbee_zdp_rsp_recover_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
void
|
||||
dissect_zbee_zdp_rsp_backup_source_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -769,25 +770,27 @@ dissect_zbee_zdp_rsp_recover_source_bind(tvbuff_t *tvb, packet_info *pinfo, prot
|
|||
{
|
||||
proto_tree *field_tree = NULL;
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
guint32 i, table_count;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, table_count * (int)sizeof(guint64),
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_table_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_index, tvb, offset, 2, ENC_LITTLE_ENDIAN);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_table_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &table_count);
|
||||
offset += 2;
|
||||
|
||||
if (tree && table_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, table_count * (int)sizeof(guint64),
|
||||
ett_zbee_zdp_bind_source, NULL, "Source Table");
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
(void)zbee_parse_eui64(field_tree, hf_zbee_zdp_bind_src64, tvb, &offset, (int)sizeof(guint64), NULL);
|
||||
} /* for */
|
||||
}
|
||||
for (i=0; i<table_count; i++) {
|
||||
(void)zbee_parse_eui64(field_tree, hf_zbee_zdp_bind_src64, tvb, &offset, (int)sizeof(guint64), NULL);
|
||||
} /* for */
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
|
|
|
@ -966,21 +966,28 @@ dissect_zbee_zdp_rsp_complex_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
guint8 status;
|
||||
guint32 device, length;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_complex_length, tvb, offset, 1, ENC_LITTLE_ENDIAN, &length);
|
||||
offset += 1;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
if (length) {
|
||||
zdp_parse_complex_desc(tree, -1, tvb, &offset, length);
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
offset += 2;
|
||||
}
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 1))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_complex_length, tvb, offset, 1, ENC_LITTLE_ENDIAN, &length);
|
||||
offset += 1;
|
||||
|
||||
if (length) {
|
||||
zdp_parse_complex_desc(tree, -1, tvb, &offset, length);
|
||||
}
|
||||
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
zdp_dump_excess(tvb, offset, pinfo, tree);
|
||||
}
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
zdp_dump_excess(tvb, offset, pinfo, tree);
|
||||
} /* dissect_zbee_zdp_rsp_complex_desc */
|
||||
|
||||
/**
|
||||
|
@ -998,9 +1005,12 @@ dissect_zbee_zdp_rsp_user_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
|
|||
guint32 device, user_length;
|
||||
gchar *user;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
offset += 2;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
offset += 2;
|
||||
}
|
||||
if ((version >= ZBEE_VERSION_2007) || (status == ZBEE_ZDP_STATUS_SUCCESS)) {
|
||||
/* In ZigBee 2003 & earlier, the length field is omitted if not successful. */
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_user_length, tvb, offset, 1, ENC_LITTLE_ENDIAN, &user_length);
|
||||
|
@ -1008,13 +1018,12 @@ dissect_zbee_zdp_rsp_user_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr
|
|||
}
|
||||
else user_length = 0;
|
||||
|
||||
user = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, user_length, ENC_ASCII);
|
||||
user = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, user_length, ENC_ASCII);
|
||||
if (tree) {
|
||||
proto_tree_add_string(tree, hf_zbee_zdp_user, tvb, offset, user_length, user);
|
||||
}
|
||||
offset += user_length;
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
if (status == ZBEE_ZDP_STATUS_SUCCESS) {
|
||||
zbee_append_info(tree, pinfo, ", Desc: \'%s\'", user);
|
||||
}
|
||||
|
@ -1038,14 +1047,16 @@ dissect_zbee_zdp_rsp_user_desc_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tre
|
|||
guint8 status;
|
||||
guint32 device = 0;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
if (version >= ZBEE_VERSION_2007) {
|
||||
/* Device address present only on ZigBee 2006 & later. */
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
offset += 2;
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
/* Device address present only on ZigBee 2006 & later. */
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
offset += 2;
|
||||
}
|
||||
}
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1062,12 +1073,10 @@ dissect_zbee_zdp_rsp_user_desc_conf(tvbuff_t *tvb, packet_info *pinfo, proto_tre
|
|||
void
|
||||
dissect_zbee_zdp_rsp_discovery_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1084,13 +1093,14 @@ dissect_zbee_zdp_rsp_discovery_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
void
|
||||
dissect_zbee_zdp_rsp_system_server_disc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
/*guint16 server;*/
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
/*server =*/ zdp_parse_server_flags(tree, ett_zbee_zdp_server, tvb, &offset);
|
||||
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
zdp_parse_server_flags(tree, ett_zbee_zdp_server, tvb, &offset);
|
||||
}
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
|
@ -1108,12 +1118,10 @@ dissect_zbee_zdp_rsp_system_server_disc(tvbuff_t *tvb, packet_info *pinfo, proto
|
|||
void
|
||||
dissect_zbee_zdp_rsp_discovery_store(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1130,12 +1138,10 @@ dissect_zbee_zdp_rsp_discovery_store(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
void
|
||||
dissect_zbee_zdp_rsp_store_node_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1152,12 +1158,10 @@ dissect_zbee_zdp_rsp_store_node_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
void
|
||||
dissect_zbee_zdp_rsp_store_power_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1174,12 +1178,10 @@ dissect_zbee_zdp_rsp_store_power_desc(tvbuff_t *tvb, packet_info *pinfo, proto_t
|
|||
void
|
||||
dissect_zbee_zdp_rsp_store_active_ep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1196,12 +1198,10 @@ dissect_zbee_zdp_rsp_store_active_ep(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
void
|
||||
dissect_zbee_zdp_rsp_store_simple_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1218,12 +1218,10 @@ dissect_zbee_zdp_rsp_store_simple_desc(tvbuff_t *tvb, packet_info *pinfo, proto_
|
|||
void
|
||||
dissect_zbee_zdp_rsp_remove_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
guint offset = 0;
|
||||
guint8 status;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1240,10 +1238,10 @@ dissect_zbee_zdp_rsp_remove_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_
|
|||
void
|
||||
dissect_zbee_zdp_rsp_find_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
guint offset = 0;
|
||||
|
||||
guint32 device, cache;
|
||||
guint offset = 0;
|
||||
guint32 device, cache;
|
||||
|
||||
/* Find Node Cache does NOT start with status */
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_cache, tvb, offset, 2, ENC_LITTLE_ENDIAN, &cache);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
|
@ -1267,39 +1265,42 @@ dissect_zbee_zdp_rsp_find_node_cache(tvbuff_t *tvb, packet_info *pinfo, proto_tr
|
|||
void
|
||||
dissect_zbee_zdp_rsp_ext_simple_desc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
|
||||
{
|
||||
proto_item *ti;
|
||||
proto_item *ti;
|
||||
guint offset = 0;
|
||||
guint i;
|
||||
guint sizeof_cluster = (int)sizeof(guint16);
|
||||
|
||||
guint8 status;
|
||||
guint32 device, cluster, in_count, out_count, idx;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
offset += 2;
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_endpoint, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_in_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &in_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_out_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &out_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_index, tvb, offset, 1, ENC_LITTLE_ENDIAN, &idx);
|
||||
offset += 1;
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
offset += 2;
|
||||
}
|
||||
|
||||
/* Display the input cluster list. */
|
||||
for (i=idx; (i<in_count) && tvb_bytes_exist(tvb, offset, sizeof_cluster); i++) {
|
||||
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_in_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
|
||||
offset += sizeof_cluster;
|
||||
proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
|
||||
} /* for */
|
||||
for (i-=in_count; (i<out_count) && tvb_bytes_exist(tvb, offset, sizeof_cluster); i++) {
|
||||
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_out_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
|
||||
offset += sizeof_cluster;
|
||||
proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
|
||||
} /* for */
|
||||
if (status == ZBEE_ZDP_STATUS_SUCCESS) {
|
||||
proto_tree_add_item(tree, hf_zbee_zdp_endpoint, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_in_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &in_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_out_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &out_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_index, tvb, offset, 1, ENC_LITTLE_ENDIAN, &idx);
|
||||
offset += 1;
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
/* Display the input cluster list. */
|
||||
for (i=idx; (i<in_count) && tvb_bytes_exist(tvb, offset, sizeof_cluster); i++) {
|
||||
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_in_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
|
||||
offset += sizeof_cluster;
|
||||
proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
|
||||
} /* for */
|
||||
for (i-=in_count; (i<out_count) && tvb_bytes_exist(tvb, offset, sizeof_cluster); i++) {
|
||||
ti = proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_out_cluster, tvb, offset, sizeof_cluster, ENC_LITTLE_ENDIAN, &cluster);
|
||||
offset += sizeof_cluster;
|
||||
proto_item_append_text(ti, " (%s)", rval_to_str(cluster, zbee_aps_cid_names, "Unknown Cluster"));
|
||||
} /* for */
|
||||
}
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
@ -1324,23 +1325,29 @@ dissect_zbee_zdp_rsp_ext_active_ep(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
|||
guint32 device, ep_count, idx;
|
||||
|
||||
status = zdp_parse_status(tree, tvb, &offset);
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
offset += 2;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_ep_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &ep_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_index, tvb, offset, 1, ENC_LITTLE_ENDIAN, &idx);
|
||||
offset += 1;
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 2))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_nwk_addr, tvb, offset, 2, ENC_LITTLE_ENDIAN, &device);
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
offset += 2;
|
||||
}
|
||||
|
||||
if (tree && ep_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, ep_count*(int)sizeof(guint8),
|
||||
/* on success require both, when unsuccessful okay to skip both but not just one */
|
||||
if ((status == ZBEE_ZDP_STATUS_SUCCESS) || (tvb_bytes_exist(tvb, offset, 1))) {
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_ep_count, tvb, offset, 1, ENC_LITTLE_ENDIAN, &ep_count);
|
||||
offset += 1;
|
||||
proto_tree_add_item_ret_uint(tree, hf_zbee_zdp_index, tvb, offset, 1, ENC_LITTLE_ENDIAN, &idx);
|
||||
offset += 1;
|
||||
|
||||
if (tree && ep_count) {
|
||||
field_tree = proto_tree_add_subtree(tree, tvb, offset, ep_count*(int)sizeof(guint8),
|
||||
ett_zbee_zdp_endpoint, NULL, "Active Endpoint List");
|
||||
for (i=idx; (i<ep_count) && tvb_bytes_exist(tvb, offset, (int)sizeof(guint8)); i++) {
|
||||
proto_tree_add_item(field_tree, hf_zbee_zdp_endpoint, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
for (i=idx; (i<ep_count) && tvb_bytes_exist(tvb, offset, (int)sizeof(guint8)); i++) {
|
||||
proto_tree_add_item(field_tree, hf_zbee_zdp_endpoint, tvb, offset, 1, ENC_LITTLE_ENDIAN);
|
||||
offset += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zbee_append_info(tree, pinfo, ", Nwk Addr: 0x%04x", device);
|
||||
zbee_append_info(tree, pinfo, ", Status: %s", zdp_status_name(status));
|
||||
|
||||
/* Dump any leftover bytes. */
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "config.h"
|
||||
|
||||
#include <epan/packet.h>
|
||||
#include <epan/expert.h>
|
||||
#include <wsutil/bits_ctz.h>
|
||||
|
||||
#include "packet-zbee.h"
|
||||
|
@ -223,6 +224,9 @@ static gint ett_zbee_zdp_bind_table = -1;
|
|||
gint ett_zbee_zdp_table_entry = -1;
|
||||
static gint ett_zbee_zdp_descriptor_capability_field = -1;
|
||||
|
||||
/* Expert Info */
|
||||
static expert_field ei_deprecated_command = EI_INIT;
|
||||
|
||||
/**************************************
|
||||
* Value Strings
|
||||
**************************************
|
||||
|
@ -974,7 +978,7 @@ zdp_parse_complex_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *of
|
|||
lang_str[2] = '\0';
|
||||
|
||||
g_snprintf(complex, max_len, "<%s>%s, %s</%s>", tag_name[tag_charset], lang_str, charset_str, tag_name[tag_charset]);
|
||||
}
|
||||
}
|
||||
else if (tag == tag_icon) {
|
||||
/* TODO: */
|
||||
g_snprintf(complex, max_len, "<%s>FixMe</%s>", tag_name[tag_icon], tag_name[tag_icon]);
|
||||
|
@ -1075,54 +1079,68 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_REQ_COMPLEX_DESC:
|
||||
dissect_zbee_zdp_req_complex_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_USER_DESC:
|
||||
dissect_zbee_zdp_req_user_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_DISCOVERY_CACHE:
|
||||
dissect_zbee_zdp_req_discovery_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_DEVICE_ANNCE:
|
||||
dissect_zbee_zdp_device_annce(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_SET_USER_DESC:
|
||||
dissect_zbee_zdp_req_set_user_desc(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_SYSTEM_SERVER_DISC:
|
||||
dissect_zbee_zdp_req_system_server_disc(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_DISCOVERY:
|
||||
dissect_zbee_zdp_req_store_discovery(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_NODE_DESC:
|
||||
dissect_zbee_zdp_req_store_node_desc(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_POWER_DESC:
|
||||
dissect_zbee_zdp_req_store_power_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_ACTIVE_EP:
|
||||
dissect_zbee_zdp_req_store_active_ep(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_SIMPLE_DESC:
|
||||
dissect_zbee_zdp_req_store_simple_desc(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_REMOVE_NODE_CACHE:
|
||||
dissect_zbee_zdp_req_remove_node_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_FIND_NODE_CACHE:
|
||||
dissect_zbee_zdp_req_find_node_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_EXT_SIMPLE_DESC:
|
||||
dissect_zbee_zdp_req_ext_simple_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_EXT_ACTIVE_EP:
|
||||
dissect_zbee_zdp_req_ext_active_ep(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_PARENT_ANNCE:
|
||||
dissect_zbee_zdp_parent_annce(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_END_DEVICE_BIND:
|
||||
dissect_zbee_zdp_req_end_device_bind(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_BIND:
|
||||
dissect_zbee_zdp_req_bind(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
|
@ -1132,27 +1150,35 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_REQ_BIND_REGISTER:
|
||||
dissect_zbee_zdp_req_bind_register(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_REPLACE_DEVICE:
|
||||
dissect_zbee_zdp_req_replace_device(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_STORE_BAK_BIND_ENTRY:
|
||||
dissect_zbee_zdp_req_store_bak_bind_entry(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_REMOVE_BAK_BIND_ENTRY:
|
||||
dissect_zbee_zdp_req_remove_bak_bind_entry(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_BACKUP_BIND_TABLE:
|
||||
dissect_zbee_zdp_req_backup_bind_table(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_RECOVER_BIND_TABLE:
|
||||
dissect_zbee_zdp_req_recover_bind_table(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_BACKUP_SOURCE_BIND:
|
||||
dissect_zbee_zdp_req_backup_source_bind(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_RECOVER_SOURCE_BIND:
|
||||
dissect_zbee_zdp_req_recover_source_bind(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_MGMT_NWK_DISC:
|
||||
dissect_zbee_zdp_req_mgmt_nwk_disc(zdp_tvb, pinfo, zdp_tree, hf_zbee_zdp_scan_channel);
|
||||
|
@ -1171,12 +1197,14 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_REQ_MGMT_DIRECT_JOIN:
|
||||
dissect_zbee_zdp_req_mgmt_direct_join(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_MGMT_PERMIT_JOIN:
|
||||
dissect_zbee_zdp_req_mgmt_permit_join(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_MGMT_CACHE:
|
||||
dissect_zbee_zdp_req_mgmt_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_REQ_MGMT_NWKUPDATE:
|
||||
dissect_zbee_zdp_req_mgmt_nwkupdate(zdp_tvb, pinfo, zdp_tree);
|
||||
|
@ -1210,45 +1238,58 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_RSP_COMPLEX_DESC:
|
||||
dissect_zbee_zdp_rsp_complex_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_USER_DESC:
|
||||
dissect_zbee_zdp_rsp_user_desc(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_DISCOVERY_CACHE:
|
||||
dissect_zbee_zdp_rsp_discovery_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_CONF_USER_DESC:
|
||||
dissect_zbee_zdp_rsp_user_desc_conf(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_SYSTEM_SERVER_DISC:
|
||||
dissect_zbee_zdp_rsp_system_server_disc(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_DISCOVERY:
|
||||
dissect_zbee_zdp_rsp_discovery_store(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_NODE_DESC:
|
||||
dissect_zbee_zdp_rsp_store_node_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_POWER_DESC:
|
||||
dissect_zbee_zdp_rsp_store_power_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_ACTIVE_EP:
|
||||
dissect_zbee_zdp_rsp_store_active_ep(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_SIMPLE_DESC:
|
||||
dissect_zbee_zdp_rsp_store_simple_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_REMOVE_NODE_CACHE:
|
||||
dissect_zbee_zdp_rsp_remove_node_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_FIND_NODE_CACHE:
|
||||
dissect_zbee_zdp_rsp_find_node_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_EXT_SIMPLE_DESC:
|
||||
dissect_zbee_zdp_rsp_ext_simple_desc(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_EXT_ACTIVE_EP:
|
||||
dissect_zbee_zdp_rsp_ext_active_ep(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_PARENT_ANNCE:
|
||||
dissect_zbee_zdp_rsp_parent_annce(zdp_tvb, pinfo, zdp_tree);
|
||||
|
@ -1264,27 +1305,35 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_RSP_BIND_REGISTER:
|
||||
dissect_zbee_zdp_rsp_bind_register(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_REPLACE_DEVICE:
|
||||
dissect_zbee_zdp_rsp_replace_device(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_STORE_BAK_BIND_ENTRY:
|
||||
dissect_zbee_zdp_rsp_store_bak_bind_entry(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_REMOVE_BAK_BIND_ENTRY:
|
||||
dissect_zbee_zdp_rsp_remove_bak_bind_entry(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_BACKUP_BIND_TABLE:
|
||||
dissect_zbee_zdp_rsp_backup_bind_table(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_RECOVER_BIND_TABLE:
|
||||
dissect_zbee_zdp_rsp_recover_bind_table(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_BACKUP_SOURCE_BIND:
|
||||
dissect_zbee_zdp_rsp_backup_source_bind(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_RECOVER_SOURCE_BIND:
|
||||
dissect_zbee_zdp_rsp_recover_source_bind(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_MGMT_NWK_DISC:
|
||||
dissect_zbee_zdp_rsp_mgmt_nwk_disc(zdp_tvb, pinfo, zdp_tree, nwk->version);
|
||||
|
@ -1303,12 +1352,14 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
|
|||
break;
|
||||
case ZBEE_ZDP_RSP_MGMT_DIRECT_JOIN:
|
||||
dissect_zbee_zdp_rsp_mgmt_direct_join(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_MGMT_PERMIT_JOIN:
|
||||
dissect_zbee_zdp_rsp_mgmt_permit_join(zdp_tvb, pinfo, zdp_tree);
|
||||
break;
|
||||
case ZBEE_ZDP_RSP_MGMT_CACHE:
|
||||
dissect_zbee_zdp_rsp_mgmt_cache(zdp_tvb, pinfo, zdp_tree);
|
||||
expert_add_info(pinfo, zdp_tree, &ei_deprecated_command);
|
||||
break;
|
||||
case ZBEE_ZDP_NOT_MGMT_NWKUPDATE:
|
||||
case ZBEE_ZDP_NOT_MGMT_NWKUPDATE_ENH:
|
||||
|
@ -1889,10 +1940,22 @@ void proto_register_zbee_zdp(void)
|
|||
&ett_zbee_zdp_descriptor_capability_field,
|
||||
};
|
||||
|
||||
expert_module_t *expert_zbee_zdp;
|
||||
|
||||
static ei_register_info ei[] = {
|
||||
{
|
||||
&ei_deprecated_command,
|
||||
{ "zbee_zdp.zdo_command_depreciated", PI_DEPRECATED, PI_WARN,
|
||||
"Depreciated ZDO Command", EXPFILL }
|
||||
}
|
||||
};
|
||||
|
||||
/* Register ZigBee ZDP protocol with Wireshark. */
|
||||
proto_zbee_zdp = proto_register_protocol("ZigBee Device Profile", "ZigBee ZDP", "zbee_zdp");
|
||||
proto_register_field_array(proto_zbee_zdp, hf, array_length(hf));
|
||||
proto_register_subtree_array(ett, array_length(ett));
|
||||
expert_zbee_zdp = expert_register_protocol(proto_zbee_zdp);
|
||||
expert_register_field_array(expert_zbee_zdp, ei, array_length(ei));
|
||||
|
||||
/* Register the ZDP dissector. */
|
||||
register_dissector("zbee_zdp", dissect_zbee_zdp, proto_zbee_zdp);
|
||||
|
|
Loading…
Reference in New Issue