Commit graph

102 commits

Author SHA1 Message Date
Guy Harris
85fd3afd2f Before dissecting the payload of a Protocol-Reject LCP packet, save the
current "this is an error packet" flag and set that flag, so the payload
is dissected as the payload of an error packet rather than as a "real"
packet.

svn path=/trunk/; revision=6701
2002-11-28 22:18:53 +00:00
Guy Harris
ca642e12ba From Pasi Eronen: dissect the packet inside an LCP Protocol Reject message.
svn path=/trunk/; revision=6698
2002-11-28 20:48:14 +00:00
Guy Harris
5ae19d6256 Instead of tweaking a "Protocol configuration options" extension header
item to look more-or-less like a PPP packet, just dissect it in place
and hand off to the appropriate subdissector using the PPP dissector's
handoff table (which we export, along with its value_string table for
protocol IDs, which we use to report the protocol ID symbolically).

This means there's no point in having a configurable option to control
whether to do that tweaking; make it an obsolete option.

Bring "col_get_writable()" back from the dead, and have the GTP
dissector save the current "writable" flag for columns, mark the columns
non-writable before calling the subdissector for the PPP configuration
protocol, and restore the state of the writable flag, rather than
putting the columns back after the PPP configuration protocol's
dissector is done.

Fix some more typos in comments.

Don't register the IP dissector in the "ppp.protocol" table in the GTP
dissector's handoff registration routine - it's already being done in
the IP dissector's handoff routine.

Fix the name for CHAP to match what RFC 1994 calls it (if the name
changed, it should be changed in all places, but, at least according to
this message, a while ago, from Bob Sutterfield, "since the RFC defines
the protocol, the RFC defines the name":

	http://mail-index.netbsd.org/netbsd-help/1996/05/16/0011.html

and the RFC defines the name as "PPP Challenge Handshake Authentication
Protocol (CHAP)").

svn path=/trunk/; revision=6617
2002-11-11 19:23:14 +00:00
Gerald Combs
00e907e211 Register (and initialize) ett_mplscp_options and ett_cdpcp_options. Fix
some indentation inconsistencies.

svn path=/trunk/; revision=6557
2002-11-04 03:57:34 +00:00
Guy Harris
e0a7988e6d From Thierry Pelle: IPv6CP support.
svn path=/trunk/; revision=6419
2002-10-14 23:23:20 +00:00
Jörg Mayer
7c4176d868 Removed trailing whitespaces from .h and .c files using the
winapi_cleanup tool written by Patrik Stridvall for the wine
project.

svn path=/trunk/; revision=6117
2002-08-28 21:04:11 +00:00
Gerald Combs
50dfd3eb31 From ENDOH Akira:
- displaying PPP datalink layer protocol names based on iana database:
    http://www.iana.org/assignments/ppp-numbers
- dissecting MPLSCP and CDPCP
- dissecting CDP over PPP

svn path=/trunk/; revision=6011
2002-08-18 15:30:38 +00:00
Guy Harris
a2d0f1fa49 From Hidetaka Ogawa: fix PPP FCS computation to include address and
control field if present.

Add Sergei Shokhor to the contributor list in the Ethereal man page.

svn path=/trunk/; revision=5949
2002-08-04 08:44:31 +00:00
Jörg Mayer
173fe5aef4 Replace the types from sys/types.h and netinet/in.h by their glib.h
equivalents for the toplevel directory. The removal of winsock2.h will
hopefully not cause any problems under MSVC++, as those files using
struct timeval still include wtap.h, which still includes winsock2.h.

svn path=/trunk/; revision=5932
2002-08-02 23:36:07 +00:00
Guy Harris
cbe8deb189 Fix a typo.
svn path=/trunk/; revision=5521
2002-05-22 09:52:14 +00:00
Guy Harris
44580a93ca Don't include the FCS in the tvbuff handed to "dissect_ppp_common()", so
that it's not included in the tvbuff handed to subdissectors.  Use that
tvbuff to compute the FCS.

Properly handle the FCS in frames that don't include all the captured
data.

In VJ-compressed packets, put the VJ compression information into the
protocol tree, and set the Protocol and Info columns, and don't worry
about the CRC - as per the above, it's no longer in the tvbuff (and
never *was* in the tvbuff in some cases).

Also, clean up some other stuff in the VJ dissector.

