Ethereal-dev: [Ethereal-dev] IS-IS restart TLV support
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Hannes Gredler <hannes@xxxxxxxxxxx>
Date: Sun, 10 Feb 2002 00:04:02 +0100
ethereal developers, pls find attached a patch to support the new restart TLV for IS-IS; /hannes
Index: packet-isis-hello.c =================================================================== RCS file: /cvsroot/ethereal/packet-isis-hello.c,v retrieving revision 1.26 diff -u -r1.26 packet-isis-hello.c --- packet-isis-hello.c 2002/01/24 09:20:49 1.26 +++ packet-isis-hello.c 2002/02/09 22:59:23 @@ -53,6 +53,7 @@ static int hf_isis_hello_clv_ipv6_int_addr = -1; static int hf_isis_hello_clv_ptp_adj = -1; static int hf_isis_hello_clv_mt = -1; +static int hf_isis_hello_clv_restart = -1; static gint ett_isis_hello = -1; static gint ett_isis_hello_clv_area_addr = -1; @@ -65,6 +66,7 @@ static gint ett_isis_hello_clv_ipv6_int_addr = -1; static gint ett_isis_hello_clv_ptp_adj = -1; static gint ett_isis_hello_clv_mt = -1; +static gint ett_isis_hello_clv_restart = -1; static const value_string isis_hello_circuit_type_vals[] = { { ISIS_HELLO_TYPE_RESERVED, "Reserved 0 (discard PDU)"}, @@ -103,6 +105,9 @@ static void dissect_hello_nlpid_clv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int id_length, int length); +static void dissect_hello_restart_clv(tvbuff_t *tvb, + packet_info *pinfo, proto_tree *tree, int offset, + int id_length, int length); static const isis_clv_handle_t clv_l1_hello_opts[] = { @@ -143,6 +148,12 @@ dissect_hello_ipv6_int_addr_clv }, { + ISIS_CLV_L1H_RESTART, + "Restart Signaling", + &ett_isis_hello_clv_restart, + dissect_hello_restart_clv + }, + { ISIS_CLV_L1H_AUTHENTICATION_NS, "Authentication(non spec)", &ett_isis_hello_clv_auth, @@ -212,6 +223,12 @@ dissect_hello_auth_clv }, { + ISIS_CLV_L2H_RESTART, + "Restart Signaling", + &ett_isis_hello_clv_restart, + dissect_hello_restart_clv + }, + { ISIS_CLV_L2H_AUTHENTICATION, "Authentication", &ett_isis_hello_clv_auth, @@ -275,6 +292,12 @@ dissect_hello_auth_clv }, { + ISIS_CLV_PTP_RESTART, + "Restart Option", + &ett_isis_hello_clv_restart, + dissect_hello_restart_clv + }, + { ISIS_CLV_PTP_ADJ, "Point-to-point Adjacency State", &ett_isis_hello_clv_ptp_adj, @@ -294,6 +317,35 @@ } }; + +/* + * Name: dissect_hello_restart_clv() + * + * Description: + * Decode for a restart clv - only found in IIHs + * hence no call in the common clv dissector + * + */ + +static void +dissect_hello_restart_clv(tvbuff_t *tvb, + packet_info *pinfo, proto_tree *tree, int offset, + int id_length, int length) +{ + int restart_options; + + restart_options = 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, 2, + "Remaining holding time: %us", + tvb_get_ntohs(tvb, offset+1) ); +} + /* * Name: dissect_hello_nlpid_clv() * @@ -774,9 +826,14 @@ &ett_isis_hello_clv_ipv4_int_addr, &ett_isis_hello_clv_ipv6_int_addr, &ett_isis_hello_clv_ptp_adj, - &ett_isis_hello_clv_mt + &ett_isis_hello_clv_mt, + &ett_isis_hello_clv_restart }; proto_register_field_array(proto_isis, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); } + + + + Index: packet-isis-hello.h =================================================================== RCS file: /cvsroot/ethereal/packet-isis-hello.h,v retrieving revision 1.6 diff -u -r1.6 packet-isis-hello.h --- packet-isis-hello.h 2001/12/20 07:33:21 1.6 +++ packet-isis-hello.h 2002/02/09 22:59:23 @@ -47,6 +47,7 @@ #define ISIS_CLV_L1H_PADDING 8 #define ISIS_CLV_L1H_NLPID 129 #define ISIS_CLV_L1H_IP_INTERFACE_ADDR 132 +#define ISIS_CLV_L1H_RESTART 211 #define ISIS_CLV_L1H_MT 229 #define ISIS_CLV_L1H_IPv6_INTERFACE_ADDR 232 @@ -65,6 +66,7 @@ #define ISIS_CLV_L2H_PADDING 8 #define ISIS_CLV_L2H_NLPID 129 #define ISIS_CLV_L2H_IP_INTERFACE_ADDR 132 +#define ISIS_CLV_L2H_RESTART 211 #define ISIS_CLV_L2H_MT 229 #define ISIS_CLV_L2H_IPv6_INTERFACE_ADDR 232 /* @@ -81,6 +83,7 @@ #define ISIS_CLV_PTP_PADDING 8 #define ISIS_CLV_PTP_NLPID 129 #define ISIS_CLV_PTP_IP_INTERFACE_ADDR 132 +#define ISIS_CLV_PTP_RESTART 211 #define ISIS_CLV_PTP_MT 229 #define ISIS_CLV_PTP_IPv6_INTERFACE_ADDR 232 #define ISIS_CLV_PTP_ADJ 240 @@ -92,6 +95,13 @@ #define ISIS_CLV_PTP_AUTHENTICATION 133 /* + * 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. */ @@ -101,3 +111,10 @@ extern void isis_register_hello(int proto_isis); #endif /* _PACKET_ISIS_HELLO_H */ + + + + + + +
- Follow-Ups:
- Re: [Ethereal-dev] IS-IS restart TLV support
- From: Guy Harris
- Re: [Ethereal-dev] IS-IS restart TLV support
- Prev by Date: Re: [Ethereal-dev] Ethereal 0.9.1 segfault during filtering (w/gdb backtrace)
- Next by Date: Re: [Ethereal-dev] IS-IS restart TLV support
- Previous by thread: [Ethereal-dev] ringbuffer limits...
- Next by thread: Re: [Ethereal-dev] IS-IS restart TLV support
- Index(es):