On Mon, Jun 05, 2000 at 01:25:30PM +0200, Luca Risso wrote: > > > > Here is the sample trace file of a L2TP connection between two PCs. > > LAC IP address is 172.16.175.110 > LNS address is 172.16.246.176 > > The trace contain the following actions: > - LAC opens a new tunnel > - LAC opens a new call (PPP peers: 172.16.175.106 <---> 172.16.175.107) > - LAC sends a couple of ping over PPP connection (packets 60-61, 63-64) > - LAC closes the call > - LAC closes the tunnel > > No PPP protocol info seems to be shown into the L2TP packet and also the data > parts of packet number 60 and 63 (ping) doesn't appear in bold font as usual. > > Thanks for your help. > > Luca Risso > > (See attached file: l2tp.log) Here's a minimal patch that has L2TP call the PPP dissector when appropriate. This is happening at the wrong time however; the column information is not being updated with information from protocols higher than L2TP. (I know why; but the fix uncovered some more problems. I'll put the complete fix into Ethereal 0.8.9 which will be out this week). I imagine that in the very near future Ethereal will have run-time configuration of whether or not to show tunnelled protocols' info in the packet columns. Hopefully, we'll decide this on a per-protocol basis (AH-IP-in-IP, GRE, L2TP, PIM, SOCKS, etc.). We need to add a way for protocol dissectors to register run-time options with the core Ethereal routines. Thanks for the trace file! --gilbert
--- packet-l2tp.c Mon May 8 22:15:24 2000
+++ ../ethereal-0.8.8-mod/packet-l2tp.c Tue Jun 6 01:23:06 2000
@@ -53,6 +53,7 @@
#include <ctype.h>
#include <glib.h>
#include "packet.h"
+#include "packet-ppp.h"
#include "resolv.h"
#define UDP_PORT_L2TP 1701
@@ -355,10 +356,15 @@
proto_tree_add_uint_format(l2tp_tree,hf_l2tp_code,offset,1,rhcode,
"Zero Length Bit message");
}
- if (!CONTROL_BIT(ver)) { /* Data Messages so we are done */
- proto_tree_add_uint_format(l2tp_tree,hf_l2tp_code, (offset += 4) , (length - 12 ) , rhcode, "Data: ");
- return;
- }
+
+ if (!CONTROL_BIT(ver)) { /* Data Messages so we are done */
+ offset += 4;
+ length -= 12;
+ if (IS_DATA_IN_FRAME(offset)) {
+ dissect_ppp(pd, offset, fd, tree);
+ }
+ return;
+ }
offset += 4;
while (index < length ) { /* Process AVP's */
Powered by MHonArc 2.6.10