diff options
author | Jaap Keuter <jaap.keuter@xs4all.nl> | 2010-11-20 18:14:30 +0000 |
---|---|---|
committer | Jaap Keuter <jaap.keuter@xs4all.nl> | 2010-11-20 18:14:30 +0000 |
commit | ba2d64102c32e1087bb5a38c1749ca738dc58c1f (patch) | |
tree | 7735eef3874f19b23dce47d5731827f96e73caf5 | |
parent | d8462d9e0c68ce023ecd599a615bec1efdc11d3d (diff) |
Fix for bug 5422:
Add support for dissecting SLL type 0x03 frames.
svn path=/trunk/; revision=34987
-rw-r--r-- | epan/dissectors/packet-eth.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-sll.c | 9 | ||||
-rw-r--r-- | epan/dissectors/packet-sll.h | 1 |
3 files changed, 13 insertions, 0 deletions
diff --git a/epan/dissectors/packet-eth.c b/epan/dissectors/packet-eth.c index 3a4d31ec52..2f35619dbf 100644 --- a/epan/dissectors/packet-eth.c +++ b/epan/dissectors/packet-eth.c @@ -36,6 +36,7 @@ #include "packet-ipx.h" #include "packet-isl.h" #include "packet-llc.h" +#include "packet-sll.h" #include <epan/crc32.h> #include <epan/tap.h> #include <epan/expert.h> @@ -755,6 +756,8 @@ proto_reg_handoff_eth(void) dissector_add("chdlctype", ETHERTYPE_ETHBRIDGE, eth_withoutfcs_handle); dissector_add("gre.proto", ETHERTYPE_ETHBRIDGE, eth_withoutfcs_handle); + dissector_add("sll.ltype", LINUX_SLL_P_ETHERNET, eth_withoutfcs_handle); + /* * This is to handle the output for the Cisco CMTS "cable intercept" * command - it encapsulates Ethernet frames in UDP packets, but diff --git a/epan/dissectors/packet-sll.c b/epan/dissectors/packet-sll.c index 4907bea69b..902e53db0a 100644 --- a/epan/dissectors/packet-sll.c +++ b/epan/dissectors/packet-sll.c @@ -33,6 +33,7 @@ #include "packet-sll.h" #include "packet-ipx.h" #include "packet-llc.h" +#include "packet-eth.h" #include "packet-ppp.h" #include "packet-gre.h" #include <epan/addr_resolv.h> @@ -78,6 +79,7 @@ static const value_string packet_type_vals[] = { static const value_string ltype_vals[] = { { LINUX_SLL_P_802_3, "Raw 802.3" }, + { LINUX_SLL_P_ETHERNET, "Ethernet" }, { LINUX_SLL_P_802_2, "802.2 LLC" }, { LINUX_SLL_P_PPPHDLC, "PPP (HDLC)" }, { 0, NULL } @@ -111,6 +113,13 @@ capture_sll(const guchar *pd, int len, packet_counts *ld) capture_llc(pd, len, SLL_HEADER_SIZE, ld); break; + case LINUX_SLL_P_ETHERNET: + /* + * Ethernet. + */ + capture_eth(pd, SLL_HEADER_SIZE, len, ld); + break; + case LINUX_SLL_P_802_3: /* * Novell IPX inside 802.3 with no 802.2 LLC diff --git a/epan/dissectors/packet-sll.h b/epan/dissectors/packet-sll.h index 35b893cc7b..5fd17b2b9a 100644 --- a/epan/dissectors/packet-sll.h +++ b/epan/dissectors/packet-sll.h @@ -28,6 +28,7 @@ * The LINUX_SLL_ values for "sll_protocol". */ #define LINUX_SLL_P_802_3 0x0001 /* Novell 802.3 frames without 802.2 LLC header */ +#define LINUX_SLL_P_ETHERNET 0x0003 /* Ethernet */ #define LINUX_SLL_P_802_2 0x0004 /* 802.2 frames (not D/I/X Ethernet) */ #define LINUX_SLL_P_PPPHDLC 0x0007 /* PPP HDLC frames */ |