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):