Ethereal-dev: Re: [Ethereal-dev] IS-IS restart CLV patch
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jaap Keuter <jaap.keuter@xxxxxxxxx>
Date: Mon, 3 Apr 2006 13:16:30 +0200 (CEST)
Hi,
Are your changes based on RFC 3847? If so, why is the required length 3?
The RFC states: (Note: Remaining fields are required when the RA bit is
set).
Also why is the required length including SYSID 9? The RFC states:(ID
Length octets).
Also it's unusual to include the declaration of isis_restart_flag_vals
inside the function.
Thanx,
Jaap
On Mon, 3 Apr 2006, Hannes Gredler wrote:
> hi ethereal developers,
>
> attached a patch that makes the IS-IS Restart CLV disector
> compliant to RFC 3847;
>
> asking for inclusion;
>
> /hannes
>
>
> Index: epan/dissectors/packet-isis-hello.c
> ===================================================================
> --- epan/dissectors/packet-isis-hello.c (revision 17281)
> +++ epan/dissectors/packet-isis-hello.c (working copy)
> @@ -336,29 +336,51 @@
> *
> */
>
> +#define ISIS_CLV_RESTART_FLAG_BITS 3
> +#define ISIS_CLV_RESTART_FLAG_MASK 0x07
> +#define ISIS_CLV_RESTART_MINLEN 3
> +#define ISIS_CLV_RESTART_SYSID_MINLEN 9
> +
> static void
> dissect_hello_restart_clv(tvbuff_t *tvb,
> proto_tree *tree, int offset, int id_length _U_, int length)
> {
> - int restart_options;
> + guint8 restart_flags;
>
> - if (length != 3) {
> + static const value_string isis_restart_flag_vals[] = {
> + { 0x1, "Restart Request"},
> + { 0x2, "Restart Acknowledgement"},
> + { 0x4, "Suppress adjacency advertisement"},
> + { 0, NULL }
> + };
> +
> + if (length != ISIS_CLV_RESTART_MINLEN &&
> + length != ISIS_CLV_RESTART_SYSID_MINLEN) {
> isis_dissect_unknown(tvb, tree, offset,
> - "malformed TLV (%d vs 3)",
> + "malformed TLV (%u vs 3/9)",
> length, 3 );
> return;
> }
>
> - restart_options = tvb_get_guint8(tvb, offset);
> + restart_flags = tvb_get_guint8(tvb, offset);
>
> - proto_tree_add_text ( tree, tvb, offset, 1,
> - "Restart Request bit %s, "
> - "Restart Acknowledgement bit %s",
> - ISIS_MASK_RESTART_RR(restart_options) ? "set" : "clear",
> - ISIS_MASK_RESTART_RA(restart_options) ? "set" : "clear");
> + proto_tree_add_text ( tree, tvb, offset, 1, "Restart Flags: %s",
> + decode_enumerated_bitfield(restart_flags,
> + ISIS_CLV_RESTART_FLAG_MASK,
> + ISIS_CLV_RESTART_FLAG_BITS,
> + isis_restart_flag_vals, "%s" ));
> +
> + /* remaining holdtime */
> proto_tree_add_text ( tree, tvb, offset+1, 2,
> "Remaining holding time: %us",
> tvb_get_ntohs(tvb, offset+1) );
> +
> + /* On LAN circuits there may be an optional sysid. */
> + if (length == ISIS_CLV_RESTART_SYSID_MINLEN) {
> + proto_tree_add_text ( tree, tvb, offset+3, 6,
> + "System-ID: %s",
> + print_system_id( tvb_get_ptr(tvb, offset+3, 6), 6 ) );
> + }
> }
>
> /*
> Index: epan/dissectors/packet-isis-hello.h
> ===================================================================
> --- epan/dissectors/packet-isis-hello.h (revision 17281)
> +++ epan/dissectors/packet-isis-hello.h (working copy)
> @@ -40,13 +40,6 @@
> #define ISIS_HELLO_TYPE_LEVEL_12 3
>
> /*
> - * misc. bittest macros
> - */
> -
> -#define ISIS_MASK_RESTART_RR(x) ((x)&0x1)
> -#define ISIS_MASK_RESTART_RA(x) ((x)&0x2)
> -
> -/*
> * Published API functions. NOTE, this are "local" API functions and
> * are only valid from with isis decodes.
> */
> _______________________________________________
> Ethereal-dev mailing list
> Ethereal-dev@xxxxxxxxxxxx
> http://www.ethereal.com/mailman/listinfo/ethereal-dev
>
- References:
- [Ethereal-dev] IS-IS restart CLV patch
- From: Hannes Gredler
- [Ethereal-dev] IS-IS restart CLV patch
- Prev by Date: Re: [Ethereal-dev] Update to the NCP dissector
- Next by Date: [Ethereal-dev] IP fragmentation
- Previous by thread: [Ethereal-dev] IS-IS restart CLV patch
- Next by thread: Re: [Ethereal-dev] Mbps display in the LMP dissector
- Index(es):