aboutsummaryrefslogtreecommitdiffstats
path: root/packet-sctp.c
AgeCommit message (Collapse)AuthorFilesLines
2002-07-10From Michael Tuexen:Guy Harris1-32/+16
get rid of presumably-unneeded #includes; correct the DATA chunk handling when padding bytes are available. svn path=/trunk/; revision=5857
2002-06-28From Michael Tuexen: update to match the latest I-Ds for two extensions:Guy Harris1-8/+40
http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-addip-sctp-06.txt http://www.ietf.org/internet-drafts/draft-stewart-tsvwg-prsctp-01.txt svn path=/trunk/; revision=5784
2002-06-08When looking for dissectors for the source and destination port numbersGuy Harris1-17/+44
in TCP, UDP, and SCTP, try the lower port number first, and then the higher port number; this means that, for packets where a dissector is registered for *both* port numbers: 1) we pick the same dissector for traffic going in both directions; 2) we prefer the port number that's more likely to be the right one (as that prefers well-known ports to reserved ports); although there is, of course, no guarantee that any such strategy will always pick the right port number. Ignore port numbers of 0, as some dissectors use a port number of 0 to disable the port, and as RFC 768 says that the source port in UDP datagrams is optional and is 0 if not used. svn path=/trunk/; revision=5656
2002-05-30From Albert Chin: fix various non-GCC compiler warnings.Guy Harris1-2/+2
svn path=/trunk/; revision=5600
2002-05-18From Michael Tuexen: updates to later IETF drafts:Guy Harris1-141/+52
draft-ietf-tsvwg-addip-sctp-05.txt for the add-IP extension draft-stewart-prsctp-00.txt for the 'Partial Reliability' extension draft-ietf-tsvwg-sctpcsum-07.txt svn path=/trunk/; revision=5503
2002-04-16From Michael Tuexen: add missing support for the T-Bit in ABORT chunks.Guy Harris1-19/+31
svn path=/trunk/; revision=5174
2002-04-14From Joerg Mayer: get rid of some unused variables and arguments.Guy Harris1-63/+63
Use "tvb_get_ntohs()" to fetch the checksum from a VJ compressed packet, rather than doing the ntoh by hand. svn path=/trunk/; revision=5163
2002-03-03From Michael Tuexen: report the type of an unrecognized parameter.Guy Harris1-3/+5
svn path=/trunk/; revision=4855
2002-03-02From Michael Tuexen: update the CRC32 checksum code to matchGuy Harris1-4/+13
draft-ietf-tsvwg-sctpcsum-03. svn path=/trunk/; revision=4844
2002-02-02From Michael Tuexen:Guy Harris1-8/+16
add a hidden "sctp.port" field, with two instances per protocol tree, one with the source port and one with the destination port (like "tcp.port" and "udp.port"); replace "sctp.checksum_correct" with "sctp.checksum_bad" (like "tcp.checksum_bad" and "udp.checksum_bad"). svn path=/trunk/; revision=4682
2002-01-21Include files from the "epan" directory and subdirectories thereof withGuy Harris1-2/+2
"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-20Editorial change, from Michael Tuexen.Guy Harris1-5/+5
svn path=/trunk/; revision=4579
2002-01-20Allow a length of -1 to be specified when adding FT_NONE and FT_PROTOCOLGuy Harris1-21/+21
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-15Make the label for the SCTP checksum type preference item indicate thatGuy Harris1-2/+4
it's a checksum type (and remove "SCTP", as that's redundant), and make the blurb explain it in a bit more detail. svn path=/trunk/; revision=4549
2002-01-15From Michael Tuexen:Guy Harris1-48/+206
- Support of the crc32c algorithm. - Selection of the checksum algorithm (none, adler-32, crc32c, automatic) in the preferences/protocols menu. - Display of the IP address in asconf chunks. svn path=/trunk/; revision=4548
2001-12-19From Michael Tuexen - SCTP updates:Guy Harris1-83/+493
- Support for the Add-IP extension defined in http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-addip-sctp-03.txt - Support for the Limited Retransmission extension of SCTP defined in http://www.sctp.org/draft-ietf-tsvwg-usctp-01.txt - Defining sctp.checksum_correct as a hidden boolean item to be able to search for SCTP packet with an incorrect checksum. svn path=/trunk/; revision=4426
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-36/+36
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-08Attach a descriptive name field type and base to dissector tables; thatGuy Harris1-3/+5
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-03Make "dissector_add()", "dissector_delete()", and "dissector_change()"Guy Harris1-2/+5
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-10-23Show parameter types in hex.Guy Harris1-31/+25
Make enumerated types be fields with a value_string table, so that you can filter on them by name. svn path=/trunk/; revision=4070
2001-08-28Get rid of "proto_tree_add_notext()" - if you create a subtree using it,Guy Harris1-5/+8
but, before you set the text, you throw an exception while putting stuff under the subtree, you end up with an absolutely blank protocol tree item, which is really gross. Instead of calling "proto_tree_add_notext()", call "proto_tree_add_text()" with at least a minimal label - yes, it does mean you do some work that will probably be unnecessary, but, absent a scheme to arrange to do that work if it *is* necessary (e.g., catching exceptions), the alternative is an ugly protocol tree display. svn path=/trunk/; revision=3879
2001-07-03Use the "pinfo" argument, rather than the global "pi", to refer to theGuy Harris1-3/+3
packet information in tvbuffified dissectors. svn path=/trunk/; revision=3645
2001-06-21Fix a typo.Guy Harris1-2/+2
svn path=/trunk/; revision=3597
2001-06-18From Joerg Mayer: explicitly fill in all members of aGuy Harris1-46/+46
"header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
2001-04-23Move the declarations of IP protocol numbers to "ipproto.h" fromGuy Harris1-2/+2
"packet-ip.h". Fix Gerald's address in some files while we're at it. svn path=/trunk/; revision=3366
2001-04-20Fix Gerald's e-mail address - and fix it in "README.developer", soGuy Harris1-2/+2
people don't blindly insert the old address into new dissectors, which is probably how it got into the dissectors being fixed here. svn path=/trunk/; revision=3348
2001-04-09SCTP dissector fix from Michael Tuexen.Guy Harris1-10/+12
svn path=/trunk/; revision=3272
2001-01-25Remove more "CHECK_DISPLAY_AS_DATA()" calls and "pinfo->current_proto ="Guy Harris1-8/+4
statements. Move the setting of the Protocol column in various dissectors before anything is fetched from the packet, and also clear the Info column at that point in those and some other dissectors, so that if an exception is thrown, the columns don't reflect the previous protocol. "Tvbuffify" the Mobile IP dissector (it took old-style arguments, and then converted them into tvbuff arguments, so there wasn't much to do, other than to fix references to "fd" to refer to "pinfo->fd"). In the SCTP dissector, refer to the port type and source and destination ports through "pinfo" rather than through the global "pi", as it's a tvbuffified dissector. In the SMTP and Time Protocol dissectors, use "pinfo->match_port" rather than "TCP_PORT_SMTP" when checking whether the packet is a request or reply, just in case somebody makes a non-standard port be dissected as SMTP or Time. (Also, remove a bogus comment from the Time dissector; it was probably cut-and-pasted from the TFTP dissector.) svn path=/trunk/; revision=2938
2001-01-14Update from Michael Tuexen to enhance handling of bundled upper layerGuy Harris1-23/+44
packets. svn path=/trunk/; revision=2897
2001-01-13Support for dissectors registering themselves with a particular SCTPGuy Harris1-9/+12
payload protocol ID as well as with a particular SCTP port number, from Michael Tuexen. svn path=/trunk/; revision=2891
2001-01-11Update the SCTP dissector, and add a dissector forGilbert Ramirez1-336/+437
ISDN Q.921-User Adaptation Layer (IUA). Both are from Michael.Tuexen@icn.siemens.de> svn path=/trunk/; revision=2876
2001-01-09Add an additional "protocol index" argument to "{old_}dissector_add()",Guy Harris1-2/+2
"{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-03Have "proto_register_protocol()" build a list of data structures forGuy Harris1-2/+2
protocols, in addition to adding structures to the list of filterable fields. Give it an extra argument that specifies a "short name" for the protocol, for use in such places as pinfo->current_proto; the dialog box for constructing filters; the preferences tab for the protocol; and so on (although we're not yet using it in all those places). Make the preference name that appears in the preferences file and the command line for the DIAMETER protocol "diameter", not "Diameter"; the convention is that the name in question be all-lower-case. Make some routines and variables that aren't exported static. Update a comment in the ICP dissector to make it clear that the dissector won't see fragments other than the first fragment of a fragmented datagram. svn path=/trunk/; revision=2810
2000-11-19For each column, have both a buffer into which strings for that columnGuy Harris1-2/+2
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-08-19Michael Tuexen's patch to add "sctp.port" as a dissector table so thatGuy Harris1-57/+90
protocols running atop SCTP can register themselves with a particular SCTP port number. Also, clean up the credits for him - there were two entries, one for some initial SCTP support in "ipprotostr()" and in the capture dialog, and one for the SCTP dissector itself - the latter subsumes the former, so just keep the latter. svn path=/trunk/; revision=2296
2000-08-13Add the "Edit:Protocols..." feature which currently only implementsLaurent Deniel1-1/+3
the following: It is now possible to enable/disable a particular protocol decoding (i.e. the protocol dissector is void or not). When a protocol is disabled, it is displayed as Data and of course, all linked sub-protocols are disabled as well. Disabling a protocol could be interesting: - in case of buggy dissectors - in case of wrong heuristics - for performance reasons - to decode the data as another protocol (TODO) Currently (if I am not wrong), all dissectors but NFS can be disabled (and dissectors that do not register protocols :-) I do not like the way the RPC sub-dissectors are disabled (in the sub-dissectors) since this could be done in the RPC dissector itself, knowing the sub-protocol hfinfo entry (this is why, I've not modified the NFS one yet). Two functions are added in proto.c : gboolean proto_is_protocol_enabled(int n); void proto_set_decoding(int n, gboolean enabled); and two MACROs which can be used in dissectors: OLD_CHECK_DISPLAY_AS_DATA(index, pd, offset, fd, tree) CHECK_DISPLAY_AS_DATA(index, tvb, pinfo, tree) See also the XXX in proto_dlg.c and proto.c around the new functions. svn path=/trunk/; revision=2267
2000-08-11Miscellaneous code cleaningLaurent Deniel1-9/+4
- add <stdarg.h> or <varargs.h> in snprintf.h and remove those inclusions in the other #ifdef NEED_SNPRINTF_H codes - remove the check of multiple inclusions in source (.c) code (there is a bit loss of _cpp_ performance, but I prefer the gain of code reading and maintenance; and nowadays, disk caches and VM are correctly optimized ;-). - protect all (well almost) header files against multiple inclusions - add header (i.e. GPL license) in some include files - reorganize a bit the way header files are included: First: #include <system_include_files> #include <external_package_include_files (e.g. gtk, glib etc.)> Then #include "ethereal_include_files" with the correct HAVE_XXX or NEED_XXX protections. - add some HAVE_XXX checks before including some system header files - add the same HAVE_XXX in wiretap as in ethereal Please forgive me, if I break something (I've only compiled and regression tested on Linux). svn path=/trunk/; revision=2254
2000-08-07Allow either old-style (pre-tvbuff) or new-style (tvbuffified)Guy Harris1-15/+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-07-31Include "packet.h", not <packet.h> - the latter, at least on Win32,Guy Harris1-9/+2
causes a system <packet.h> header to be includes, which causes the compiler to get quite upset. svn path=/trunk/; revision=2186
2000-07-21Add SCTP dissector from Tuexen Michael <Michael.Tuexen@icn.siemens.de>Gilbert Ramirez1-0/+1810
svn path=/trunk/; revision=2148