apparently, means an Ethernet packet is stuffed into the payload; add
support for it as an Ethernet, Cisco HDLC, and GRE packet type.
Sort the Ethernet types in "etypes.h" by value.
svn path=/trunk/; revision=3250
That means that I no longer need to distribute capture and non-capture
versions of Ethereal for Win32; one version (compiled with WinPcap headers)
can run on systems with or without WinPcap.
For systems that don't have WinPcap, instead of disabling the Capture
menu, Capture|Start brings up a dialogue informing the user that wpcap.dll
was not loadable, and gives a URL to the WinPcap home page.
svn path=/trunk/; revision=3249
"find_last_pathname_separator()" on Win32; move the other pathname
manipulation routines from "util.c" into "epan/filesystem.c".
Remove from "util.h" the declarations of routines not defined in
"util.c", and put them into "epan/filesystem.h" if they're not already
there.
Adjust #includes to make the above work.
svn path=/trunk/; revision=3241
and "u_char" aren't declared in <sys/types.h> in Win32, you have to
include <winsock.h>, which is a pain.
Throw in some "const"s while we're at it.
svn path=/trunk/; revision=3240
"value_string.c", as they include "epan/to_str.h", and that uses "struct
timeval" in some function prototypes.
In "to_str.c", include <sys/types.h> before including <netinet/in.h>; on
at least some platforms, definitions in <netinet/in.h> require types
defined in <sys/types.h>.
In "to_str.c", include <sys/socket.h>, so that AF_INET6 is defined.
svn path=/trunk/; revision=3238
allow the passing of register_all_protocols() and
register_all_protocol_handoffs() through epan_init() to proto_init().
This allows the removal of the compile time dependence of proto.c
on register.h. Modified dftest.c, tethereal.c, and gtk/main.c to
use the new style epan_init() and depend on register.h.
svn path=/trunk/; revision=3237
dissector_handle in a static variable in packet.c. Changed dissect_packet
to call dissector from using the call_dissector() function and the cached
dissector_handle for frame_dissector. Changed the order of function
calls in epan_init() to allow for this change ( it sucks to look up
a dissector when none are registered ).
svn path=/trunk/; revision=3234
to_str.{c,h}. Resolved strange situation where ipx_addr_to_str was
declared in packet.h but defined in packet-ipx.c by moving
ipx_addr_to_str, ipxnet_to_str_punct, and ipxnet_to_str from packet-ipx.{c,h} to to_str.{c,h}
svn path=/trunk/; revision=3219
top-level protocol tree items, use "offset" to set the length, rather
than fetching the length of the item - "offset" is the offset from the
beginning of the Frame Relay or PPP header just past the last field
processed in that header, so it indicates how much of the header we've
processed.
svn path=/trunk/; revision=3215
Encapsulation", not "IETF Encapsulation" - RFC's 1490 and 2427 include
stuff from that appendix, but say that Annex E is the authoritative
source for that information.
Include the second byte of the Cisco HDLC type in the top-level protocol
tree item.
svn path=/trunk/; revision=3213
respectively, not Q.931 and Q.2931, in Frame Relay.
When dissecting Q.933-style multiprotocol encapsulated Frame Relay
frames, use the "osinl" dissector table to check for OSI network layer
protocols, include the NLPID in the tvbuff you hand to
"dissector_try_port()" with that dissector table, and put the NLPID into
the protocol tree as an invisible item - the NLPID is considered part of
the PDU for those protocols, so you have to include it in the tvbuff,
and the dissector will put it into the protocol tree.
Also, make sure the top-level entry for the Frame Relay protocol
includes all the bytes preceding the payload, and none of the payload
bytes.
Export a routine to do Q.933-style dissection, and have the WCP
dissector call it, rather than duplicating that code in the WCP
dissector.
Don't register OSI network layer protocols with the "fr.ietf" dissector
table; it's now sufficient to register them with the "osinl" dissector
table, as the Frame Relay dissector now checks that.
Get rid of unnecessary checks for protocols being enabled (if the
dissector is always called through handles or dissector tables, the
common code for handles and dissector tables will do the checks for
you).
Get rid of some unnecessary #includes.
svn path=/trunk/; revision=3211
"ppp_hdlc" dissector, and call the dissector for "raw" PPP (just RFC
1661, no HDLC encapsulation) the "ppp" dissector.
Have the common routine used by both those dissectors take the offset in
the tvbuff of the PPP protocol field as an argument, rather than
assuming that the protocol field begins at the beginning of the tvbuff,
so we don't have to construct a new tvbuff in the
PPP-in-HDLC-like-framing dissector.
Use the PPP dissector, not the PPP-in-HDLC-like-framing dissector, for
PPP over Frame Relay - there's no HDLC header in PPP over Frame Relay,
at least according to
http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/120newft/120t/120t1/pppframe.htm
svn path=/trunk/; revision=3208
protocols; this obviates the need for "dissect_ppp()" to look at the
protocol field at all.
Have "dissect_ppp_stuff()" add the length of the protocol field to the
length of the top-level protocol tree item, as only it knows how long
the field is.
Have "dissect_mp()" call "dissect_ppp_payload()", rather than
duplicating what "dissect_ppp_payload()" does itself.
Don't fetch the address and control fields in "dissect_ppp()" until
you're ready to put them into the protocol tree.
svn path=/trunk/; revision=3207