Ethereal-dev: Re: [Ethereal-dev] dissector for FrameRelay

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Paul Ionescu <paul@xxxxxxxx>
Date: Sun, 07 Jan 2001 21:07:56 +0200
Gilbert Ramirez wrote:
> 
> On Sat, 6 Jan 2001 17:14:52 -0800
> Guy Harris <gharris@xxxxxxxxxxxx> wrote:
> 
> >
> > so I'm inclined to wait until I see a Frame Relay capture "in the flesh"
> > before adding any Frame Relay support to Ethereal - or to tcpdump, for
> > that matter - so that I know how many different flavors of Frame Relay
> > capture need to be supported and know what to expect as the header for
> > each of those flavors.
> >
> 
> Also be on the lookout for frame relay at other layers, like FR over ATM.
> I guess this is possible, since packet-atm.c has ATT_HL_FRMR defined.
> 
> --gilbert

Well, I just discovered that Cisco routers support Frame Relay over GRE.
So I have attached a patch for packet-gre.c to interpret the FR over
GRE.
Attached is a patch for GRE and a sample capture of frame relay over
gre.

The Frame Relay dissector is FAR from perfect, but I wanted to know what
are you thinking about it.

I know that there are FR with 2/3/4 byte DLCI but right now if you have
in ethereal a bitmaped field with the bitmask 0xFCF0 (for calculating
the DLCI number for 2 byte long address field) you get a wrong number
because the bitmask is not contiguous.
So I leaved that way until it will be clear if I will implement some
decoding of DLCI in the dissector or I will wait until the bitmaped
variables will support discontiguous bitmasks.
--- packet-gre.c.orig	Sun Jan  7 20:21:11 2001
+++ packet-gre.c	Sun Jan  7 20:27:08 2001
@@ -39,6 +39,7 @@
 #include "packet.h"
 #include "packet-ip.h"
 #include "packet-ipx.h"
+#include "packet-fr.h"
 #include "packet-wccp.h"
 #include "in_cksum.h"
 
@@ -65,6 +66,7 @@
 #define	GRE_IP		0x0800
 #define GRE_WCCP	0x883E
 #define GRE_IPX		0x8137
+#define GRE_FR          0x6559
 
 static void add_flags_and_ver(proto_tree *, guint16, tvbuff_t *, int, int);
 static void dissect_gre_wccp2_redirect_header(tvbuff_t *, int, proto_tree *);
@@ -74,6 +76,7 @@
 	{ GRE_IP,   "IP" },
 	{ GRE_WCCP, "WCCP"},
 	{ GRE_IPX,  "IPX"},
+        { GRE_FR,   "FR"},
 	{ 0,        NULL  }
 };
 
@@ -259,6 +262,9 @@
       case GRE_IPX:
         dissect_ipx(next_tvb, pinfo, tree);
         break;
+      case GRE_FR:
+        dissect_fr(next_tvb, pinfo, tree);
+        break;        
       default:
 	dissect_data(next_tvb, 0, pinfo, gre_tree);
 	break;

Attachment: fr1.cap
Description: Binary data