Fix Ethereal bug 1004. Make UDP dissector work on top of IPv6 by filling in pinfo...
authorjake <jake@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 25 Jun 2006 12:15:35 +0000 (12:15 +0000)
committerjake <jake@f5534014-38df-0310-8fa8-9805f1628bb7>
Sun, 25 Jun 2006 12:15:35 +0000 (12:15 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@18574 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-ipv6.c

index 7c1475022a2246730b652405b2a436bc7e467b7a..7a9657bb0ac2f241d3bc6493db2d19df9c3df188 100644 (file)
@@ -585,9 +585,7 @@ dissect_ipv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
   offset = 0;
   tvb_memcpy(tvb, (guint8 *)&ipv6, offset, sizeof(ipv6));
 
-  pinfo->ipproto = ipv6.ip6_nxt; /* XXX make work TCP follow (ipproto = 6) */
-
-  /* Get the payload length */
+  /* Get extension header and payload length */
   plen = g_ntohs(ipv6.ip6_plen);
 
   /* Adjust the length of this tvbuff to include only the IPv6 datagram. */
@@ -732,6 +730,11 @@ again:
   proto_tree_add_uint_hidden(ipv6_tree, hf_ipv6_final, tvb, poffset, 1, nxt);
 #endif
 
+  /* collect packet info */
+  pinfo->ipproto = nxt;
+  pinfo->iplen = sizeof(ipv6) + plen;
+  pinfo->iphdrlen = offset;
+
   /* If ipv6_reassemble is on, this is a fragment, and we have all the data
    * in the fragment, then just add the fragment to the hashtable.
    */