svn path=/trunk/; revision=5510
2002-05-20 00:56:30 +00:00
Guy Harris
8a5d5f9bde From Joerg Mayer: get rid of extra arguments to capture routines.
svn path=/trunk/; revision=5233
2002-04-24 06:03:34 +00:00
Guy Harris
db31932941 From Joerg Mayer:
Declares some variables static.

	Creates a new include file packet-rsvp.h, and make use of it
	(change some extern decls to #inlcude).

	Move the file packet-pgm.h into packet-pgm.c as it is not used
	by anything outside packet-pgm.c.

svn path=/trunk/; revision=5162
2002-04-14 23:04:04 +00:00
Guy Harris
d1f2aaf8ac Get rid of ett_ values for options with no subtrees.
Show the names of the control characters being mapped by the async
control character map option.

Use "proto_item_add_subtree()" to establish a subtree, so that the ett_
value gets associated with it.  (Unfortunately, "proto_item" and
"proto_tree" are typedefs for the same type, so checks for use of one
when you should be using the other aren't done at compile time.)

Get rid of some extra blanks before colons.

svn path=/trunk/; revision=5067
2002-04-01 00:51:43 +00:00
Guy Harris
57294d193a Mark unused variables with _U_ if they can't be eliminated.
Use the "optp" argument in more option dissectors, and set the name of
the option in the table entries for those options - and for one option
where that name *was* being used.

Get rid of unused variables.

svn path=/trunk/; revision=5061
2002-03-31 22:37:09 +00:00
Guy Harris
ee5ca25d31 Include files from the "epan" directory and subdirectories thereof with
"epan/..." pathnames, so as to avoid collisions with header files in any
of the directories in which we look (e.g., "proto.h", as some other
package has its own "proto.h" file which it installs in the top-level
include directory).

Don't add "-I" flags to search "epan", as that's no longer necessary
(and we want includes of "epan" headers to fail if the "epan/" is left
out, so that we don't re-introduce includes lacking "epan/").

svn path=/trunk/; revision=4586
2002-01-21 07:37:49 +00:00
Guy Harris
92915713d3 Allow a length of -1 to be specified when adding FT_NONE and FT_PROTOCOL
items to the protocol tree; it's interpreted as "the rest of the data in
the tvbuff".  This can be used if

	1) the item covers the entire packet or the remaining payload in
	   the packet

or

	2) the item's length won't be known until it's dissected, and
	   will be then set with "proto_item_set_len()" - if an
	   exception is thrown in the dissection, it means the item ran
	   *past* the end of the tvbuff, so saying it runs to the end of
	   the tvbuff is reasonable.

Convert a number of "proto_tree_add_XXX()" calls using
"tvb_length_remaining()", values derived from the result of
"tvb_length()", or 0 (in the case of items whose length is unknown) to
use -1 instead (using 0 means that if an exception is thrown, selecting
the item highlights nothing; using -1 means it highlights all the data
for that item that's available).

In some places where "tvb_length()" or "tvb_length_remaining()" was used
to determine how large a packet is, use "tvb_reported_length()" or
"tvb_reported_length_remaining()", instead - the first two calls
indicate how much captured data was in the packet, the latter two calls
indicate how large the packet actually was (and the fact that using the
latter could cause BoundsError exceptions to be thrown is a feature - if
such an exception is thrown, the frame really *was* short, and it should
be tagged as such).

Replace some "proto_tree_add_XXX()" calls with equivalent
"proto_tree_add_item()" calls.

Fix some indentation.

svn path=/trunk/; revision=4578
2002-01-20 22:12:39 +00:00
Guy Harris
45dc78bd7d Support for BSD Compress, MVRCA, and Deflate compression options in
CCP, from Motonori Shindo.

svn path=/trunk/; revision=4530
2002-01-11 21:37:10 +00:00
Guy Harris
c57411dbb9 PPP multiplexing support, from Jayaram V.R.
svn path=/trunk/; revision=4469
2002-01-03 20:30:33 +00:00
Guy Harris
b9de49243d Make the address and control fields in the PPP/HDLC header, and the
protocol field in the PPP header, filterable fields.

Show the FCS value with a leading "0x".

svn path=/trunk/; revision=4430
2001-12-20 06:22:24 +00:00
Guy Harris
3624071a79 Van Jacobson decompression support for PPP, from Irfan Khan.
svn path=/trunk/; revision=4427
2001-12-19 21:14:49 +00:00
Guy Harris
23319ff023 Move the pointer to the "column_info" structure in the "frame_data"
structure to the "packet_info" structure; only stuff that's permanently
stored with each frame should be in the "frame_data" structure, and the
"column_info" structure is not guaranteed to hold the column values for
that frame at all times - it was only in the "frame_data" structure so
that it could be passed to dissectors, and, as all dissectors are now
passed a pointer to a "packet_info" structure, it could just as well be
put in the "packet_info" structure.

That saves memory, by shrinking the "frame_data" structure (there's one
of those per frame), and also lets us clean up the code a bit.

svn path=/trunk/; revision=4370
2001-12-10 00:26:21 +00:00
Guy Harris
75cc056222 Attach a descriptive name field type and base to dissector tables; that
specifies how the selector values used as keys in those tables are to be
displayed, and the title to use when displaying the table.

Use that information in the code to display the initial and current
entries of various dissector tables.

Have the dissector for BACnet APDUs register itself by name, and have
the BACnet NPDU dissector call it iff the BAC_CONTROL_NET bit isn't set,
rather than doing it with a dissector table.

svn path=/trunk/; revision=4358
2001-12-08 06:41:48 +00:00
Guy Harris
3af8644dac BACP and BAP support in PPP dissector, from Motonori Shindo.
svn path=/trunk/; revision=4356
2001-12-08 01:03:19 +00:00
Guy Harris
bced8711f6 Make "dissector_add()", "dissector_delete()", and "dissector_change()"
take a dissector handle as an argument, rather than a pointer to a
dissector function and a protocol ID.  Associate dissector handles with
dissector table entries.

svn path=/trunk/; revision=4308
2001-12-03 04:00:26 +00:00
Ed Warnicke
34dbc86e65 Moved from using dissect_data to using call_dissector()
svn path=/trunk/; revision=4264
2001-11-25 22:51:14 +00:00
Guy Harris
60fe401dc7 Get rid of some unused variables.
svn path=/trunk/; revision=4241
2001-11-21 02:01:06 +00:00
Guy Harris
e8d4f4f0ac Make the capture routines take an additional argument giving the amount
of packet data captured.

Make the "BYTES_ARE_IN_FRAME()" macro take a "captured length of the
packet" argument.

Add some length checks to capture routines.

svn path=/trunk/; revision=4235
2001-11-20 21:59:18 +00:00
Guy Harris
a4676104d9 CBCP support in PPP, from Motonori Shindo.
svn path=/trunk/; revision=4153
2001-11-04 04:50:12 +00:00
Guy Harris
493f2a8279 Small fix to previous patch, from Motonori Shindo.
svn path=/trunk/; revision=4106
2001-10-30 10:16:51 +00:00
Guy Harris
e5276cd0b4 PPP CCP support, from Motonori Shindo.
svn path=/trunk/; revision=4096
2001-10-29 19:48:45 +00:00
Richard Sharpe
ed5e9c9768 Committing Montonori Shindo's patched to ppp for chap support.
svn path=/trunk/; revision=3979
2001-09-30 13:30:51 +00:00
Guy Harris
170d538f16 Patch from Motonori Shindo to add support for decoding additional data,
for CHAP, in LCP Authentication Protocol option.

Fix a typo.

svn path=/trunk/; revision=3827
2001-08-05 19:44:13 +00:00
Guy Harris
74fb14adac Patch from Motonori Shindo, adding
1) Shiva PAP (SPAP) and Extensible Authentication Protocol (EAP)

 2) CBCP negotiation in LCP Callback Operation Field

