/*FUNCTION:------------------------------------------------------ * NAME * dissect_zbee_zdp_rsp_recover_source_bind * DESCRIPTION * ZigBee Device Profile dissector for the recover source binding * response. Cluster ID = 0x8029. * PARAMETERS * tvbuff_t *tvb - pointer to buffer containing raw packet. * packet_into *pinfo - pointer to packet information fields * proto_tree *tree - pointer to data tree Wireshark uses to display packet. * RETURNS * void *--------------------------------------------------------------- */ void dissect_zbee_zdp_rsp_recover_source_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_item *ti; proto_tree *field_tree = NULL; guint offset = 0; guint i; guint8 status; /*guint16 table_size;*/ /*guint16 idx;*/ guint16 table_count; status = zdp_parse_status(tree, tvb, &offset); /*table_size = */ zbee_parse_uint(tree, hf_zbee_zdp_table_size, tvb, &offset, sizeof(guint16), NULL); /*idx = */ zbee_parse_uint(tree, hf_zbee_zdp_index, tvb, &offset, sizeof(guint16), NULL); table_count = zbee_parse_uint(tree, hf_zbee_zdp_table_count, tvb, &offset, sizeof(guint16), NULL); if (tree && table_count) { ti = proto_tree_add_text(tree, tvb, offset, table_count * sizeof(guint64), "Source Table"); field_tree = proto_item_add_subtree(ti, ett_zbee_zdp_bind_source); } for (i=0; i<table_count; i++) { (void)zbee_parse_eui64(field_tree, hf_zbee_zdp_bind_src64, tvb, &offset, sizeof(guint64), NULL); } /* for */ 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_recover_source_bind */
/*FUNCTION:------------------------------------------------------ * NAME * dissect_zbee_zdp_rsp_bind_register * DESCRIPTION * ZigBee Device Profile dissector for the bind registration * response. Cluster ID = 0x8023. * PARAMETERS * tvbuff_t *tvb - pointer to buffer containing raw packet. * packet_into *pinfo - pointer to packet information fields * proto_tree *tree - pointer to data tree Wireshark uses to display packet. * RETURNS * void *--------------------------------------------------------------- */ void dissect_zbee_zdp_rsp_bind_register(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_item *ti; proto_tree *field_tree = NULL; guint offset = 0; guint i; guint8 status; /*guint16 table_size;*/ guint16 table_count; status = zdp_parse_status(tree, tvb, &offset); /*table_size =*/ zbee_parse_uint(tree, hf_zbee_zdp_table_size, tvb, &offset, sizeof(guint16), NULL); table_count = zbee_parse_uint(tree, hf_zbee_zdp_table_count, tvb, &offset, sizeof(guint16), NULL); if (tree && table_count) { ti = proto_tree_add_text(tree, tvb, offset, tvb_length_remaining(tvb, offset), "Binding List"); field_tree = proto_item_add_subtree(ti, ett_zbee_zdp_bind); } for (i=0; i<table_count; i++) { zdp_parse_bind_table_entry(field_tree, tvb, &offset, pinfo); } /* for */ 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_bind_register */
/** *ZigBee Device Profile dissector for the recover binding * *@param tvb pointer to buffer containing raw packet. *@param pinfo pointer to packet information fields *@param tree pointer to data tree Wireshark uses to display packet. */ void dissect_zbee_zdp_rsp_recover_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version) { proto_tree *field_tree = NULL; guint offset = 0; guint i; guint8 status; /*guint16 table_size;*/ /*guint16 idx;*/ guint16 table_count; status = zdp_parse_status(tree, tvb, &offset); /*table_size =*/ zbee_parse_uint(tree, hf_zbee_zdp_table_size, tvb, &offset, (int)sizeof(guint16), NULL); /*idx =*/ zbee_parse_uint(tree, hf_zbee_zdp_index, tvb, &offset, (int)sizeof(guint16), NULL); table_count = zbee_parse_uint(tree, hf_zbee_zdp_table_count, tvb, &offset, (int)sizeof(guint16), NULL); 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 */ 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_recover_bind_table */
/** *ZigBee Device Profile dissector for the recover source binding * *@param tvb pointer to buffer containing raw packet. *@param pinfo pointer to packet information fields *@param tree pointer to data tree Wireshark uses to display packet. */ void dissect_zbee_zdp_rsp_recover_source_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { 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; 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 */ 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_recover_source_bind */
/** *ZigBee Device Profile dissector for the recover binding * *@param tvb pointer to buffer containing raw packet. *@param pinfo pointer to packet information fields *@param tree pointer to data tree Wireshark uses to display packet. */ void dissect_zbee_zdp_rsp_recover_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version) { 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; 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 */ 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_recover_bind_table */
/*FUNCTION:------------------------------------------------------ * NAME * dissect_zbee_zdp_rsp_backup_source_bind * DESCRIPTION * ZigBee Device Profile dissector for the backup source binding * response. Cluster ID = 0x8029. * PARAMETERS * tvbuff_t *tvb - pointer to buffer containing raw packet. * packet_into *pinfo - pointer to packet information fields * proto_tree *tree - pointer to data tree Wireshark uses to display packet. * RETURNS * void *--------------------------------------------------------------- */ void dissect_zbee_zdp_rsp_backup_source_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { 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. */ zdp_dump_excess(tvb, offset, pinfo, tree); } /* dissect_zbee_zdp_rsp_backup_source_bind */
/*FUNCTION:------------------------------------------------------ * NAME * dissect_zbee_zdp_rsp_backup_bind_table * DESCRIPTION * ZigBee Device Profile dissector for the backup binding * table response. Cluster ID = 0x8027. * PARAMETERS * tvbuff_t *tvb - pointer to buffer containing raw packet. * packet_into *pinfo - pointer to packet information fields * proto_tree *tree - pointer to data tree Wireshark uses to display packet. * RETURNS * void *--------------------------------------------------------------- */ void dissect_zbee_zdp_rsp_backup_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint offset = 0; guint8 status; /*guint16 count;*/ status = zdp_parse_status(tree, tvb, &offset); /*count =*/ zbee_parse_uint(tree, hf_zbee_zdp_table_size, tvb, &offset, sizeof(guint16), NULL); 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_backup_bind_table */
/** *ZigBee Device Profile dissector for the backup binding * *@param tvb pointer to buffer containing raw packet. *@param pinfo pointer to packet information fields *@param tree pointer to data tree Wireshark uses to display packet. */ void dissect_zbee_zdp_rsp_backup_bind_table(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint offset = 0; 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; 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_backup_bind_table */