Commit Graph

63 Commits

Author SHA1 Message Date
Guy Harris 9e5e553117 From Akira Endoh: handle the NLPID for PPP.
svn path=/trunk/; revision=8500
2003-09-20 03:31:25 +00:00
Guy Harris 43189e4e44 Add support for some additional SAPs for Netware and OSI.
svn path=/trunk/; revision=7824
2003-06-10 05:38:52 +00:00
Guy Harris 64840abd9f From Laurent Rabret:
fix a bug where bad IPv4 and IPv6 prefix lengths could cause a
	buffer overflow;

	check the checksum in LSP packets.

svn path=/trunk/; revision=7675
2003-05-15 06:35:02 +00:00
Guy Harris daeac95d4a Don't export "osinl_subdissector_table" or "ppp_subdissector_table" -
have other dissectors that use them fetch them with
"find_dissector_table()".

svn path=/trunk/; revision=7601
2003-04-29 17:56:49 +00:00
Guy Harris 92ab400add From Laurent Meyer: NLPID for Subnetwork Dependent Convergence Function.
svn path=/trunk/; revision=7191
2003-02-24 19:49:04 +00:00
Laurent Deniel 1a66f9aec9 Update my email address in various places since my old one no longer works
svn path=/trunk/; revision=7003
2003-01-26 19:35:31 +00:00
Guy Harris 68799ac1cd Add a new "chdlctypes.h" file for Cisco HDLC type values that aren't
just Ethernet type values.  Move the type value for ISO network-layer
protocols there, and put the type value for IEEE spanning tree there as
well, use that value in the BPDU dissector, and add an item to the CHDLC
dissector for it.

svn path=/trunk/; revision=6915
2003-01-11 10:16:22 +00:00
Ronnie Sahlberg 9d646cdc99 From Hannes Gredler: Support OSI over CHDLC
svn path=/trunk/; revision=6308
2002-09-20 09:17:38 +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
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 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 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 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 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 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
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 1d42c94b05 Make the resolution for time values be nanoseconds rather than
microseconds.

Fix some "signed vs. unsigned" comparison warnings.

svn path=/trunk/; revision=3934
2001-09-14 07:10:13 +00:00
Guy Harris f2e04def43 Correctly compute the OSI checksum.
Have "calc_checksum()" just return an indication of the status of the
checksum.

Check the CLNP header checksum, and put display its status.

svn path=/trunk/; revision=3514
2001-06-05 09:06:19 +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 376056336c OSI network layer over PPP support, fix to P2P ISIS processing, and ISIS
hostname TLV support, from Hannes Gredler.

svn path=/trunk/; revision=3271
2001-04-08 19:32:05 +00:00
Ed Warnicke 90f7f6184d Moved some definitions and functions from packet-osi.{c,h} to
epan/osi-utils.{c,h} to bring all of the epan dependencies into epan.

svn path=/trunk/; revision=3226
2001-04-01 05:48:15 +00:00
Guy Harris a8cbb073d4 NLPID's of 0x08 and 0x09 should be labeled as Q.933 and LMI,
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
2001-03-30 10:51:50 +00:00
Guy Harris 41904dc303 Add WCP to the list of Ethernet types in "etype_vals[]", and add
"compressed" to the list of NLPIDs in "nlpid_vals[]".

Use "nlpid_vals" for the Frame Relay NLPID field.

svn path=/trunk/; revision=3206
2001-03-29 08:05:07 +00:00
Guy Harris 43ccfd8054 Add an additional "protocol index" argument to "{old_}dissector_add()",
"{old_}heur_dissector_add()", "{old_}conv_dissector_add()", and
"register_dissector()", so that an entry in those tables has associated
with it the protocol index of the protocol the dissector handles (or -1,
if there is no protocol index for it).

This is for future use in a number of places.

(Arguably, "proto_register_protocol()" should take a dissector pointer
as an argument, but

	1) it'd have to handle both regular and heuristic dissectors;

	2) making it take either a "dissector_t" or a union of that and
	   a "heur_dissector_t" introduces some painful header-file
	   interdependencies

so I'm punting on that for now.  As with other Ethereal internal APIs,
these APIs are subject to change in the future, at least until Ethereal
1.0 comes out....)

