Ethereal-dev: [Ethereal-dev] Mobile IPv4 Vendor Specific extensions decode problem
Hi,
I would like to report an error on decoding Mobile IPv4
packets. If a Mobile IPv4 Registration Request message is
displayed in ethereal, there is an error in how the Vendor
specific extension is decoded. Normal MIPv4 extensions decode
correctly, but the Vendor specific extensions have a different
format. RFC 3115 defines the following format for Vendor Specific
extensions:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Reserved | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor/Org-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor-CVSE-Type | Vendor-CVSE-Value ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following snippet of code in packet-mip.c seems to be causing the
error. For (at least) the CVSE_EXT and NVSE_EXT cases the code should be
added so that the different format for the extensions is supported.
/* Code to dissect extensions */
static void
dissect_mip_extensions( tvbuff_t *tvb, int offset, proto_tree *tree)
{
...
case OLD_CVSE_EXT: /* RFC 3115 */
case CVSE_EXT: /* RFC 3115 */
case OLD_NVSE_EXT: /* RFC 3115 */
case NVSE_EXT: /* RFC 3115 */
case MF_CHALLENGE_EXT: /* RFC 3012 */
/* The default dissector is good here. The challenge is all hex anyway.
*/
default:
proto_tree_add_item(ext_tree, hf_mip_ext, tvb, offset, ext_len, FALSE);
break;
} /* ext type */
...
Please let me know if there is something i can do to help bring
about a fix to this problem. I've only ever used ethereal with
precompiled binaries on Windows, so if somebody could point me the
direction how to fix this and recompile myself, that would be
great.
-Thanks,
Tim