to the PPP dissector.

svn path=/trunk/; revision=3826
2001-08-05 10:09:40 +00:00
Guy Harris
8412393197 From Joerg Mayer: explicitly fill in all members of a
"header_field_info" structure, including the ones that are later set by
the routines to register fields.

svn path=/trunk/; revision=3561
2001-06-18 02:18:27 +00:00
Guy Harris
07bdfa61bc Set the Protocol column in dissectors for PPP-specific subprotocols.
svn path=/trunk/; revision=3556
2001-06-16 00:51:45 +00:00
Guy Harris
2bb26e5d5b PAP support, from Laurent Rabret.
svn path=/trunk/; revision=3555
2001-06-15 20:35:08 +00:00
Guy Harris
4a5b324abb Explain why we have to be ready to handle Ethernet frames with
protocol type values that are PPP protocol types.

svn path=/trunk/; revision=3554
2001-06-15 20:23:41 +00:00
Guy Harris
2d0a0be252 LCP-over Ethernet and IPCP-over-Ethernet support, from Laurent Rabret.
svn path=/trunk/; revision=3547
2001-06-14 20:05:13 +00:00
Guy Harris
2cadc3ba3a Get rid of some unnecessary includes.
Fix up Gerald's e-mail address.

svn path=/trunk/; revision=3371
2001-04-23 18:19:03 +00:00
Guy Harris
77789be82e Assorted ISIS enhancements from Hannes Gredler.
When dissecting the ISIS NLPID CLV, use the "nlpid_vals" array to
convert NLPID values to protocol names.

