Commit Graph

21 Commits

Author SHA1 Message Date
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 0b41709f86 Add "proto_item_set_text()", which sets the "representation" field of an
existing protocol tree item.

Add "proto_tree_add_notext()"; it's just like "proto_tree_add_text()",
but without the text, and it sets the "representation" field to NULL;
that field would be set later with "proto_item_set_text()".

Those routines let you construct, for example, an interior node of the
protocol tree whose text can't be determined until all the nodes under
it have been dissected - it's similar to "proto_item_set_len()" in that
fashion.

Use that when dissecting address TLVs in the CDP dissector - create the
item for an address in an "Addresses" TLV with no text, and then fill in
the items under it one at a time; if we get cut off before we get to the
actual address, set the text to "Truncated address", otherwise set it to
a description of the address.

Also, set the length of the item for the entire address TLV correctly.

svn path=/trunk/; revision=1520
2000-01-22 04:59:55 +00:00
Guy Harris 216a177b12 Call the CDP entry listing addresses "Addresses", not "Address" - it can
have more than one address.

svn path=/trunk/; revision=1466
2000-01-13 18:02: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
Guy Harris a7aba0a288 Replace the ETT_ "enum" members, declared in "packet.h", with
dynamically-assigned "ett_" integer values, assigned by
"proto_register_subtree_array()"; this:

	obviates the need to update "packet.h" whenever you add a new
	subtree type - you only have to add a call to
	"proto_register_subtree_array()" to a "register" routine and an
	array of pointers to "ett_", if they're not already there, and
	add a pointer to the new "ett_" variable to the array, if they
	are there;

	would allow run-time-loaded dissectors to allocate subtree types
	when they're loaded.

svn path=/trunk/; revision=1043
1999-11-16 11:44:20 +00:00
Laurent Deniel 2763f4c7ef More display filter fields added.
svn path=/trunk/; revision=856
1999-10-16 14:27:00 +00:00
Gilbert Ramirez bacb9d5bae New proto_tree header_field_info stuff. Header_field_infos now contain
the base for numbers to be displayed in, bitmasks for bitfields, and blurbs
(which are one or two sentences describing the field).

proto_tree_add*() routines now automatically handle bitfields. You tell
it which header field you are adding, and just pass it the value of the
entire field, and the proto_tree routines will do the masking and shifting
for you.

This means that bitfields are more naturally filtered via dfilter now.

Added Phil Techau's support for signed integers in dfilters/proto_tree.

Added the beginning of the SNA dissector. It's not complete, but I'm
committing it now because it has example after example of how to use
bitfields with the new header_field_info struct and proto_tree routines.
It was the impetus to change how header_field_info works.

svn path=/trunk/; revision=815
1999-10-12 06:21:15 +00:00
Guy Harris 96e79ab6f8 Add a "BYTES_ARE_IN_FRAME()" macro, to test whether there are a
specified number of bytes of captured data in the frame at the specified
offset, and a "IS_DATA_IN_FRAME()" macro, to test whether there are any
bytes of captured data in the frame at the specified offset, and convert
some bounds checks to use them.

Add a dissector for the Internet Printing Protocol.

svn path=/trunk/; revision=685
1999-09-17 05:56:58 +00:00
Guy Harris de939144b6 Instead of adding the TLV type and length values as hidden values, enter
them with "proto_tree_add_item()" rather than "proto_tree_add_text()"
when adding them to the subtree for a TLV item.

svn path=/trunk/; revision=572
1999-08-25 00:42:49 +00:00
Guy Harris 8db745d962 Dump the values of the "flags" and "ttl" fields of the CDP header.
Don't treat the CDP header as an in-memory data structure; that might
cause problems if it's not aligned on a 2-byte boundary.

Make the type and length fields of a TLV unsigned.

Correctly check for the end of the (captured part of the) frame.

Show most TLVs as "expandable" entries, where they expand into type,
length, and data entries.

Dissect "unknown" TLVs.

svn path=/trunk/; revision=571
1999-08-25 00:24:32 +00:00
Gilbert Ramirez 3c793444cc Fixed the array problem in packet-netbios.
Fixed the default case in the packet-cdp while() statement to look for
non-zero offsets. I should fix the other cases where offset += length.
Meanwhile, however, I added cdp.tlv.type and cdp.tlv.len as two filterable
fields so that one can use "cdp.tlv.len == 0" as a display filter to
find the packet that was causing problems.

svn path=/trunk/; revision=568
1999-08-24 22:36:34 +00:00
Gilbert Ramirez 7bd6c15378 Made the protocol (but not the fields) use the new proto_tree routine,
allowing users to filter on the existence of these protocols. I also
added packet-clip.c to the Nmake makefile.

svn path=/trunk/; revision=402
1999-07-29 05:47:07 +00:00
Gilbert Ramirez 07f42b5b31 Created a new protocol tree implementation and a new display filter
mechanism that is built into ethereal. Wiretap is now used to read all
file formats. Libpcap is used only for capturing.

svn path=/trunk/; revision=342
1999-07-07 22:52:57 +00:00
Gilbert Ramirez ef3dfe2077 Removed all references to gtk objects from packet*.[ch] files. They now
reference the protocol tree with struct proto_tree and struct proto_item
objects. That way, the packet decoding source code file can be used with
non-gtk packet decoders, like a curses-based ethereal, e.g. I also re-arranged
some of the information in packet.h to more appropriate places (like other
packet-*.[ch] files).

svn path=/trunk/; revision=223
1999-03-23 03:14:46 +00:00
Gilbert Ramirez 2744866326 Small fixes for alignment, and #include for gtk+-1.1.x/glib-1.1.x
svn path=/trunk/; revision=197
1999-03-01 18:28:12 +00:00
hannes a5d3ee4036 Removed Development notice within the CDP tree...
Cisco Discovery Protocol works fine for me now. I have tested it with various
Ciscos (7200, 3640, 2820, 2900, ...)

svn path=/trunk/; revision=175
1999-01-24 21:18:15 +00:00
Guy Harris f8046a1f29 The TLV structures in a CDP packet aren't necessarily aligned on 2-byte
boundaries, so use "pntohs()" to extract data from them, so that you
don't do unaligned accesses (which some processors don't handle).

Put the "IOS version" field out as multiple tree items, one per line of
text in the version description.

Use "memset()" rather than "bzero()" - "memset()" is used elsewhere, and
we already include the header file that declares it.

Use "ip_to_str()" rather than "inet_ntoa()" to display IP addresses as
text; that's what's used elsewhere in Ethereal.

svn path=/trunk/; revision=161
1999-01-06 23:07:42 +00:00
hannes bea932a887 Finished the first version of CDP support.
-> this works for all CDP packets I've got

some minor additions will follow

svn path=/trunk/; revision=156
1999-01-05 00:08:49 +00:00
hannes e39752f194 Okay. Please test the CVS code....
I think I figured out how CDP works :) ----

svn path=/trunk/; revision=155
1999-01-04 21:08:45 +00:00
hannes 5fdf1b9532 I've dicovered, that the existing CDP code does not work with Cisco
switches -> dissect_cdp stops a bit earlier... (preventing errors)

I have added the line "under development" to the CDP tree

svn path=/trunk/; revision=154
1999-01-04 20:07:29 +00:00
hannes 183c35b0b4 Added "Cisco Discovery Protocol" Hooks
Added Ethernet Loopback Protocol Type to ethertype.c

svn path=/trunk/; revision=129
1998-12-19 00:12:23 +00:00