diff options
author | Kenneth Soerensen <knnthsrnsn@gmail.com> | 2018-11-30 13:43:34 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2018-12-02 02:49:50 +0000 |
commit | 82ebab607ec4634021f3b6a2ffadb06efcd6900c (patch) | |
tree | c77eaa493e6107b03587daabec1d46a119509506 | |
parent | 5267fc7777bdd1338ac819d11d702f7fab51e856 (diff) |
ZigBee: Correct unsolicited nwk update notify
- Correct cluster ID
- Parse ZDP Status
- Move from client to server
- Classify as notify instead of request
Change-Id: Idb3d26d3212af2762465d7ec02efcb8978830af3
Reviewed-on: https://code.wireshark.org/review/30859
Reviewed-by: Martin Boye Petersen <martinboyepetersen@gmail.com>
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r-- | epan/dissectors/packet-zbee-zdp-management.c | 53 | ||||
-rw-r--r-- | epan/dissectors/packet-zbee-zdp.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-zbee-zdp.h | 4 |
3 files changed, 33 insertions, 32 deletions
diff --git a/epan/dissectors/packet-zbee-zdp-management.c b/epan/dissectors/packet-zbee-zdp-management.c index 8195bcae42..29a4fcb598 100644 --- a/epan/dissectors/packet-zbee-zdp-management.c +++ b/epan/dissectors/packet-zbee-zdp-management.c @@ -471,32 +471,6 @@ dissect_zbee_zdp_req_mgmt_ieee_join_list(tvbuff_t *tvb, packet_info *pinfo, prot zdp_dump_excess(tvb, offset, pinfo, tree); } /* dissect_zbee_zdp_req_mgmt_ieee_join_list */ -/** - *ZigBee Device Profile dissector for the unsolicited nwk update notify. - * - *@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_req_mgmt_unsolicited_nwkupdate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) -{ - guint offset = 0; - - zdp_parse_chanmask(tree, tvb, &offset, hf_zbee_zdp_channel_page, hf_zbee_zdp_channel_mask); - proto_tree_add_item(tree, hf_zbee_zdp_tx_total, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; - proto_tree_add_item(tree, hf_zbee_zdp_tx_fail, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; - proto_tree_add_item(tree, hf_zbee_zdp_tx_retries, tvb, offset, 2, ENC_LITTLE_ENDIAN); - offset += 2; - proto_tree_add_item(tree, hf_zbee_zdp_period_time_results, tvb, offset, 1, ENC_LITTLE_ENDIAN); - offset += 1; - - /* Dump any leftover bytes. */ - zdp_dump_excess(tvb, offset, pinfo, tree); -} /* dissect_zbee_zdp_req_mgmt_unsolicited_nwkupdate */ - /************************************** * MANAGEMENT RESPONSES ************************************** @@ -848,6 +822,33 @@ dissect_zbee_zdp_rsp_mgmt_ieee_join_list(tvbuff_t *tvb, packet_info *pinfo, prot zdp_dump_excess(tvb, offset, pinfo, tree); } /* dissect_zbee_zdp_rsp_mgmt_ieee_join_list */ +/** + *ZigBee Device Profile dissector for the unsolicited nwk update notify. + * + *@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_not_mgmt_unsolicited_nwkupdate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + guint offset = 0; + + zdp_parse_status(tree, tvb, &offset); + zdp_parse_chanmask(tree, tvb, &offset, hf_zbee_zdp_channel_page, hf_zbee_zdp_channel_mask); + proto_tree_add_item(tree, hf_zbee_zdp_tx_total, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + proto_tree_add_item(tree, hf_zbee_zdp_tx_fail, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + proto_tree_add_item(tree, hf_zbee_zdp_tx_retries, tvb, offset, 2, ENC_LITTLE_ENDIAN); + offset += 2; + proto_tree_add_item(tree, hf_zbee_zdp_period_time_results, tvb, offset, 1, ENC_LITTLE_ENDIAN); + offset += 1; + + /* Dump any leftover bytes. */ + zdp_dump_excess(tvb, offset, pinfo, tree); +} /* dissect_zbee_zdp_not_mgmt_unsolicited_nwkupdate */ + /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * diff --git a/epan/dissectors/packet-zbee-zdp.c b/epan/dissectors/packet-zbee-zdp.c index 623352515c..0535913dec 100644 --- a/epan/dissectors/packet-zbee-zdp.c +++ b/epan/dissectors/packet-zbee-zdp.c @@ -281,7 +281,6 @@ const value_string zbee_zdp_cluster_names[] = { { ZBEE_ZDP_REQ_MGMT_NWKUPDATE, "Network Update Request" }, { ZBEE_ZDP_REQ_MGMT_NWKUPDATE_ENH, "Network Update Enhanced Request" }, { ZBEE_ZDP_REQ_MGMT_IEEE_JOIN_LIST, "IEEE Joining List Request" }, - { ZBEE_ZDP_REQ_MGMT_UNSOLICITED_NWKUPDATE, "Unsolicited Enhanced Network Update Notify" }, { ZBEE_ZDP_RSP_NWK_ADDR, "Network Address Response" }, { ZBEE_ZDP_RSP_IEEE_ADDR, "Extended Address Response" }, @@ -327,6 +326,7 @@ const value_string zbee_zdp_cluster_names[] = { { ZBEE_ZDP_NOT_MGMT_NWKUPDATE, "Network Update Notify" }, { ZBEE_ZDP_NOT_MGMT_NWKUPDATE_ENH, "Network Enhanced Update Notify" }, { ZBEE_ZDP_RSP_MGMT_IEEE_JOIN_LIST, "IEEE Joining List Response" }, + { ZBEE_ZDP_NOT_MGMT_UNSOLICITED_NWKUPDATE, "Unsolicited Enhanced Network Update Notify" }, { 0, NULL } }; @@ -1189,9 +1189,6 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data case ZBEE_ZDP_REQ_MGMT_IEEE_JOIN_LIST: dissect_zbee_zdp_req_mgmt_ieee_join_list(zdp_tvb, pinfo, zdp_tree); break; - case ZBEE_ZDP_REQ_MGMT_UNSOLICITED_NWKUPDATE: - dissect_zbee_zdp_req_mgmt_unsolicited_nwkupdate(zdp_tvb, pinfo, zdp_tree); - break; case ZBEE_ZDP_RSP_NWK_ADDR: dissect_zbee_zdp_rsp_nwk_addr(zdp_tvb, pinfo, zdp_tree); break; @@ -1322,6 +1319,9 @@ dissect_zbee_zdp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data case ZBEE_ZDP_RSP_MGMT_IEEE_JOIN_LIST: dissect_zbee_zdp_rsp_mgmt_ieee_join_list(zdp_tvb, pinfo, zdp_tree); break; + case ZBEE_ZDP_NOT_MGMT_UNSOLICITED_NWKUPDATE: + dissect_zbee_zdp_not_mgmt_unsolicited_nwkupdate(zdp_tvb, pinfo, zdp_tree); + break; default: /* Invalid Cluster Identifier. */ call_data_dissector(zdp_tvb, pinfo, tree); diff --git a/epan/dissectors/packet-zbee-zdp.h b/epan/dissectors/packet-zbee-zdp.h index 64226d984b..fd4cba0743 100644 --- a/epan/dissectors/packet-zbee-zdp.h +++ b/epan/dissectors/packet-zbee-zdp.h @@ -62,7 +62,6 @@ #define ZBEE_ZDP_REQ_MGMT_NWKUPDATE 0x0038 /* ZigBee 2007 & later. */ #define ZBEE_ZDP_REQ_MGMT_NWKUPDATE_ENH 0x0039 /* R22 */ #define ZBEE_ZDP_REQ_MGMT_IEEE_JOIN_LIST 0x003a /* R22 */ -#define ZBEE_ZDP_REQ_MGMT_UNSOLICITED_NWKUPDATE 0x003b /* R22 */ #define ZBEE_ZDP_RSP_NWK_ADDR 0x8000 #define ZBEE_ZDP_RSP_IEEE_ADDR 0x8001 @@ -108,6 +107,7 @@ #define ZBEE_ZDP_NOT_MGMT_NWKUPDATE 0x8038 /* ZigBee 2007 & later. */ #define ZBEE_ZDP_NOT_MGMT_NWKUPDATE_ENH 0x8039 /* R22 */ #define ZBEE_ZDP_RSP_MGMT_IEEE_JOIN_LIST 0x803a /* R22 */ +#define ZBEE_ZDP_NOT_MGMT_UNSOLICITED_NWKUPDATE 0x803b /* R22 */ #define ZBEE_ZDP_MSG_RESPONSE_BIT 0x8000 #define ZBEE_ZDP_MSG_MASK (ZBEE_ZDP_MSG_RESPONSE_BIT-1) @@ -386,7 +386,6 @@ extern void dissect_zbee_zdp_req_mgmt_cache (tvbuff_t *tvb, packet_i extern void dissect_zbee_zdp_req_mgmt_nwkupdate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_nwkupdate_enh (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_req_mgmt_ieee_join_list (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); -extern void dissect_zbee_zdp_req_mgmt_unsolicited_nwkupdate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); 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); @@ -432,6 +431,7 @@ extern void dissect_zbee_zdp_rsp_mgmt_permit_join (tvbuff_t *tvb, packet_i extern void dissect_zbee_zdp_rsp_mgmt_cache (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_not_mgmt_nwkupdate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern void dissect_zbee_zdp_rsp_mgmt_ieee_join_list (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +extern void dissect_zbee_zdp_not_mgmt_unsolicited_nwkupdate (tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); extern const value_string zbee_zdp_cluster_names[]; extern const value_string zbee_zdp_rtg_status_vals[]; |