Ethereal-dev: [Ethereal-dev] newbie wants to add some IS-IS stuff ...
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, 8 Apr 2001 20:03:49 +0200
hi all,
played a little bit with integrated IS-IS and discoverred some bugs,
& unsupported things.
first of all there is no OSI support over PPP.
[hannes@ghostrider ethereal-0.8.16]$ diff ../old/ethereal-0.8.16/ppptypes.h .
34a35
> #define PPP_OSI 0x23
[hannes@ghostrider ethereal-0.8.16]$ diff ../old/ethereal-0.8.16/packet-osi.c .
45a46
> #include "ppptypes.h"
280a282
[hannes@ghostrider ethereal-0.8.16]$ diff ../old/ethereal-0.8.16/packet-osi.c .
45a46
> #include "ppptypes.h"
280a282
> dissector_add("ppp.protocol", PPP_OSI, dissect_osi, -1);
these three fixes should do it.
next i discovered a bug in the P2P ISIS processing engine which, increments the offset
before checking if its a P2P hello or a LAN Hello, for LAN hellos the decode is fine,
however for P2P hellos the rest of the packet gets messed up.
[hannes@ghostrider ethereal-0.8.16]$ diff -e ../old/ethereal-0.8.16/packet-isis-hello.c .
497a
if (tree) {
proto_tree_add_uint_format(hello_tree, hf_isis_hello_priority_reserved, NullTVB,
offset, 1, pd[offset],
"Priority : %d, reserved(0x%02x == 0)",
pd[offset]&ISIS_HELLO_PRIORITY_MASK,
pd[offset]&ISIS_HELLO_P_RESERVED_MASK );
}
offset += 1;
.
482,490d
this should do it.
and finally i added support for the hostname TLV #137
[hannes@ghostrider ethereal-0.8.16]$ diff -e ../old/ethereal-0.8.16/packet-isis-clv.h .
58a
extern void isis_dissect_hostname_clv(const u_char *pd, int offset,
guint length, frame_data *fd, proto_tree *tree );
.
[hannes@ghostrider ethereal-0.8.16]$ diff -e ../old/ethereal-0.8.16/packet-isis-clv.c .
174a
/*
* Name: isis_dissect_hostname_clv()
*
* Description:
* dump the hostname information found in TLV 137
* pls note that the hostname is not null terminated
*
* Input:
* u_char * : packet data
* int : offset into packet data where we are.
* guint : length of clv we are decoding
* frame_data * : frame data (complete frame)
* proto_tree * : protocol display tree to fill out. May be NULL
* char * : Password meaning
*
* Output:
* void, but we will add to proto tree if !NULL.
*/
void
isis_dissect_hostname_clv(const u_char *pd, int offset,
guint length, frame_data *fd, proto_tree *tree ) {
char sbuf[256*6];
char *s = sbuf;
int hlen = length;
int old_offset = offset;
if ( !tree ) return; /* nothing to do! */
memcpy ( s, &pd[offset], hlen);
sbuf[hlen] = 0; /* don't forget null termination */
if ( hlen == 0 ) {
sprintf ( sbuf, "--none--" );
}
proto_tree_add_text ( tree, NullTVB, old_offset, hlen,
"Hostname: %s", sbuf );
}
.
[hannes@ghostrider ethereal-0.8.16]$ diff -e ../old/ethereal-0.8.16/packet-isis-lsp.c .
948a
&ett_isis_lsp_clv_hostname,
.
361a
* Name: dissect_lsp_hostname_clv()
*
* Description:
* Decode for a lsp packets hostname clv. Calls into the
* clv common one.
*
* Input:
* u_char * : packet data
* int : current offset into packet data
* guint : length of this clv
* int : length of IDs in packet.
* frame_data * : frame data
* proto_tree * : proto tree to build on (may be null)
*
* Output:
* void, will modify proto_tree if not null.
*/
static void
dissect_lsp_hostname_clv(const u_char *pd, int offset,
guint length, int id_length, frame_data *fd, proto_tree *tree) {
isis_dissect_hostname_clv(pd, offset, length, fd, tree );
}
/*
.
200a
{
ISIS_CLV_L2_LSP_HOSTNAME,
"Hostname",
&ett_isis_lsp_clv_hostname,
dissect_lsp_hostname_clv
},
.
137a
{
ISIS_CLV_L1_LSP_HOSTNAME,
"Hostname",
&ett_isis_lsp_clv_hostname,
dissect_lsp_hostname_clv
},
.
99a
static void dissect_lsp_hostname_clv(const u_char *pd, int offset,
guint length, int id_length, frame_data *fd, proto_tree *tree);
.
66a
static gint ett_isis_lsp_clv_hostname = -1;
.
[hannes@ghostrider ethereal-0.8.16]$ diff -e ../old/ethereal-0.8.16/packet-isis-lsp.h .
83a
#define ISIS_CLV_L2_LSP_HOSTNAME 137
.
64a
#define ISIS_CLV_L1_LSP_HOSTNAME 137
.
---
pls let me know what you think of it, and commit it to the source
tree.
/hannes
- Follow-Ups:
- Re: [Ethereal-dev] newbie wants to add some IS-IS stuff ...
- From: Guy Harris
- Re: [Ethereal-dev] newbie wants to add some IS-IS stuff ...
- Prev by Date: Re: [Ethereal-dev] New dissector : RWALL
- Next by Date: Re: [Ethereal-dev] newbie wants to add some IS-IS stuff ...
- Previous by thread: Re: [Ethereal-dev] New dissector : RWALL
- Next by thread: Re: [Ethereal-dev] newbie wants to add some IS-IS stuff ...
- Index(es):





