aboutsummaryrefslogtreecommitdiffstats
path: root/packet-osi.c
AgeCommit message (Collapse)AuthorFilesLines
2001-09-14Make the resolution for time values be nanoseconds rather thanGuy Harris1-2/+2
microseconds. Fix some "signed vs. unsigned" comparison warnings. svn path=/trunk/; revision=3934
2001-06-05Correctly compute the OSI checksum.Guy Harris1-15/+41
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-04-16Assorted ISIS enhancements from Hannes Gredler.Guy Harris1-1/+2
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-08OSI network layer over PPP support, fix to P2P ISIS processing, and ISISGuy Harris1-1/+3
hostname TLV support, from Hannes Gredler. svn path=/trunk/; revision=3271
2001-04-01Moved some definitions and functions from packet-osi.{c,h} toEd Warnicke1-128/+1
epan/osi-utils.{c,h} to bring all of the epan dependencies into epan. svn path=/trunk/; revision=3226
2001-03-30NLPID's of 0x08 and 0x09 should be labeled as Q.933 and LMI,Guy Harris1-5/+5
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-29Add WCP to the list of Ethernet types in "etype_vals[]", and addGuy Harris1-1/+2
"compressed" to the list of NLPIDs in "nlpid_vals[]". Use "nlpid_vals" for the Frame Relay NLPID field. svn path=/trunk/; revision=3206
2001-01-09Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris1-3/+3
"{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
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-4/+4
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-19Register the OSI transport dissector by name, and make it static.Guy Harris1-2/+1
"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-18Tvbuffify the IP, ICMP, TCP, UDP, OSI CLNP, OSI COTP, OSI CLTP, and OSIGuy Harris1-25/+34
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-17Give the "null" link-layer header dissector a dissector table, and putGuy Harris1-1/+3
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-08-07Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris1-6/+6
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-04-17Register an "osinl" dissector table for ISO/IEC TR 9577 NLPID values,Guy Harris1-11/+16
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-17Register a "llc.dsap" dissector table for 802.2 LLC, and have dissectorsGuy Harris1-2/+8
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-16 Remove TODO comments about NSAP and ISIS decodings sinceLaurent Deniel1-8/+1
this is implemented now. svn path=/trunk/; revision=1868
2000-04-15Ralf Schneider's changes to enhance to OSI CLNP, CLTP, and ISIS supportGuy Harris1-1732/+132
and to add OSI ESIS support. svn path=/trunk/; revision=1865
2000-04-15In the COTP dissector, don't forcibly set the protocol to COTP if weGuy Harris1-7/+10
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-15Alas, one can't count on CLNP packets with a destination NSEL of 0x21Guy Harris1-17/+31
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-15If an NPDU contains multiple concatenated TPDUs, dissect all of them.Guy Harris1-102/+125
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-13Set the COL_PROTOCOL column to "ISIS" in the ISIS dissector, rather thanGuy Harris1-26/+15
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-13Add CLNP PDU types other than DT and ER.Guy Harris1-30/+84
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-13Fix a typo.Guy Harris1-43/+56
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-03-12Break proto_tree_add_item_format() into multiple functions:Gilbert Ramirez1-7/+7
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-02Gerrit Gehnen's dissector for the Sinec H1 protocol (Siemens IndustrialGuy Harris1-15/+56
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-02-15Create a header file for every packet-*.c file. Prune the packet.h file.Gilbert Ramirez1-1/+2
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-01-30Add a bunch of additional NLPIDs from ISO 9577.Guy Harris1-1/+9
svn path=/trunk/; revision=1583
2000-01-26In "dissect_clnp()", fill in "clnp" before looking at it.Guy Harris1-5/+5
svn path=/trunk/; revision=1567
2000-01-24Fix a bunch of dissectors to use "pi.captured_len" rather thanGuy Harris1-5/+5
"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-20Gerrit Gehnen's patch to add support for the "Inactive Subset" of theGuy Harris1-1/+14
ISO 8473 CLNP protocol. svn path=/trunk/; revision=1513
2000-01-13Get the NLPID value for ISIS from "nlpid.h", and report the NLPID valueGuy Harris1-5/+3
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-13Add the NLPID value for PPP.Guy Harris1-1/+2
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-13Export the list of OSI NLPIDs in "nlpid.h", for use by the CDPGuy Harris1-14/+19
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
1999-12-15Stuart Stanley's ISIS dissection support.Guy Harris1-2/+2
svn path=/trunk/; revision=1340
1999-11-16Replace the ETT_ "enum" members, declared in "packet.h", withGuy Harris1-12/+24
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-10-12New proto_tree header_field_info stuff. Header_field_infos now containGilbert Ramirez1-12/+33
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-09-18Convert OSI CLNP into new protocol tree dissectors.Laurent Deniel1-356/+397
svn path=/trunk/; revision=688
1999-09-11Register cotp and clnp instead of simply osi to allowLaurent Deniel1-17/+30
display filtering on those protocols and future enhancements (other OSI protocols decoding). svn path=/trunk/; revision=662
1999-07-29Made the protocol (but not the fields) use the new proto_tree routine,Gilbert Ramirez1-11/+24
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-07Created a new protocol tree implementation and a new display filterGilbert Ramirez1-198/+187
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-03-23Removed all references to gtk objects from packet*.[ch] files. They nowGilbert Ramirez1-237/+233
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
1998-11-17* Added column formatting functionality.Gerald Combs1-56/+59
* Added check_col(), add_col_str() and add_col_fmt() to replace references to ft->win_info. * Added column prefs handling code. svn path=/trunk/; revision=97
1998-11-12A lengthy patch to add the wiretap library. Wiretap is not used by defaultGilbert Ramirez1-2/+1
because it is still in its infancy, but it can be compiled in optionally. The library exists in its own subdirectory ethereal/wiretap. This patch also edits all the packet-*.c files to remove the #include <pcap.h> line which is unnecessary in these files. In the ethereal code, file.c is the most heavily modified with #ifdef WITH_WIRETAP lines for the optional library. svn path=/trunk/; revision=82
1998-10-13too few arguments for sprintf formatLaurent Deniel1-2/+2
svn path=/trunk/; revision=49
1998-09-27Merged in a _huge_ patch from Guy Harris. It adds a time stap column,Gerald Combs1-59/+60
generalizes the column printing code, adds a "frame" tree item to the tree view, and fixes a bunch of miscellaneous coding bugs. svn path=/trunk/; revision=31
1998-09-17* Added in Laurent's OSI/ISO CNLP and COTP support.Gerald Combs1-0/+1617
* Added Laurent's changes to the man (actually pod) page. * Copied in VERSION file so that others can make doc/Makefile svn path=/trunk/; revision=8