aboutsummaryrefslogtreecommitdiffstats
path: root/reassemble.c
AgeCommit message (Collapse)AuthorFilesLines
2002-12-19Update reassemble.c/show_item and all callers to use FT_FRAMENUM for the ↵sahlberg1-3/+5
list of packets corresponding to a reassembled pdu git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6807 f5534014-38df-0310-8fa8-9805f1628bb7
2002-12-02Don't cast away constness, and fix variable and structure memberguy1-7/+7
qualifiers as necessary to ensure that we don't have to. "strcmp()", "strcasecmp()", and "memcmp()" don't return booleans; don't test their results as if they did. Use "guint8", not "guchar", for a pointer to (one or more) 8-bit bytes. Update Michael Tuexen's e-mail address. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6726 f5534014-38df-0310-8fa8-9805f1628bb7
2002-10-24Add a "fragment_add_seq_next()" to reassemble fragments that don't haveguy1-15/+64
sequence numbers or offsets and are thus assumed to be received in order with no duplicates or dropped fragments (e.g., for NetBIOS Frame, where 802.2 LLC guarantees in-order delivery to NetBIOS with no duplicates or dropped fragments). "show_fragment_tree()' and "show_fragment_seq_tree()" don't modify the "fragment_items" to which the "fit" argument points, so make that argument a "const fragment_items *". Make all the "fragment_items" tables "static" (as they're not used outside the modules defining them) and "const" (as they're not modified). Add support for reassembly of NetBIOS fragmented requests and responses. Get rid of an unnecessary include of "packet-tr.c" in the NetBIOS dissector, and make its table of dissection function pointers static. Fix some typos in the AppleTalk and NetBIOS dissectors. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6491 f5534014-38df-0310-8fa8-9805f1628bb7
2002-10-17Flag fragment overlaps when reassembling based on sequence number, and,guy1-12/+20
when displaying the fragment tree for reassembly based on sequence number, show the correct offset. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6448 f5534014-38df-0310-8fa8-9805f1628bb7
2002-10-17Put in a missing check for fragment overlaps, and add an assertion toguy1-2/+7
check for bogus dfpos values before using the value. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6447 f5534014-38df-0310-8fa8-9805f1628bb7
2002-08-28Removed trailing whitespaces from .h and .c files using thejmayer1-40/+40
winapi_cleanup tool written by Patrik Stridvall for the wine project. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@6117 f5534014-38df-0310-8fa8-9805f1628bb7
2002-06-17Don't check for a short frame until we care whether the frame is short;guy1-5/+2
that lets us get rid of a variable. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5689 f5534014-38df-0310-8fa8-9805f1628bb7
2002-06-07Put the stuff to add the "Illegal {fragment,segment}" item to the Infoguy1-21/+19
column, and to return TRUE or FALSE, depending on whether there were any reassembly errors, in a common routine. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5645 f5534014-38df-0310-8fa8-9805f1628bb7
2002-06-07Add "show_fragment_seq_tree()", which is like "show_fragment_tree()",guy1-63/+116
but for stuff reassembled with "fragment_add_seq()" or "fragment_add_seq_check()". Add a "fragment tag" string to the "fragment_items", so that packets with fragmentation errors can be properly flagged as having "Illegal fragments" or "Illegal segments" depending on the term used with the protocol in question. Make all the dissectors that can use "show_fragment_tree()" or "show_fragment_seq_tree()", and don't already use them, do so. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5644 f5534014-38df-0310-8fa8-9805f1628bb7
2002-06-05Added show_fragment_tree() to reassemble. This function will do the commonsahlberg1-1/+90
task of creating a fregment tree for the fragmented packets. Having this identical code to create this tree in every dissector that does PDU reassembly is a huge waste and duplication of code. Updated IP, SMB and DCERPC to use the new function. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5626 f5534014-38df-0310-8fa8-9805f1628bb7
2002-05-24Reassembly of fragmented DCE/RPC (only for connection oriented DCE/RPC).sahlberg1-1/+21
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5548 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-25"fragment_add_seq_work()" returns a Boolean value, not a pointer, soguy1-2/+2
have it return FALSE, not NULL. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5249 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-22Get rid of some unused variables and arguments.guy1-12/+4
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5221 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-17In "fragment_add_seq_check()", handle short frames the same wayguy1-49/+24
regardless of whether they're the first frame we see in a reassembly or not - put all but the last fragment into the hash table (so subsequent frames with the same reassembly ID don't get misdissected as unfragmented frames), return the head of the fragment list for the first fragment and NULL for all other fragments (so the first fragment gets dissected as a fragmented packet), and unhash the fragment head from the reassembly hash table when we see the last fragment. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5189 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-17Don't try to reassemble short frames - but do still pass them through atguy1-17/+86
least some of the reassembly mechanism, so we can deal with both bogus and real last fragment (display the bogus ones as unfragmented frames, treat the real ones as fragments). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5186 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-17Don't bother with "reassembled_key" structures - just use theguy1-52/+33
"frame_data" structure for the frame as the key structure, and use the frame number in that field as the key. (We could be even cheesier and use the frame number as the key, with casts.) When we move an entry from the hash table of reassemblies to the hash table of reassembled packets, free the key structure for the first hash table. (This doesn't plug a leak, as they get freed when you reinitialize the data structures, but it does reduce the memory needed for them to the amount needed for in-progress reassemblies rather than the amount needed for all reassemblies.) git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5180 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-17Add a separate hash table to the reassembly code for reassembledguy1-67/+343
packets, using the reassembly ID and the frame number of the final frame as the key. There is no guarantee that reassembly IDs won't be reused, even when talking between the same source and destination address; if, once reassembly is complete, the "fragment_data" structure is moved to the latter hash table, this will keep reused reassembly IDs from causing mis-reassembly. Add a routine "fragment_add_seq_check()", which if a fragment has the "more fragments" flag not set but is the first fragment of a reassembly, treats that as a non-fragmented frame, allocating a "fragment_data" structure for the reassembly but not attaching any fragment to it, and adding it to a reassembled packet list; if a packet has been reassembled, removes it from the table of reassemblies and moves it to the table of reassembled packets; if the frame's been seen already, looks it up in the table of reassembled packets rather than the table of reassemblies. Add reassembly support for fragmented 802.11 frames. Use "fragment_add_seq_check()" to cope with the fact that some hardware+drivers apparently hands us reassembled frames with a non-zero fragment number and the "more fragments" bit clear (as if it puts the 802.11 header of the *last* fragment onto the reassembled data). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5177 f5534014-38df-0310-8fa8-9805f1628bb7
2002-04-17Rename the "frag_offset" argument of "fragment_add_seq()" toguy1-5/+5
"frag_number", to make it clearer that it's not a byte offset but a sequence number. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5175 f5534014-38df-0310-8fa8-9805f1628bb7
2002-03-31From Joerg Mayer: mark function arguments as unused.guy1-2/+2
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@5052 f5534014-38df-0310-8fa8-9805f1628bb7
2002-02-03From Ricardo Barroetave�a: support dissectors that are handedguy1-10/+76
reassembled TCP data being able to indicate that they need still more reassembly, so that, for example, a dissector can indicate that it needs reassembly in order to dissect a header that says how long the PDU is and, when that reassembly is done and it dissects the header, it can then indicate that it needs more reassembly to get the entire PDU. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4694 f5534014-38df-0310-8fa8-9805f1628bb7
2002-01-21Include files from the "epan" directory and subdirectories thereof withguy1-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/"). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4586 f5534014-38df-0310-8fa8-9805f1628bb7
2002-01-04WTP reassembly, from Tom Uijldert.guy1-4/+4
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4480 f5534014-38df-0310-8fa8-9805f1628bb7
2001-12-15From Ronnie Sahlberg: new infrastructure to reassemble packets whereguy1-2/+241
fragments are identified by block sequence numbers and not byte offsets. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4398 f5534014-38df-0310-8fa8-9805f1628bb7
2001-11-24Assorted changes from Ronnie Sahlberg:guy1-1/+99
Add a few small functions to reassemble.c to cope with protocols where the total length of defragmented PDUs are specified in the first fragment (all previous uses of reassembly has been for PDUs where the last fragment is signalled by a flag in the header for the last fragment). Add a few small functions to reassemble.c to abort-and-delete defragmentation of PDUs and also detect IF a PDU is currently being defragmented. (Useful for PDUs where the "unique" identifier is rather ununique, or may be reused often enough so it can be a problem for Ethereal.) Change where NT Cancel presents its Cancelation-to output, and makes the three trans secondary requests also output similar information. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4255 f5534014-38df-0310-8fa8-9805f1628bb7
2001-11-21Get rid of some unused variables.guy1-1/+3
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@4240 f5534014-38df-0310-8fa8-9805f1628bb7
2001-09-13TCP desegmentation support, and changes to the ONC RPC and NBSSguy1-4/+15
dissectors to use it, from Ronnie Sahlberg, with additional changes to handle the case where a frame contains messages that don't run past the end followed by one that does and where a reassembled chunk has, at the end, a message that runs past the end of that chunk (because the reassembly was for an earlier message). git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@3923 f5534014-38df-0310-8fa8-9805f1628bb7
2001-06-28Include <string.h> to get "memcmp()" and "memcpy()" declared.guy1-1/+3
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@3619 f5534014-38df-0310-8fa8-9805f1628bb7
2001-06-08Move the fragment reassembly code into "reassemble.c" andguy1-0/+371
"reassemble.h", and remove IPv4 dependencies from it. Use it for OSI CLNP segment reassembly as well. git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@3525 f5534014-38df-0310-8fa8-9805f1628bb7