diff options
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-openflow_v4.c | 19 | ||||
-rw-r--r-- | epan/dissectors/packet-openflow_v5.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-openflow_v6.c | 16 |
3 files changed, 18 insertions, 33 deletions
diff --git a/epan/dissectors/packet-openflow_v4.c b/epan/dissectors/packet-openflow_v4.c index ce914d44e0..83ac7e4e93 100644 --- a/epan/dissectors/packet-openflow_v4.c +++ b/epan/dissectors/packet-openflow_v4.c @@ -901,7 +901,6 @@ static int dissect_openflow_oxm_header_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { guint16 oxm_class; - guint8 oxm_length; /* oxm_class */ oxm_class = tvb_get_ntohs(tvb, offset); @@ -920,18 +919,9 @@ dissect_openflow_oxm_header_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree offset+=1; /* oxm_length */ - oxm_length = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_openflow_v4_oxm_length, tvb, offset, 1, ENC_BIG_ENDIAN); offset+=1; - if (oxm_class == OFPXMC_EXPERIMENTER) { - /* uint32_t experimenter; */ - proto_tree_add_item(tree, hf_openflow_v4_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); - offset+=4; - proto_tree_add_item(tree, hf_openflow_v4_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); - offset+=(oxm_length - 4); - } - return offset; } @@ -1068,10 +1058,13 @@ dissect_openflow_oxm_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, offset = oxm_end; } + } else if (oxm_class == OFPXMC_EXPERIMENTER) { + /* uint32_t experimenter; */ + proto_tree_add_item(oxm_tree, hf_openflow_v4_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); + offset+=4; + proto_tree_add_item(oxm_tree, hf_openflow_v4_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); + offset+=(oxm_length - 4); } else { - if (oxm_class == OFPXMC_EXPERIMENTER) { - oxm_length -= 4; /* oxm_length includes experimenter field */ - } proto_tree_add_expert_format(oxm_tree, pinfo, &ei_openflow_v4_oxm_undecoded, tvb, offset, oxm_length, "Unknown OXM body."); offset+=oxm_length; diff --git a/epan/dissectors/packet-openflow_v5.c b/epan/dissectors/packet-openflow_v5.c index ed923e69b4..0033c213c4 100644 --- a/epan/dissectors/packet-openflow_v5.c +++ b/epan/dissectors/packet-openflow_v5.c @@ -1078,7 +1078,6 @@ static int dissect_openflow_oxm_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { guint16 oxm_class; - guint8 oxm_length; /* oxm_class */ oxm_class = tvb_get_ntohs(tvb, offset); @@ -1097,18 +1096,9 @@ dissect_openflow_oxm_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree offset+=1; /* oxm_length */ - oxm_length = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_openflow_v5_oxm_length, tvb, offset, 1, ENC_BIG_ENDIAN); offset+=1; - if (oxm_class == OFPXMC_EXPERIMENTER) { - /* uint32_t experimenter; */ - proto_tree_add_item(tree, hf_openflow_v5_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); - offset+=4; - proto_tree_add_item(tree, hf_openflow_v5_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); - offset+=(oxm_length - 4); - } - return offset; } @@ -1245,6 +1235,12 @@ dissect_openflow_oxm_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, offset = oxm_end; } + } else if (oxm_class == OFPXMC_EXPERIMENTER) { + /* uint32_t experimenter; */ + proto_tree_add_item(oxm_tree, hf_openflow_v5_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); + offset+=4; + proto_tree_add_item(oxm_tree, hf_openflow_v5_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); + offset+=(oxm_length - 4); } else { proto_tree_add_expert_format(oxm_tree, pinfo, &ei_openflow_v5_oxm_undecoded, tvb, offset, oxm_length, "Unknown OXM body."); diff --git a/epan/dissectors/packet-openflow_v6.c b/epan/dissectors/packet-openflow_v6.c index a7be077033..3ea3a408fe 100644 --- a/epan/dissectors/packet-openflow_v6.c +++ b/epan/dissectors/packet-openflow_v6.c @@ -1104,7 +1104,6 @@ static int dissect_openflow_oxm_header_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_) { guint16 oxm_class; - guint8 oxm_length; /* oxm_class */ oxm_class = tvb_get_ntohs(tvb, offset); @@ -1123,18 +1122,9 @@ dissect_openflow_oxm_header_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree offset+=1; /* oxm_length */ - oxm_length = tvb_get_guint8(tvb, offset); proto_tree_add_item(tree, hf_openflow_v6_oxm_length, tvb, offset, 1, ENC_BIG_ENDIAN); offset+=1; - if (oxm_class == OFPXMC_EXPERIMENTER) { - /* uint32_t experimenter; */ - proto_tree_add_item(tree, hf_openflow_v6_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); - offset+=4; - proto_tree_add_item(tree, hf_openflow_v6_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); - offset+=(oxm_length - 4); - } - return offset; } @@ -1271,6 +1261,12 @@ dissect_openflow_oxm_v6(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, offset = oxm_end; } + } else if (oxm_class == OFPXMC_EXPERIMENTER) { + /* uint32_t experimenter; */ + proto_tree_add_item(oxm_tree, hf_openflow_v6_oxm_experimenter_experimenter, tvb, offset, 4, ENC_BIG_ENDIAN); + offset+=4; + proto_tree_add_item(oxm_tree, hf_openflow_v6_oxm_experimenter_value, tvb, offset, oxm_length - 4, ENC_NA); + offset+=(oxm_length - 4); } else { proto_tree_add_expert_format(oxm_tree, pinfo, &ei_openflow_v6_oxm_undecoded, tvb, offset, oxm_length, "Unknown OXM body."); |