Commit Graph

4268 Commits

Author SHA1 Message Date
Guy Harris 4212ae25fd When the dissector tables are reset to the default settings, the list of
IP protocol numbers to be decoded as TCP and as UDP should be reset as
well.

svn path=/trunk/; revision=4313
2001-12-03 09:09:11 +00:00
Guy Harris 57d6683446 A "dissector_table_t" is no longer a pointer to a hash table, it's a
pointer to a "struct dissector_table", containing a pointer to a hash
table and a pointer to a list of handles.  Fix
"dissector_all_tables_foreach_func()" to understand that.

svn path=/trunk/; revision=4312
2001-12-03 09:00:25 +00:00
Guy Harris c22d3fdc96 Get rid of the lists of conversation dissectors; instead, have a
dissector table contain both a hash table, to use to look up port
numbers to find a dissector, and a list of all dissectors that *could*
be assigned to ports in that hash table, to be used by user interface
code.

Make the "Decode As" dialog box code use that.

Also make it *not* let you choose whether to set the dissector for both
the UDP and TCP versions of a port; some protocols run only atop TCP,
some run only atop UDP, and even those that can run atop both may have
different dissector handles to use over TCP and UDP, so handling a
single merged list would be a mess.  (If the user is setting the
dissector for a TCP port, only those protocols that Ethereal can handle
over TCP should be listed; if the user is setting the dissector for a
UDP port, only those protocols that Ethereal can handle over TCP should
be listed; if the user is setting a dissector for both, only those
protocols that Ethereal can handle over *both* TCP *and* UDP should be
listed, *and* there needs to be a way to let the "Decode As" code get
both the TCP handle *and* the UDP handle and use the right ones.  If
somebody really wants that, they need to implement all of the above if
they want the code to be correct.)

Fix the code that handles setting the dissection for the IP protocol
number to correctly update the lists of protocols being dissected as TCP
and as UDP; the code before this change wasn't updating the single such
list to add new protocols.

svn path=/trunk/; revision=4311
2001-12-03 08:47:31 +00:00
Guy Harris 21b9a88b29 Add a routine tro look for a given port in a given dissector table and,
if found, return the dissector handle for that port.

Use that routine in the X.25 dissector; revert to attaching a dissector
handle to an X.25 virtual circuit.

svn path=/trunk/; revision=4310
2001-12-03 05:07:18 +00:00
Guy Harris d304535254 Update the sample dissector handoff registration routine to match the
current calling sequence for "dissector_add()".

svn path=/trunk/; revision=4309
2001-12-03 04:12:53 +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
Guy Harris 8d0ea8bc93 Get rid of an unused variable, and fix a comment.
svn path=/trunk/; revision=4307
2001-12-03 02:37:25 +00:00
Guy Harris 852e3fffe5 As you set a conversation dissector by supplying a dissector handle
rather than a function pointer, "dissect_wtp_fromudp()" no longer needs
to be global; make it static, register it by name, and have the WSP
dissector get the handle by calling "find_dissector()" rather than by
constructing its own handle for it.

Fix up some attributions.

svn path=/trunk/; revision=4306
2001-12-03 02:10:31 +00:00
Guy Harris 44a02e37c6 Rename another routine to get rid of an unnecessary "1" in its name.
svn path=/trunk/; revision=4305
2001-12-03 01:35:22 +00:00
Guy Harris bf827fb28b Don't bother saving or restoring "can_desegment" until you actually call
a subdissector.

svn path=/trunk/; revision=4304
2001-12-03 01:26:30 +00:00
Guy Harris 95490bb044 Rename and re-comment some routines to make it clearer what they do.
svn path=/trunk/; revision=4303
2001-12-03 01:20:51 +00:00
Guy Harris 2a21356d42 Add a new header file for X.264 transport protocol IDs.
Handle ISO 8602 as a protocol ID on top of X.25.

svn path=/trunk/; revision=4302
2001-12-02 00:38:54 +00:00
Guy Harris cfa1112e79 From John McDermott:
Adds an "Add Expression..." button to the color filter
	creation dialog.

	Improve the look of the "Add color to protocols" window.

	Clean up some ugly code.

