diff options
author | Jörg Mayer <jmayer@loplof.de> | 2012-06-12 10:44:57 +0000 |
---|---|---|
committer | Jörg Mayer <jmayer@loplof.de> | 2012-06-12 10:44:57 +0000 |
commit | f679b8964994e015f01b1f9d3ee4b1a569e469c1 (patch) | |
tree | 6f5c87ad0d25f6c98808d9de3a0a8f3b05cc2e31 /epan/dissectors | |
parent | 9228ece476cfb7f9102ad84427f2c565e1614e10 (diff) |
Revert r41952
BACKPORT to 1.8
svn path=/trunk/; revision=43222
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-ip.c | 12 | ||||
-rw-r--r-- | epan/dissectors/packet-ip.h | 2 | ||||
-rw-r--r-- | epan/dissectors/packet-ipv6.c | 19 |
3 files changed, 22 insertions, 11 deletions
diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c index feeef94ff5..092487d062 100644 --- a/epan/dissectors/packet-ip.c +++ b/epan/dissectors/packet-ip.c @@ -1910,12 +1910,6 @@ ip_checksum(const guint8 *ptr, int len) return in_cksum(&cksum_vec[0], 1); } -proto_item * -add_ip_version_to_tree(proto_tree *tree, tvbuff_t *tvb, int offset) -{ - return proto_tree_add_item(tree, hf_ip_version, tvb, offset, 1, ENC_BIG_ENDIAN); -} - static void dissect_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) { @@ -1956,7 +1950,9 @@ dissect_ip(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) if (tree) { ti = proto_tree_add_item(tree, proto_ip, tvb, offset, hlen, ENC_NA); ip_tree = proto_item_add_subtree(ti, ett_ip); - add_ip_version_to_tree(ip_tree, tvb, offset); + + proto_tree_add_uint(ip_tree, hf_ip_version, tvb, offset, 1, + hi_nibble(iph->ip_v_hl)); } /* if IP is not referenced from any filters we don't need to worry about @@ -2421,7 +2417,7 @@ proto_register_ip(void) static hf_register_info hf[] = { { &hf_ip_version, { "Version", "ip.version", FT_UINT8, BASE_DEC, - NULL, 0xf0, NULL, HFILL }}, + NULL, 0x0, NULL, HFILL }}, { &hf_ip_hdr_len, { "Header Length", "ip.hdr_len", FT_UINT8, BASE_DEC, diff --git a/epan/dissectors/packet-ip.h b/epan/dissectors/packet-ip.h index fcdf935ec8..e2dd3c4918 100644 --- a/epan/dissectors/packet-ip.h +++ b/epan/dissectors/packet-ip.h @@ -47,6 +47,4 @@ guint16 ip_checksum(const guint8 *ptr, int len); WS_VAR_IMPORT value_string_ext dscp_vals_ext; WS_VAR_IMPORT const value_string dscp_vals[]; -proto_item *add_ip_version_to_tree(proto_tree *tree, tvbuff_t *tvb, int offset); - #endif diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c index 6cc443f853..c07f074c3a 100644 --- a/epan/dissectors/packet-ipv6.c +++ b/epan/dissectors/packet-ipv6.c @@ -96,6 +96,8 @@ static int ipv6_tap = -1; static int proto_ipv6 = -1; +static int hf_ipv6_version = -1; +static int hf_ip_version = -1; static int hf_ipv6_class = -1; static int hf_ipv6_flow = -1; static int hf_ipv6_plen = -1; @@ -254,6 +256,7 @@ static int hf_geoip_dst_lon = -1; static gint ett_ipv6 = -1; static gint ett_ipv6_opt = -1; static gint ett_ipv6_opt_flag = -1; +static gint ett_ipv6_version = -1; static gint ett_ipv6_shim6 = -1; static gint ett_ipv6_shim6_option = -1; static gint ett_ipv6_shim6_locators = -1; @@ -1693,6 +1696,8 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) SET_ADDRESS(&pinfo->dst, AT_IPv6, 16, tvb_get_ptr(tvb, offset + IP6H_DST, 16)); if (tree) { + proto_tree* pt; + proto_item* pi; proto_tree *ipv6_tc_tree; proto_item *ipv6_tc; const char *name; @@ -1701,7 +1706,12 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ipv6_tree = proto_item_add_subtree(ipv6_item, ett_ipv6); /* !!! warning: (4-bit) version, (6-bit) DSCP, (1-bit) ECN-ECT, (1-bit) ECN-CE and (20-bit) Flow */ - add_ip_version_to_tree(ipv6_tree, tvb, offset + offsetof(struct ip6_hdr, ip6_vfc)); + pi = proto_tree_add_item(ipv6_tree, hf_ipv6_version, tvb, + offset + offsetof(struct ip6_hdr, ip6_vfc), 1, ENC_BIG_ENDIAN); + pt = proto_item_add_subtree(pi,ett_ipv6_version); + pi = proto_tree_add_item(pt, hf_ip_version, tvb, + offset + offsetof(struct ip6_hdr, ip6_vfc), 1, ENC_BIG_ENDIAN); + PROTO_ITEM_SET_GENERATED(pi); ipv6_tc = proto_tree_add_item(ipv6_tree, hf_ipv6_class, tvb, offset + offsetof(struct ip6_hdr, ip6_flow), 4, ENC_BIG_ENDIAN); @@ -2099,6 +2109,12 @@ void proto_register_ipv6(void) { static hf_register_info hf[] = { + { &hf_ipv6_version, + { "Version", "ipv6.version", + FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }}, + { &hf_ip_version, + { "This field makes the filter \"ip.version == 6\" possible", "ip.version", + FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL }}, { &hf_ipv6_class, { "Traffic class", "ipv6.class", FT_UINT32, BASE_HEX, NULL, 0x0FF00000, NULL, HFILL }}, @@ -2751,6 +2767,7 @@ proto_register_ipv6(void) &ett_ipv6, &ett_ipv6_opt, &ett_ipv6_opt_flag, + &ett_ipv6_version, &ett_ipv6_shim6, &ett_ipv6_shim6_option, &ett_ipv6_shim6_locators, |