svn path=/trunk/; revision=2849
2001-01-09 06:32:10 +00:00
Guy Harris 252d55d80f For each column, have both a buffer into which strings for that column
can be put, and a pointer to the string for the column, which might or
might not point to that buffer.

Add a routine "col_set_str()", which sets the string for the column to
the string passed to it as an argument; it should only be handed a
static string (a string constant would be ideal).  It doesn't do any
copying, so it's faster than "col_add_str()".

Make the routines that append to columns check whether the pointer to
the string for the column points to the buffer for the column and, if
not, copy the string for the column to the buffer for the column so that
you can append to it (so you can use "col_set_str()" and then use
"col_append_str()" or "col_append_fstr()").

Convert a bunch of "col_add_str()" calls that take a string constant as
an argument to "col_set_str()" calls.

Convert some "col_add_fstr()" calls that take a string constant as the
only argument - i.e., the format string doesn't have any "%" slots into
which to put strings for subsequent arguments to "col_set_str()" calls
(those calls are just like "col_add_str()" calls).

Replace an END_OF_FRAME reference in a tvbuffified dissector with a
"tvb_length(tvb)" call.

svn path=/trunk/; revision=2670
2000-11-19 08:54:37 +00:00
Guy Harris 6ed0c8ac68 Register the OSI transport dissector by name, and make it static.
"packet-clnp.h" no longer exports anything, so remove it.

Have the X.25 dissector call subdissectors through dissector handles
(now that all the dissectors it uses are registered by name).

svn path=/trunk/; revision=2668
2000-11-19 04:14:26 +00:00
Guy Harris c8196a1d1c Tvbuffify the IP, ICMP, TCP, UDP, OSI CLNP, OSI COTP, OSI CLTP, and OSI
ESIS dissectors.

Register the IP dissector and have dissectors that call it directly
(rather than through a port table) call it through a handle.

Add a routine "tvb_set_reported_length()" which a dissector can use if
it was handed a tvbuff that contains more data than is actually in its
part of the packet - for example, handing a padded Ethernet frame to IP;
the routine sets the reported length of the tvbuff (and also adjusts the
actual length, as appropriate).  Then use it in IP.