svn path=/trunk/; revision=3308
2001-04-16 10:04:33 +00:00
Guy Harris
734e904045 In various Frame Relay and PPP routines that set the length of the
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
2001-03-31 10:35:54 +00:00
Guy Harris
a65579287d Call the capture routine for PPP-in-HDLC-like-framing (RFC 1662) the
"ppp_hdlc" capture routine.

svn path=/trunk/; revision=3209
2001-03-30 06:15:47 +00:00
Guy Harris
949888c04a Call the dissector for PPP-in-HDLC-like-framing (RFC 1662) the
"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
2001-03-30 06:10:54 +00:00
Guy Harris
e30bc52b6a Have "dissect_ppp_stuff()" set the Protocol column for unknown
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
2001-03-29 09:18:34 +00:00
Gilbert Ramirez
a8b0c240e6 Move appletalk- and sna-related address routines out of the dissectors
and into epan.

svn path=/trunk/; revision=3160
2001-03-22 16:24:16 +00:00
Guy Harris
7ecac8fbd0 Add a new Wiretap encapsulation type for Cisco HDLC. Map the NetBSD
DLT_HDLC to it.

Make a separate dissector for Cisco HDLC, and add a dissector for Cisco
SLARP.  Have the PPP dissector call the Cisco HDLC dissector if the
address field is the Cisco HDLC unicast or multicast address.  Use the
Cisco HDLC dissector for the Cisco HDLC Wiretap encapsulation type.

Add a new dissector table "chdlctype", for Cisco HDLC packet types
(they're *almost* the same as Ethernet types, but 0x8035 is SLARP, not
Reverse ARP, and 0x2000 is the Cisco Discovery protocol, for example),
replacing "fr.chdlc".

Have a "chdlctype()" routine, similar to "ethertype()", used both by the
Cisco HDLC and Frame Relay dissectors.  Have a "chdlc_vals[]"
"value_string" table for Cisco HDLC types and protocol names.  Split the
packet type field in the Frame Relay dissector into separate SNAP and
Cisco HDLC fields, and give them the Ethernet type and Cisco HDLC type
"value_string" tables, respectively.

svn path=/trunk/; revision=3133
2001-03-15 09:11:03 +00:00
Guy Harris
412318920c Start removing "{OLD_}CHECK_DISPLAY_AS_DATA()" calls, and code to set
"pinfo->current_proto"; dissectors called only through dissector tables
and handles don't need to do either of those, as the dissector table and
handle code will do it for them.  (Dissectors called directly, or
dissectors that can be attached to conversations, still have to do it
themselves.)

Register the PPP Multilink Protocol, PPP Link Control Protocol, and PPP
IP Control Protocol as official protocols, and register them in PPP's
dissector table rather than having PPP handle them specially; change
"dissect_cp()" to take a protocol ID, get the protocol short name
information from it, and use the protocol ID for the top-level protocol
tree item.

Set the Protocol column in the PPP Multilink Protocol dissector, and set
the Info column before extracting anything from the frame, so that if an
exception is thrown, the Info and Protocol columns will reflect that the
packet is supposed to be a PPP Multilink Protocol frame.

Make the "First fragment" and "Last fragment" flags in the PPP Multilink
Protocol header boolean bitfields, and let "proto_tree_add_boolean()" do
all the heavy lifting when displaying them, rather than doing it by
hand.

Don't extract the sequence number in the PPP Multilink Protocol until
you're ready to put it into the tree, just in case the captured packet
includes the flags but not the sequence number.

Clean up the code to check the FCS of PPP frames - extract it with
"tvb_get_letohs()" or "tvb_get_letohl()", don't extract it byte-by-byte
and then put it together yourself.

svn path=/trunk/; revision=2926
2001-01-21 22:10:22 +00:00
Guy Harris
691d4f9a0f Add the PPP types for the DEC LANBridge100 Spanning Tree protocol and
for "Bridging PDU"s (which I'm assuming are 802.1d Spanning Tree BPDUs),
and have the STP and LANBridge100 STP dissectors register them with the
"ppp.protocol" dissector table.

Fix the value for the PPP type for MPLS Multicast (it's 0x0283, not
0x0281).

svn path=/trunk/; revision=2896
2001-01-14 08:25:14 +00:00
Guy Harris
914d1da71f Make GRE use a dissector table for its protocol types, and register
dissectors for protcools that can be encapsulated inside GRE in that
table.

Fix a bug in the handling of WCCPv2 IP encapsulation (it was
constructing the next tvbuff before, rather than after, advancing the
offset past the redirection header).

svn path=/trunk/; revision=2893
2001-01-13 07:47:49 +00:00