diff options
Diffstat (limited to 'epan/dissectors/packet-zbee-zdp.c')
-rw-r--r-- | epan/dissectors/packet-zbee-zdp.c | 102 |
1 files changed, 52 insertions, 50 deletions
diff --git a/epan/dissectors/packet-zbee-zdp.c b/epan/dissectors/packet-zbee-zdp.c index e3120e5ee0..0337dbd03a 100644 --- a/epan/dissectors/packet-zbee-zdp.c +++ b/epan/dissectors/packet-zbee-zdp.c @@ -34,6 +34,7 @@ #include <epan/expert.h> #include "packet-zbee.h" +#include "packet-zbee-nwk.h" #include "packet-zbee-zdp.h" /*************************/ @@ -49,30 +50,30 @@ extern void dissect_zbee_zdp_req_node_desc (tvbuff_t *tvb, packet_info extern void dissect_zbee_zdp_req_power_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_active_ep (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_match_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_match_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_complex_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_user_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_discovery_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_device_annce (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_set_user_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_set_user_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_system_server_disc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_store_discovery (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_store_node_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_store_power_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_store_active_ep (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_store_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_store_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_remove_node_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_find_node_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_ext_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_ext_active_ep (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_end_device_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_unbind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_end_device_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); +extern void dissect_zbee_zdp_req_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); +extern void dissect_zbee_zdp_req_unbind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_bind_register (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_replace_device (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_store_bak_bind_entry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_remove_bak_bind_entry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_store_bak_bind_entry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); +extern void dissect_zbee_zdp_req_remove_bak_bind_entry (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_backup_bind_table (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_recover_bind_table (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_backup_source_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -82,7 +83,7 @@ extern void dissect_zbee_zdp_req_mgmt_nwk_disc (tvbuff_t *tvb, packet_info extern void dissect_zbee_zdp_req_mgmt_lqi (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_rtg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_mgmt_leave (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_req_mgmt_leave (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_req_mgmt_direct_join (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_permit_join (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -90,14 +91,14 @@ extern void dissect_zbee_zdp_req_mgmt_nwkupdate (tvbuff_t *tvb, packet_info extern void dissect_zbee_zdp_rsp_nwk_addr (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_ext_addr (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_node_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_rsp_node_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_rsp_power_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_rsp_simple_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_rsp_active_ep (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_match_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_complex_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_user_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_user_desc_conf (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_rsp_user_desc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); +extern void dissect_zbee_zdp_rsp_user_desc_conf (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_rsp_discovery_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_system_server_disc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_discovery_store (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -122,10 +123,10 @@ extern void dissect_zbee_zdp_rsp_recover_bind_table (tvbuff_t *tvb, packet_info extern void dissect_zbee_zdp_rsp_backup_source_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_recover_source_bind(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_mgmt_nwk_disc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_mgmt_lqi (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_rsp_mgmt_nwk_disc (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); +extern void dissect_zbee_zdp_rsp_mgmt_lqi (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_rsp_mgmt_rtg (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_rsp_mgmt_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_rsp_mgmt_bind (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 version); extern void dissect_zbee_zdp_rsp_mgmt_leave (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_mgmt_direct_join (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_mgmt_permit_join (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); @@ -781,7 +782,7 @@ zdp_parse_server_flags(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *of *--------------------------------------------------------------- */ void -zdp_parse_node_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, packet_info *pinfo) +zdp_parse_node_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, guint8 version) { proto_item *ti; proto_item *field_root = NULL; @@ -825,7 +826,7 @@ zdp_parse_node_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offse /*max_transfer =*/ zbee_parse_uint(field_tree, hf_zbee_zdp_node_max_transfer, tvb, offset, (int)sizeof(guint16), NULL); /* Get and display the server flags. */ - if (pinfo->zbee_stack_vers >= ZBEE_VERSION_2007) { + if (version >= ZBEE_VERSION_2007) { zdp_parse_server_flags(field_tree, ett_zbee_zdp_server, tvb, offset); } @@ -918,7 +919,7 @@ zdp_parse_power_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offs *--------------------------------------------------------------- */ void -zdp_parse_simple_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, packet_info *pinfo) +zdp_parse_simple_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *offset, guint8 version) { proto_item *ti; proto_item *field_root = NULL; @@ -943,7 +944,7 @@ zdp_parse_simple_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *off /*app_device =*/ zbee_parse_uint(field_tree, hf_zbee_zdp_simple_app_device, tvb, offset, (int)sizeof(guint16), NULL); /*app_version =*/ zbee_parse_uint(field_tree, hf_zbee_zdp_simple_app_version, tvb, offset, (int)sizeof(guint8), NULL); - sizeof_cluster = (pinfo->zbee_stack_vers >= ZBEE_VERSION_2007)?(int)sizeof(guint16):(int)sizeof(guint8); + sizeof_cluster = (version >= ZBEE_VERSION_2007)?(int)sizeof(guint16):(int)sizeof(guint8); in_count = zbee_parse_uint(field_tree, hf_zbee_zdp_in_count, tvb, offset, (int)sizeof(guint8), NULL); if ((tree) && (in_count)) { @@ -1074,40 +1075,39 @@ zdp_parse_complex_desc(proto_tree *tree, gint ettindex, tvbuff_t *tvb, guint *of * void *--------------------------------------------------------------- */ -static void -dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +static int +dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data) { - proto_tree *zdp_tree = NULL; + proto_tree *zdp_tree; proto_item *proto_root; tvbuff_t *zdp_tvb; guint8 seqno; guint16 cluster; guint offset = 0; + zbee_nwk_packet *nwk = (zbee_nwk_packet *)data; /* Create the protocol tree. */ - if (tree) { - proto_root = proto_tree_add_protocol_format(tree, proto_zbee_zdp, tvb, offset, tvb_length(tvb), "ZigBee Device Profile"); - zdp_tree = proto_item_add_subtree(proto_root, ett_zbee_zdp); - } + proto_root = proto_tree_add_protocol_format(tree, proto_zbee_zdp, tvb, offset, tvb_length(tvb), "ZigBee Device Profile"); + zdp_tree = proto_item_add_subtree(proto_root, ett_zbee_zdp); + #if 0 /* Overwrite the protocol column */ col_set_str(pinfo->cinfo, COL_PROTOCOL, "ZigBee ZDP"); #endif /* Get and display the sequence number. */ seqno = tvb_get_guint8(tvb, offset); - if (tree) { - proto_tree_add_uint(zdp_tree, hf_zbee_zdp_seqno, tvb, offset, (int)sizeof(guint8), seqno); - } + proto_tree_add_uint(zdp_tree, hf_zbee_zdp_seqno, tvb, offset, (int)sizeof(guint8), seqno); + offset += (int)sizeof(guint8); - if (pinfo->zbee_stack_vers <= ZBEE_VERSION_2004) { + if (nwk->version <= ZBEE_VERSION_2004) { /* ZigBee 2004 and earlier had different cluster identifiers, need to convert * them into the ZigBee 2006 & later values. */ - cluster = zdp_convert_2003cluster((guint8)pinfo->zbee_cluster_id); + cluster = zdp_convert_2003cluster((guint8)nwk->cluster_id); } else { - cluster = pinfo->zbee_cluster_id; + cluster = nwk->cluster_id; } /* Update info. */ @@ -1137,7 +1137,7 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_req_active_ep(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_REQ_MATCH_DESC: - dissect_zbee_zdp_req_match_desc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_match_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_COMPLEX_DESC: dissect_zbee_zdp_req_complex_desc(zdp_tvb, pinfo, zdp_tree); @@ -1152,7 +1152,7 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) 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); + dissect_zbee_zdp_req_set_user_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_SYSTEM_SERVER_DISC: dissect_zbee_zdp_req_system_server_disc(zdp_tvb, pinfo, zdp_tree); @@ -1170,7 +1170,7 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_req_store_active_ep(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_REQ_STORE_SIMPLE_DESC: - dissect_zbee_zdp_req_store_simple_desc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_store_simple_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_REMOVE_NODE_CACHE: dissect_zbee_zdp_req_remove_node_cache(zdp_tvb, pinfo, zdp_tree); @@ -1185,13 +1185,13 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_req_ext_active_ep(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); + dissect_zbee_zdp_req_end_device_bind(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_BIND: - dissect_zbee_zdp_req_bind(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_bind(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_UNBIND: - dissect_zbee_zdp_req_unbind(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_unbind(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_BIND_REGISTER: dissect_zbee_zdp_req_bind_register(zdp_tvb, pinfo, zdp_tree); @@ -1200,10 +1200,10 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_req_replace_device(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_REQ_STORE_BAK_BIND_ENTRY: - dissect_zbee_zdp_req_store_bak_bind_entry(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_store_bak_bind_entry(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_REMOVE_BAK_BIND_ENTRY: - dissect_zbee_zdp_req_remove_bak_bind_entry(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_remove_bak_bind_entry(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_BACKUP_BIND_TABLE: dissect_zbee_zdp_req_backup_bind_table(zdp_tvb, pinfo, zdp_tree); @@ -1230,7 +1230,7 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_req_mgmt_bind(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_REQ_MGMT_LEAVE: - dissect_zbee_zdp_req_mgmt_leave(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_req_mgmt_leave(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_REQ_MGMT_DIRECT_JOIN: dissect_zbee_zdp_req_mgmt_direct_join(zdp_tvb, pinfo, zdp_tree); @@ -1251,13 +1251,13 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_rsp_ext_addr(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_NODE_DESC: - dissect_zbee_zdp_rsp_node_desc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_node_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_POWER_DESC: dissect_zbee_zdp_rsp_power_desc(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_SIMPLE_DESC: - dissect_zbee_zdp_rsp_simple_desc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_simple_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_ACTIVE_EP: dissect_zbee_zdp_rsp_active_ep(zdp_tvb, pinfo, zdp_tree); @@ -1269,13 +1269,13 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_rsp_complex_desc(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_USER_DESC: - dissect_zbee_zdp_rsp_user_desc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_user_desc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_DISCOVERY_CACHE: dissect_zbee_zdp_rsp_discovery_cache(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_CONF_USER_DESC: - dissect_zbee_zdp_rsp_user_desc_conf(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_user_desc_conf(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_SYSTEM_SERVER_DISC: dissect_zbee_zdp_rsp_system_server_disc(zdp_tvb, pinfo, zdp_tree); @@ -1341,16 +1341,16 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) dissect_zbee_zdp_rsp_recover_source_bind(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_MGMT_NWK_DISC: - dissect_zbee_zdp_rsp_mgmt_nwk_disc(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_mgmt_nwk_disc(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_MGMT_LQI: - dissect_zbee_zdp_rsp_mgmt_lqi(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_mgmt_lqi(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_MGMT_RTG: dissect_zbee_zdp_rsp_mgmt_rtg(zdp_tvb, pinfo, zdp_tree); break; case ZBEE_ZDP_RSP_MGMT_BIND: - dissect_zbee_zdp_rsp_mgmt_bind(zdp_tvb, pinfo, zdp_tree); + dissect_zbee_zdp_rsp_mgmt_bind(zdp_tvb, pinfo, zdp_tree, nwk->version); break; case ZBEE_ZDP_RSP_MGMT_LEAVE: dissect_zbee_zdp_rsp_mgmt_leave(zdp_tvb, pinfo, zdp_tree); @@ -1372,6 +1372,8 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) call_dissector(data_handle, zdp_tvb, pinfo, tree); break; } /* switch */ + + return tvb_length(tvb); } /* dissect_zbee_zdp */ /*FUNCTION:------------------------------------------------------ @@ -1747,7 +1749,7 @@ void proto_register_zbee_zdp(void) proto_register_subtree_array(ett, array_length(ett)); /* Register the ZDP dissector. */ - register_dissector("zbee_zdp", dissect_zbee_zdp, proto_zbee_zdp); + new_register_dissector("zbee_zdp", dissect_zbee_zdp, proto_zbee_zdp); } /* proto_register_zbee_zdp */ /*FUNCTION:------------------------------------------------------ |