Given that, "ethertype()" can determine how much of the Ethernet frame
was actually part of an IP datagram (and can do the same for other
protocols under Ethernet that use "tvb_set_reported_length()"; have it
return the actual length, and have "dissect_eth()" and "dissect_vlan()"
use that to mark trailer data in Ethernet II frames as well as in 802.3
frames.

svn path=/trunk/; revision=2658
2000-11-18 10:38:33 +00:00
Guy Harris d50abaf3f4 Give the "null" link-layer header dissector a dissector table, and put
the BSD AF_ type values it uses into an "aftypes.h" header file for
dissectors that register themselves in that dissector table include.

svn path=/trunk/; revision=2653
2000-11-17 06:02:21 +00:00
Guy Harris 56b989e0ad Allow either old-style (pre-tvbuff) or new-style (tvbuffified)
dissectors to be registered as dissectors for particular ports,
registered as heuristic dissectors, and registered as dissectors for
conversations, and have routines to be used both by old-style and
new-style dissectors to call registered dissectors.

Have the code that calls those dissectors translate the arguments as
necessary.  (For conversation dissectors, replace
"find_conversation_dissector()", which just returns a pointer to the
dissector, with "old_try_conversation_dissector()" and
"try_conversation_dissector()", which actually call the dissector, so
that there's a single place at which we can do that translation.  Also
make "dissector_lookup()" static and, instead of calling it and, if it
returns a non-null pointer, calling that dissector, just use
"old_dissector_try_port()" or "dissector_try_port()", for the same
reason.)

This allows some dissectors that took old-style arguments and
immediately translated them to new-style arguments to just take
new-style arguments; make them do so.  It also allows some new-style
dissectors not to have to translate arguments before calling routines to
look up and call dissectors; make them not do so.

Get rid of checks for too-short frames in new-style dissectors - the
tvbuff code does those checks for you.

Give the routines to register old-style dissectors, and to call
dissectors from old-style dissectors, names beginning with "old_", with
the routines for new-style dissectors not having the "old_".  Update the
dissectors that use those routines appropriately.

Rename "dissect_data()" to "old_dissect_data()", and
"dissect_data_tvb()" to "dissect_data()".

svn path=/trunk/; revision=2218
2000-08-07 03:21:25 +00:00
Guy Harris 27ca639e86 Register an "osinl" dissector table for ISO/IEC TR 9577 NLPID values,
and have dissectors for protocols that run at the OSI network layer
register themselves with it using "dissector_add()".

Make various dissectors static if they can be, and remove from header
files declarations of those dissectors.

svn path=/trunk/; revision=1873
2000-04-17 01:36:31 +00:00
Guy Harris 0ba3e2b233 Register a "llc.dsap" dissector table for 802.2 LLC, and have dissectors
for protocols that run inside 802.2 LLC register themselves with it
using "dissector_add()".

Make various dissectors static if they can be, and remove from header
files declarations of those dissectors.

svn path=/trunk/; revision=1872
2000-04-17 00:32:43 +00:00
Laurent Deniel a5719d1448 Remove TODO comments about NSAP and ISIS decodings since
this is implemented now.

svn path=/trunk/; revision=1868
2000-04-16 09:10:53 +00:00
Guy Harris c9d4dd080d Ralf Schneider's changes to enhance to OSI CLNP, CLTP, and ISIS support
and to add OSI ESIS support.

svn path=/trunk/; revision=1865
2000-04-15 22:11:26 +00:00
Guy Harris 26ca4597f6 In the COTP dissector, don't forcibly set the protocol to COTP if we
find a COTP PDU - we might have called a subdissector, which would have
set the protocol itself.  Do so only if we've not seen any DT PDUs on
which we've called a subdissector.

svn path=/trunk/; revision=1864
2000-04-15 21:27:12 +00:00
Guy Harris 9ec3cb0c17 Alas, one can't count on CLNP packets with a destination NSEL of 0x21
being COTP packets, so we make "dissect_cotp_internal()" return FALSE if
it saw no valid COTP packets, and return TRUE and set the COL_PROTOCOL
field to COTP if it saw at least one valid COTP packet, and have
"dissect_cotp()" dissect the packet as raw data if
"dissect_cotp_internal()" returns FALSE (for the benefit of callers such
as X.25).

svn path=/trunk/; revision=1861
2000-04-15 07:26:57 +00:00
Guy Harris 823398834b If an NPDU contains multiple concatenated TPDUs, dissect all of them.
Fix up some spacing problems in the INFO field of CLNP packets.

Dissect only the payload of DT and MD NPDUs as COTP; the payload of
other packets isn't to be so dissected (ER NPDUs are like ICMP error
packets, in that they contain the network-layer header and zero or more
bytes of the payload of the offending packet, for example).

svn path=/trunk/; revision=1860
2000-04-15 06:47:43 +00:00
Guy Harris e70b4f7700 Set the COL_PROTOCOL column to "ISIS" in the ISIS dissector, rather than
in its caller.

Set the COL_PROTOCOL column to "COTP" in the COTP dissector, rather than
in the dissectors it calls, so that it's done for all frames we hand to
that dissector.

Set the COL_INFO field for COTP packets we don't dissect because the
length indicator is zero, or the frame is too short, or the PDU type is
bogus.

svn path=/trunk/; revision=1842
2000-04-13 08:14:35 +00:00
Guy Harris dccffa9d2f Add CLNP PDU types other than DT and ER.
Fix the TPDU code numeric value to be "0x%x" rather than "Ox%x".

Add a COL_INFO field for CLNP PDUs whose payload we don't dissect as
COTP.

Don't dissect segments other than the first derived PDU of a segmented
CLNP PDU (just as we do with fragments other than the first fragment of
a fragmented IP datagram).

svn path=/trunk/; revision=1841
2000-04-13 07:52:55 +00:00
Guy Harris 5b81d92b45 Fix a typo.
Use "%u" rather than a hex format to print length values and segment
offsets, and use "%u" rather than "%d" to print unsigned values.

In the CLNP dissector, chop off the payload and captured-payload lengths
based on the segment length (along the lines of what we do for IP).