Give John credit in the AUTHORS file for the coloring stuff.

svn path=/trunk/; revision=4301
2001-12-02 00:16:02 +00:00
Guy Harris 8eba148155 An NLPID of 1 means T.70 when used as an X.263/ISO 9577 initial protocol
identifier, but means X.29 when used as an X.263/ISO 9577 secondary
protocol identifier.

Add support for the IPv6 NLPID, and Ethernet type, in more places.

Fix up the handling of the user data of a CALL REQUEST packet to more
correctly distinguish between user data containing an NLPID and user
data containing an X.264/ISO 11570 UN TPDU.  If it's an NLPID, use
"nlpid_vals" to show its value.

Put that user data in a subtree.

Create a new "x.25.spi" dissector table, for protocols running atop
X.25, rather than having a built-in switch statement, so that other
protocols can register themselves by NLPID.

svn path=/trunk/; revision=4300
2001-12-02 00:07:46 +00:00
Guy Harris a7bb49b0d9 Add support for LocalTalk Link Access Protocol.
Rename WTAP_ENCAP_PRISM to WTAP_ENCAP_PRISM_HEADER, to match
DLT_PRISM_HEADER.

Add in missing capture support for WTAP_ENCAP_PRISM_HEADER when
capturing with "pcap_open_live()" rather than reading the capture from a
pipe.

svn path=/trunk/; revision=4299
2001-11-30 07:14:22 +00:00
Guy Harris 9161ba8e7f Make "fr_subdissector_table" static - it's not used outside the Frame
Relay dissector.

svn path=/trunk/; revision=4298
2001-11-30 04:39:45 +00:00
Guy Harris e952a16ac1 Add support for OSI CLNP over GRE, as per mail from Mrmcsnoots@aol.com.
svn path=/trunk/; revision=4297
2001-11-29 23:07:49 +00:00
Guy Harris 3396fb2777 Update from Ronnie Sahlberg:
1.  Changes how can_desegment works so that can_desegment is
	    only != 0 for whichever dissector is running immediately on
	    top of whoever offers the can_desegment service.

	    Thus DCERPC needs no special handling to see if it can trust
	    can_desegment (which is currently only available ontop of TCP
	    and not ontop of tcp->nbss->smb).

	2.  Changes fragment reassembly of transaction smb to only show
	    the defragmented packet for the transaction smb holding the
	    first fragment.

	    To see why, test it with a transaction SMB containing a ~60kb
	    PDU or larger.  The old behaviour had approximately quadratic
	    behaviour regarding runtime for dissecting such PDUs.

	    (example: NetShareEnum is a command which can grow really really
	    large if the number of shares and comments are large)

svn path=/trunk/; revision=4296
2001-11-29 09:05:25 +00:00
Guy Harris ec19562f1a When processing a response, check whether "si->sip" is null before using
it; it'll be null if the matching request hasn't been seen.

svn path=/trunk/; revision=4295
2001-11-29 08:36:56 +00:00
Guy Harris 99ea13c621 Squelch compiler warnings.
svn path=/trunk/; revision=4294
2001-11-28 19:59:24 +00:00
Guy Harris 3be79df937 From Ronnie Sahlberg: track FID values between requesta and responses
for ReadAndX and WriteAndX.

svn path=/trunk/; revision=4293
2001-11-28 11:47:27 +00:00
Guy Harris 390d5bbb55 If a request has already been processed, and we fail to find its
"smb_saved_info_t" in the table of requests whose replies have been
found, don't look it up in the table of requests whose replies have not
been found - if the request in question has no reply in the capture,
that may find some later frame in the same conversation with the same
MID, and we don't need that information anyway - the only reason we
*need* that structure is to save information in it for use when
processing its reply, and we already did that the first time we
processed the request.  (The information for the later frame may be bad,
e.g. having a null "extra_info" pointer, or having one that points to
information for another request.)

Arrange that we don't use the pointer to the "smb_saved_info_t" when
processing a request except to save information if the request hasn't
already been processed, as that pointer may not be valid if the request
has already been processed, as per the above.

