Wireshark-dev: [Wireshark-dev] redback dissector update
From: Florian Lohoff <flo@xxxxxxxxxx>
Date: Fri, 13 Apr 2007 14:24:58 +0200
Hi,
i took the time to polish the redback dissector a little and decode some
more protocols:
Index: epan/dissectors/packet-redback.c
===================================================================
--- epan/dissectors/packet-redback.c (revision 21405)
+++ epan/dissectors/packet-redback.c (working copy)
@@ -6,7 +6,7 @@
* By Gerald Combs <gerald@xxxxxxxxxxxxx>
*
* Start of RedBack SE400/800 tcpdump trace disassembly
- * Copyright 2005,2006 Florian Lohoff <flo@xxxxxxxxxx>
+ * Copyright 2005-2007 Florian Lohoff <flo@xxxxxxxxxx>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -41,6 +41,7 @@
static dissector_handle_t eth_handle;
static dissector_handle_t clnp_handle;
static dissector_handle_t arp_handle;
+static dissector_handle_t ppp_handle;
/* wrapper for passing the PIC type to the generic ATM dissector */
static void
@@ -81,47 +82,58 @@
"Layer3 Offset: %u", l3off);
tisub = proto_tree_add_text (subtree, tvb, 22, 2,
"Data Offset: %u", dataoff);
- next_tvb = tvb_new_subset(tvb, l3off, -1, -1);
/* Mark the gap as "Data" for now */
if (dataoff > l3off) {
proto_tree_add_text (subtree, tvb, 24, l3off-24, "Data (%d bytes)", l3off-24);
}
- /*
- * Just a guess - In case we see a difference in dataoff vs l3off
- * we assume there is an ethernet header. Traces from an OC12 didnt
- * show any header in here
- */
- if (dataoff > l3off) {
- call_dissector(eth_handle, next_tvb, pinfo, tree);
- } else {
- switch(proto) {
- case 0x01:
+ switch(proto) {
+ case 0x01:
/*
* IP - We assume IPv6 has a different protocol although
* i might be wrong - Havent seen any traces
*/
- call_dissector(ipv4_handle, next_tvb, pinfo, tree);
- break;
- case 0x02:
+ next_tvb = tvb_new_subset(tvb, dataoff, -1, -1);
+ call_dissector(ipv4_handle, next_tvb, pinfo, tree);
+ break;
+ case 0x02:
/*
* It is CLNP although it seem the Packet Asic fills
* some data in the packet so we have a "broken" packet in
* the trace
*/
- call_dissector(clnp_handle, next_tvb, pinfo, tree);
- break;
- case 0x03: /* Unicast Ethernet tx - Seen with PPPoE PADO */
- case 0x04: /* Unicast Ethernet rx - Seen with ARP */
- case 0x08: /* Broadcast Ethernet rx - Seen with PPPoE PADI */
- call_dissector(eth_handle, next_tvb, pinfo, tree);
- break;
- default:
- tisub = proto_tree_add_text (subtree, tvb, 24, length-24,
+ next_tvb = tvb_new_subset(tvb, l3off, -1, -1);
+ call_dissector(clnp_handle, next_tvb, pinfo, tree);
+ break;
+ case 0x06:
+
+ /* HACK This is a guess - i dont know what this flag means
+ * but my best guess is that it means "incoming" e.g.
+ * the direction of the packet. In case of incoming PPP
+ * packets there seems to be some padding which does
+ * not get reflected in the l3off/dataoff
+ */
+
+ if (flags & 0x00400000) {
+ next_tvb = tvb_new_subset(tvb, l3off, -1, -1);
+ } else {
+ proto_tree_add_text (subtree, tvb, l3off, 4, "Unknown Data (%d bytes)", 4);
+ next_tvb = tvb_new_subset(tvb, l3off+4, -1, -1);
+ }
+
+ call_dissector(ppp_handle, next_tvb, pinfo, tree);
+ break;
+ case 0x03: /* Unicast Ethernet tx - Seen with PPPoE PADO */
+ case 0x04: /* Unicast Ethernet rx - Seen with ARP */
+ case 0x08: /* Broadcast Ethernet rx - Seen with PPPoE PADI */
+ next_tvb = tvb_new_subset(tvb, l3off, -1, -1);
+ call_dissector(eth_handle, next_tvb, pinfo, tree);
+ break;
+ default:
+ tisub = proto_tree_add_text (subtree, tvb, 24, length-24,
"Unknown Protocol Data %u", proto);
- break;
- }
+ break;
}
return;
}
@@ -147,6 +159,7 @@
eth_handle = find_dissector("eth_withoutfcs");
clnp_handle = find_dissector("clnp");
arp_handle = find_dissector("arp");
+ ppp_handle = find_dissector("ppp");
redback_handle = create_dissector_handle(dissect_redback, proto_redback);
dissector_add("wtap_encap", WTAP_ENCAP_REDBACK, redback_handle);
Flo
--
Florian Lohoff flo@xxxxxxxxxx +49-171-2280134
Those who would give up a little freedom to get a little
security shall soon have neither - Benjamin Franklin
Attachment:
signature.asc
Description: Digital signature
- Follow-Ups:
- Re: [Wireshark-dev] redback dissector update
- From: Luis Ontanon
- Re: [Wireshark-dev] redback dissector update
- Prev by Date: [Wireshark-dev] [PATCH] Added lower case treatment for Megaco messages
- Next by Date: Re: [Wireshark-dev] redback dissector update
- Previous by thread: Re: [Wireshark-dev] [PATCH] Added lower case treatment for Megaco messages
- Next by thread: Re: [Wireshark-dev] redback dissector update
- Index(es):