svn path=/trunk/; revision=1839
2000-04-13 06:09:35 +00:00
Gilbert Ramirez f6e92a9e93 Break proto_tree_add_item_format() into multiple functions:
proto_tree_add_protocol_format()
	proto_tree_add_uint_format()
	proto_tree_add_ipxnet_format()
	proto_tree_add_ipv4_format()
	proto_tree_add_ipv6_format()
	proto_tree_add_bytes_format()
	proto_tree_add_string_format()
	proto_tree_add_ether_format()
	proto_tree_add_time_format()
	proto_tree_add_double_format()
	proto_tree_add_boolean_format()
If using GCC 2.x, we can check the print-format against the variable args
passed in. Regardless of compiler, we can now check at run-time that the
field type passed into the function corresponds to what that function
expects (FT_UINT, FT_BOOLEAN, etc.)

Note that proto_tree_add_protocol_format() does not require a value field,
since the value of a protocol is always NULL. It's more intuitive w/o the
vestigial argument.

Fixed a proto_tree_add_item_format-related bug in packet-isis-hello.c
Fixed a variable usage bug in packet-v120.c. (ett_* was used instead of hf_*)

Checked in Guy's fix for the function declearation for proto_tree_add_text()
and proto_tree_add_notext().

svn path=/trunk/; revision=1713
2000-03-12 04:48:32 +00:00
Guy Harris fa942a502f Gerrit Gehnen's dissector for the Sinec H1 protocol (Siemens Industrial
Ethernet; used for communication with Siemens S5 PLC's over Ethernet),
and his changes to display OSI COTP TSAPs that consist solely of
printable characters as text rather than as hex data and to decode the
version number resource in COTP.

svn path=/trunk/; revision=1677
2000-03-02 07:27:05 +00:00
Gilbert Ramirez ddfa11e870 Create a header file for every packet-*.c file. Prune the packet.h file.
This change allows you to add a new packet-*.c file and not cause a
recompilation of everything that #include's packet.h

Add the plugin_api.[ch] files ot the plugins/Makefile.am packaging list.

Add #define YY_NO_UNPUT 1 to the lex source so that the yyunput symbol
is not defined, squelching a compiler complaint when compiling the generated
C file.

svn path=/trunk/; revision=1637
2000-02-15 21:06:58 +00:00
Guy Harris 31ff2ea5f1 Add a bunch of additional NLPIDs from ISO 9577.
svn path=/trunk/; revision=1583
2000-01-30 05:50:02 +00:00
Guy Harris 01e6fa1a24 In "dissect_clnp()", fill in "clnp" before looking at it.
svn path=/trunk/; revision=1567
2000-01-26 05:04:29 +00:00
Guy Harris f2246ebb65 Fix a bunch of dissectors to use "pi.captured_len" rather than
"fd->cap_len" for the frame length - or to use macros such as
"BYTES_ARE_IN_FRAME()", "IS_DATA_IN_FRAME()", and "END_OF_FRAME", which
use "pi.captured_len" - so that they correctly handle frames where the
actual data length of the packet is less than the size of the raw frame,
e.g. with encapsulations such as ISL.

svn path=/trunk/; revision=1530
2000-01-24 03:33:35 +00:00
Guy Harris 0ce1dab01d Gerrit Gehnen's patch to add support for the "Inactive Subset" of the
ISO 8473 CLNP protocol.

svn path=/trunk/; revision=1513
2000-01-20 19:16:41 +00:00
Guy Harris b558dc21ec Get the NLPID value for ISIS from "nlpid.h", and report the NLPID value
in ISIS packets with "nlpid_vals".

Report the NLPID value in CLNP packets with "nlpid_vals" as well.

svn path=/trunk/; revision=1462
2000-01-13 06:07:53 +00:00
Guy Harris 7368e42aac Add the NLPID value for PPP.
In Q.931 and Q.2931, the TR 9577 values are NLPIDs, so use "nlpid_vals"
to dissect them, and values from "nlpid.h" to refer to them.

svn path=/trunk/; revision=1461
2000-01-13 05:41:24 +00:00
Guy Harris 35a0a0ada4 Export the list of OSI NLPIDs in "nlpid.h", for use by the CDP
dissector.

Add a "value_string" table for NLPIDs to the OSI dissector, and export
it for use by the CDP dissector.

Fix the CDP dissector as per the documentation in

	http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm

and as per some traces we have with CDP data in them.

svn path=/trunk/; revision=1455
2000-01-13 00:41:11 +00:00