svn path=/trunk/; revision=4292
2001-11-28 11:33:55 +00:00
Guy Harris ce66d97e35 Updates to transaction reassembly, from Ronnie Sahlberg.
Add some checks for null tvbuff arguments.

When dissecting transaction setup, parameters, and data when we couldn't
dissect it as a pipe or mailslot transaction, use the reported length of
the supplied tvbuff, not the actual length, as the amount of data
present.

svn path=/trunk/; revision=4291
2001-11-28 09:44:27 +00:00
Guy Harris 56636f157a Support for 802.11+Prism II monitor-mode link-layer headers, from
Tim Newsham.

Add in missing item for WTAP_ENCAP_CISCO_IOS in the Wiretap
encapsulation type table.

svn path=/trunk/; revision=4290
2001-11-28 07:11:11 +00:00
Guy Harris c0b335070c OSPFv3 checksum fix, from Taisuke Sasaki.
svn path=/trunk/; revision=4289
2001-11-28 06:44:44 +00:00
Guy Harris a4bc234f2d Add { 0, NULL } terminators to some "value_string" arrays lacking them.
Make some static that don't need to be exported.

svn path=/trunk/; revision=4288
2001-11-27 22:37:20 +00:00
Guy Harris 5613c7d37a When returning the length of the DCE RPC PDU, add 4 if the packet was
preceded by 4 bytes of zero padding.

svn path=/trunk/; revision=4287
2001-11-27 11:01:35 +00:00
Guy Harris f78a1f548b Rename the heuristic dissector table "msrpc" to "smb_transact", to
indicate that it's to be used for SMB transactions; a different table,
using different dissectors, would be needed for, say, reads and writes
over a named pipe, as those are byte streams and SMB transactions are
packets, so the dissectors for the first one need to worry about
multiple PDUs per segment and desegmentation, while the dissectors for
the second one don't - and, in fact, can't do desegmentation stuff.

svn path=/trunk/; revision=4286
2001-11-27 09:37:18 +00:00
Guy Harris 5ebf118bf3 From Todd Sabin:
o Modifies the dcerpc handoff to subdissectors slightly.  It
	  also needs to pass the data representation to the
	  subdissector.  Also, if no subdissector is found, it puts a
	  "Stub data" entry in the tree.

	o Adds optional TCP desegmentation to the dcerpc layer.  Note
	  that dcerpc has it's own ability to fragment PDUs.  This isn't
	  for dealing with that, but with the case of a single PDU being
	  broken over more than one TCP segment.

	o Adds a little bit of dissection to packet-dcerpc-epm.c.
	  Mainly just proof of concept for the dcerpc handoff stuff.
	  (Writing this is how I realized the need for the drep.)

	o Adds packet-dcerpc-ndr.c, which will contain NDR dissection
	  routines for use by subdissectors.

Also, support added for multiple PDUs per segment for DCERPC-over-TCP
(and, potentially, other byte-stream transports).

svn path=/trunk/; revision=4285
2001-11-27 09:27:29 +00:00
Guy Harris 425fce6e92 Thou shalt not use C++-style comments in C code, for they upset some C
compilers.

svn path=/trunk/; revision=4284
2001-11-27 07:41:39 +00:00
Guy Harris 95267f647a Get rid of some code to set "pinfo->current_proto"; let the Ethereal
infrastructure do it for the dissectors.

Make some WCP dissector routines static.

svn path=/trunk/; revision=4283
2001-11-27 07:36:23 +00:00
Guy Harris 703189dd9d Reflect the change to "conversation_set_dissector()" to take a dissector
handle as an argument.

svn path=/trunk/; revision=4282
2001-11-27 07:21:55 +00:00
Guy Harris 07b2709f8a Change "conversation_set_dissector()" to take a dissector handle, rather
than a pointer to a dissector function, as an argument.

This means that the conversation dissector is called through
"call_dissector()", so the dissector itself doesn't have to worry about
checking whether the protocol is enabled or setting
"pinfo->current_proto", so get rid of the code that does that in
conversation dissectors.  Also, make the conversation dissectors static.

