OpenFlow: fix dissection of async_config_prop structure

Bug: 10808
Change-Id: I5ef46cd6b85c415e23dfdbe7a56c8b332eaae5a3
Reviewed-on: https://code.wireshark.org/review/6078
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Pascal Quantin 2014-12-27 16:46:32 +01:00 committed by Anders Broman
parent 1ae0c4a643
commit 25c7e0d9df
1 changed files with 12 additions and 10 deletions

View File

@ -5439,15 +5439,17 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* uint16_t length; */
proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_length, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
switch (prop_type) {
case OFPACPT_PACKET_IN_SLAVE:
case OFPACPT_PACKET_IN_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_packet_in_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_packet_in_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
pi_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_packet_in_mask);
proto_tree_add_item(pi_tree, hf_openflow_v5_async_config_prop_reason_packet_in_mask_table_miss, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5462,7 +5464,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_PORT_STATUS_SLAVE:
case OFPACPT_PORT_STATUS_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_port_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_port_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ps_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_port_status_mask);
proto_tree_add_item(ps_tree, hf_openflow_v5_async_config_prop_reason_port_status_mask_add, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5474,7 +5476,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_FLOW_REMOVED_SLAVE:
case OFPACPT_FLOW_REMOVED_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_flow_removed_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_flow_removed_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
fr_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_flow_removed_mask);
proto_tree_add_item(fr_tree, hf_openflow_v5_async_config_prop_reason_flow_removed_mask_idle_timeout, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5489,7 +5491,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_ROLE_STATUS_SLAVE:
case OFPACPT_ROLE_STATUS_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_role_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_role_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
rs_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_role_status_mask);
proto_tree_add_item(rs_tree, hf_openflow_v5_async_config_prop_reason_role_status_mask_master_request, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5501,7 +5503,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_TABLE_STATUS_SLAVE:
case OFPACPT_TABLE_STATUS_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_table_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_table_status_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ts_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_table_status_mask);
proto_tree_add_item(ts_tree, hf_openflow_v5_async_config_prop_reason_table_status_mask_vacancy_down, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5512,7 +5514,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_REQUESTFORWARD_SLAVE:
case OFPACPT_REQUESTFORWARD_MASTER:
/* uint32_t mask; */
ti = proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_reason_requestforward_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
ti = proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_reason_requestforward_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
rf_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop_reason_requestforward_mask);
proto_tree_add_item(rf_tree, hf_openflow_v5_async_config_prop_reason_requestforward_mask_group_mod, tvb, offset, 4, ENC_BIG_ENDIAN);
@ -5523,21 +5525,21 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
case OFPACPT_EXPERIMENTER_SLAVE:
case OFPACPT_EXPERIMENTER_MASTER:
/* uint32_t experimenter; */
proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
/* uint32_t exp_type; */
proto_tree_add_item(tree, hf_openflow_v5_async_config_prop_experimenter_exp_type, tvb, offset, 4, ENC_BIG_ENDIAN);
proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_experimenter_exp_type, tvb, offset, 4, ENC_BIG_ENDIAN);
offset+=4;
/* uint32_t experimenter_data[0]; */
proto_tree_add_expert_format(tree, pinfo, &ei_openflow_v5_async_config_prop_undecoded,
proto_tree_add_expert_format(prop_tree, pinfo, &ei_openflow_v5_async_config_prop_undecoded,
tvb, offset, prop_len - 12, "Experimenter async config prop body.");
offset += prop_len - 12;
break;
default:
proto_tree_add_expert_format(tree, pinfo, &ei_openflow_v5_async_config_prop_undecoded,
proto_tree_add_expert_format(prop_tree, pinfo, &ei_openflow_v5_async_config_prop_undecoded,
tvb, offset, prop_len - 4, "Unknown async config prop body.");
offset += prop_len - 4;
break;