Ethereal-dev: Re: [ethereal-dev] Regarding EIGRP dissector (patch included)
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Paul Ionescu <ipaul@xxxxxxxxx>
Date: Mon, 22 May 2000 12:23:27 +0300
Guy Harris wrote: > If it's encapsulated in more than IP, then it should go into its own > file. > > However, if all the protocols in which it's encapsulated support > "dissector_add()"-style tables, it doesn't have to be global; > unfortunately, IPX and AppleTalk currently don't support them, so, for > now, it'd have to be global. Ok. I will separate the eigrp code in the future. For moment, I did a patch to support AppleTalk and IPX dissectors for EIGRP. Also, I did made just a "packet-eigrp.h" to declare dissect_eigrp() function. Attached to the email are : packet-eigrp.h file a patch for AT and IPX eigrp and a sample capture file of EIGRP Hello for IPX and AT. You may commit it. BTW. What command or option can I give to "cvs diff some.files" to also include in patch the new files which I created ?
Index: ethereal/packet-ipx.c =================================================================== RCS file: /cvsroot/ethereal/packet-ipx.c,v retrieving revision 1.58 diff -u -r1.58 packet-ipx.c --- packet-ipx.c 2000/05/19 19:48:01 1.58 +++ packet-ipx.c 2000/05/22 09:11:10 @@ -41,6 +41,7 @@ #include "packet-ipx.h" #include "packet-nbipx.h" #include "packet-ncp.h" +#include "packet-eigrp.h" #include "resolv.h" #include "packet-snmp.h" @@ -111,6 +112,9 @@ static void dissect_ipxmsg(const u_char *pd, int offset, frame_data *fd, proto_tree *tree); +static void +dissect_eigrp_ipx(const u_char *pd, int offset, frame_data *fd, proto_tree *tree); + typedef void (dissect_func_t)(const u_char *, int, frame_data *, proto_tree *); #define UDP_PORT_IPX 213 /* RFC 1234 */ @@ -154,6 +158,7 @@ #define IPX_SOCKET_ATTACHMATE_GW 0x055d #define IPX_SOCKET_IPX_MESSAGE 0x4001 #define IPX_SOCKET_ADSM 0x8522 /* www.tivoli.com */ +#define IPX_SOCKET_EIGRP 0x85be /* cisco ipx eigrp */ #define IPX_SOCKET_WIDE_AREA_ROUTER 0x9001 #define IPX_SOCKET_SNMP_AGENT 0x900F /* RFC 1906 */ #define IPX_SOCKET_SNMP_SINK 0x9010 /* RFC 1906 */ @@ -190,6 +195,7 @@ { IPX_SOCKET_TCP_TUNNEL, NULL, "TCP Tunnel" }, { IPX_SOCKET_TCP_TUNNEL, NULL, "TCP Tunnel" }, { IPX_SOCKET_ADSM, NULL, "ADSM" }, + { IPX_SOCKET_EIGRP, dissect_eigrp_ipx, "Cisco EIGRP for IPX" }, { IPX_SOCKET_WIDE_AREA_ROUTER, NULL, "Wide Area Router" }, { 0x0000, NULL, NULL } @@ -819,6 +825,11 @@ } } +static void +dissect_eigrp_ipx(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) +{ + dissect_eigrp(pd,offset,fd,tree); +} void proto_register_ipx(void) Index: ethereal/packet-ip.c =================================================================== RCS file: /cvsroot/ethereal/packet-ip.c,v retrieving revision 1.85 diff -u -r1.85 packet-ip.c --- packet-ip.c 2000/05/11 08:15:11 1.85 +++ packet-ip.c 2000/05/22 09:11:12 @@ -55,8 +55,8 @@ #include "llcsaps.h" #include "packet-ip.h" #include "packet-ipsec.h" +#include "packet-eigrp.h" -static void dissect_eigrp(const u_char *, int, frame_data *, proto_tree *); static void dissect_icmp(const u_char *, int, frame_data *, proto_tree *); static void dissect_igmp(const u_char *, int, frame_data *, proto_tree *); @@ -1518,7 +1518,7 @@ { 0, NULL } }; -static void +void dissect_eigrp(const u_char *pd, int offset, frame_data *fd, proto_tree *tree) { e_eigrp ih; proto_tree *eigrp_tree; Index: ethereal/packet-atalk.c =================================================================== RCS file: /cvsroot/ethereal/packet-atalk.c,v retrieving revision 1.34 diff -u -r1.34 packet-atalk.c --- packet-atalk.c 2000/05/11 08:14:55 1.34 +++ packet-atalk.c 2000/05/22 09:11:13 @@ -35,6 +35,7 @@ #include <glib.h> #include "packet.h" #include "packet-atalk.h" +#include "packet-eigrp.h" #include "etypes.h" #include "ppptypes.h" @@ -104,6 +105,7 @@ #define DDP_RTMPREQ 0x05 #define DDP_ZIP 0x06 #define DDP_ADSP 0x07 +#define DDP_EIGRP 0x58 #define DDP_HEADER_SIZE 13 gchar * @@ -132,6 +134,7 @@ {DDP_RTMPREQ, "AppleTalk Routing Table request"}, {DDP_ZIP, "AppleTalk Zone Information Protocol packet"}, {DDP_ADSP, "AppleTalk Data Stream Protocol"}, + {DDP_EIGRP, "Cisco EIGRP for AppleTalk"}, {0, NULL} }; @@ -421,6 +424,9 @@ offset += DDP_HEADER_SIZE; switch ( ddp.type ) { + case DDP_EIGRP: + dissect_eigrp(pd, offset, fd, tree); + break; case DDP_NBP: dissect_nbp(pd, offset, fd, tree); break;
/* packet-eigrp.h * * $Id: packet-eigrp.h,v 1.1 2000/02/15 21:02:05 gram Exp $ * * Ethereal - Network traffic analyzer * By Gerald Combs <gerald@xxxxxxxx> * Copyright 1998 Gerald Combs * * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ void dissect_eigrp(const u_char *, int, frame_data *, proto_tree *);
Attachment:
eigrp.pcap
Description: Binary data
- Follow-Ups:
- Re: [ethereal-dev] Regarding EIGRP dissector (patch included)
- From: Guy Harris
- Re: [ethereal-dev] Regarding EIGRP dissector (patch included)
- References:
- [ethereal-dev] Regarding EIGRP dissector
- From: Paul Ionescu
- Re: [ethereal-dev] Regarding EIGRP dissector
- From: Guy Harris
- [ethereal-dev] Regarding EIGRP dissector
- Prev by Date: Re: [ethereal-dev] RE: Correct sniffdecomp.c attached
- Next by Date: [ethereal-dev] Force a different parsing of a packet, after capture
- Previous by thread: Re: [ethereal-dev] Regarding EIGRP dissector
- Next by thread: Re: [ethereal-dev] Regarding EIGRP dissector (patch included)
- Index(es):