Get rid of some direct calls to dissectors; replace them with calls
through handles, and, again, get rid of code to check whether a protocol
is enabled and set "pinfo->current_proto" where that code isn't needed.
Make those dissectors static if they aren't already static.

Add a routine "create_dissector_handle()" to create a dissector handle
without registering it by name, if the dissector isn't used outside the
module in which it's defined.

svn path=/trunk/; revision=4281
2001-11-27 07:13:32 +00:00
Guy Harris fd456eaf0b Remove an extra blank from a data source name.
Added comments, from Ronnie Sahlberg.

svn path=/trunk/; revision=4280
2001-11-27 05:16:29 +00:00
Guy Harris b141f4c0bb Fixes from Ronnie Sahlberg for fragmented transactions - handle null
tvbuff pointers.

svn path=/trunk/; revision=4279
2001-11-27 05:14:04 +00:00
Guy Harris 3ab9a4931f Clarify what the tvbuff handed to a dissector contains (i.e., it's not
the raw frame data, it's the data that the dissector should look at).

svn path=/trunk/; revision=4278
2001-11-27 05:05:02 +00:00
Guy Harris 0fb9bbe02e Note that LDP is documented in RFC 3036.
svn path=/trunk/; revision=4277
2001-11-27 05:01:14 +00:00
Guy Harris a18d29bede Handle the case of multiple LDP PDUs per TCP segment. (Still needs to
handle the case of more than one TCP segment per LDP PDU....)

Fix the handling of some of the length fields.

svn path=/trunk/; revision=4276
2001-11-27 04:59:01 +00:00
Guy Harris c5124017ed WCCP capability info dissection bug fix, from Raghu Angadi.
svn path=/trunk/; revision=4275
2001-11-27 00:50:47 +00:00
Guy Harris ddfdbad4bd In "smb_trans_defragment()", quit if "si->sip" is null, as it means we
don't have the frame number of the request, which we use as the ID of
the transaction being reassembled.  (If we're reassembling a reply,
should we not use the frame number of the reply instead?  We used to
have a hash table to keep track of that, so we might just be able to
bring it back....)

svn path=/trunk/; revision=4274
2001-11-26 10:24:59 +00:00
Guy Harris d2197e36df Add some comments.
svn path=/trunk/; revision=4273
2001-11-26 10:05:27 +00:00
Guy Harris a8e949c74d From Ronnie Sahlberg: reassemble transaction data if transaction
continuations are seen.

svn path=/trunk/; revision=4272
2001-11-26 09:58:38 +00:00
Ed Warnicke 89babba223 This should be the final bit of removing the dissect_data symbol
from being required by anyone other than packet-data.c.
It can now be accessed with call_dissector() with the name "data".
dissect_data is now also of dissect_t.

svn path=/trunk/; revision=4271
2001-11-26 05:41:15 +00:00
Ed Warnicke 4877553530 Switched from using CHECK_DISPLAY_AS_DATA to using CHECK_DISPLAY_AS_X
which also takes a handle as an argument and thus doesn't call
dissect_data directly.

svn path=/trunk/; revision=4270
2001-11-26 05:13:14 +00:00
Ed Warnicke fcd5b352af Moved from using dissect_data() to using call_dissector()
svn path=/trunk/; revision=4269
2001-11-26 04:52:51 +00:00
Ed Warnicke 7537283cc6 Added a proto_reg_handoff_frame() function and switched from
using dissect_data() to using call_dissector()

svn path=/trunk/; revision=4268
2001-11-26 01:23:59 +00:00
Guy Harris d08dbcc357 Clean up the stuff that creates the pipe protocol subtree; it shouldn't
fetch the length of "sp_tvb" if "sp_tvb" is null.

Fix some comments.

svn path=/trunk/; revision=4267
2001-11-26 01:22:11 +00:00
Ed Warnicke c97f7034a8 Moved from using dissect_data to using call_dissector()
svn path=/trunk/; revision=4266
2001-11-26 01:03:35 +00:00
Guy Harris cbf6148b22 From Ronnie Sahlberg: fix a check for a null tvbuff pointer to check the
correct pointer.

svn path=/trunk/; revision=4265
2001-11-25 23:23:34 +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