aboutsummaryrefslogtreecommitdiffstats
path: root/packet-tpkt.c
AgeCommit message (Collapse)AuthorFilesLines
2003-12-02Tomas Kukosa noted that the TPKT dissector spends a significant amountGuy Harris1-2/+4
of time in "find_protocol_by_id()"; the protocol_t pointer for a protocol doesn't change over time, so get that pointer when the protocol is registered and save it. svn path=/trunk/; revision=9143
2003-11-16Export "protocol_t" as an opaque type.Guy Harris1-2/+2
Make "proto_is_protocol_enabled()" and "proto_get_protocol_short_name()" take a "protocol_t *" as an argument, so they don't have to look up the "protocol_t" - this will probably speed them up considerably, and they're called on almost every dissector handoff. Get rid of a number of "proto_is_protocol_enabled()" calls that aren't necessary (dissectors called through handles, including those called through dissector tables, or called as heuristic dissectors, aren't even called if their protocol isn't enabled). Change some direct dissector calls to go through handles. svn path=/trunk/; revision=8979
2002-08-28Removed trailing whitespaces from .h and .c files using theJörg Mayer1-35/+35
winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6117
2002-08-02Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer1-9/+1
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-07-31Check whether the first byte of a putative TPKT header is 3 (the TPKTGuy Harris1-1/+27
version number from RFC 1006) and, if not, assume it's *not* a TPKT header, and don't try getting the packet length and doing TPKT dissection and reassembly. svn path=/trunk/; revision=5921
2002-05-13Have "is_tpkt()" take a minimum-payload-length argument and checkGuy Harris1-5/+19
whether the length value in the TPKT header is large enough to include that much payload - if not, report the packet as not being a TPKT packet. Have the heuristic Q.931 dissector supply the appropriate value. svn path=/trunk/; revision=5457
2002-03-25From Andreas Sikkema: keep TPKT information out of the Info column inGuy Harris1-2/+25
cases where the subdissector would append information to that column. svn path=/trunk/; revision=5016
2002-03-05The length field in the TPKT header contains the length of the packetGuy Harris1-3/+4
*including the length of the TPKT header itself*, not just the length of the payload. svn path=/trunk/; revision=4880
2002-02-23In the Q.931-over-TPKT-over-TCP dissector, if the TCP segment we'reGuy Harris1-25/+28
handed looks as if it contains only a TPKT header (4 bytes long, and those 4 bytes look like a TPKT header according to "is_tpkt()"), call the "dissect TPKT over a TCP stream" routine. If we're doing reassembly, that routine will force a reassembly because the TPKT payload isn't in that segment, and the various heuristic XXX-over-TPKT dissectors will be called again, this time with enough data for them to say whether the TPKT payload is for them or not; if we're not doing reassembly, we'll dissect the TPKT header and then call the "dissect a Q.931 PDU" routine, which will throw an exception because there isn't any payload from which to fetch data (and that's what we want to happen). In the "dissect TPKT over a TCP stream" routine, if reassembly is enabled, do the check to see if we need to do reassembly to get the payload before dissecting the TPKT header, so that we don't dissect the TPKT header and then decide "oops, we need some more data to get the TPKT payload". svn path=/trunk/; revision=4792
2002-02-23"is_tpkt()" is always used to check a TCP segment to see if it mightGuy Harris1-14/+10
have a TPKT header at the beginning, so there's not need for it to have an offset as an argument; its callers don't have to know how big the TPKT header is (or we can put a #define in "packet-tpkt.h" for it). Get rid of the second argument. svn path=/trunk/; revision=4791
2002-02-22Add some necessary "volatile" declarations.Guy Harris1-3/+3
svn path=/trunk/; revision=4788
2002-02-22Catch the ReportedBoundsError exception in the DNS and TPKT dissectorsGuy Harris1-2/+34
when dissecting messages over TCP, so that an error in one message doesn't stop us from dissecting the next message in the segment, if any. Put an XXX comment before the code that constructs the tvbuff for each message inside a TCP segment, noting that we really want tvbuffs to have three lengths and to have a new type of exception thrown if you go past the second length but not past the reported length. svn path=/trunk/; revision=4782
2002-02-22Handle TPKT packets split across segment boundaries, and multiple TPKTGuy Harris1-70/+131
packets per segment. Instead of having a routine for dissectors such as the Q.931 dissector to call to dissect the TPKT header, have a routine that does all the reassembly and multiple-packets-per-segment work, and have the Q.931 dissector call it. Export "is_tpkt()", and the new routine, to plugins. Add preferences for TPKT and Q.931 reassembly. svn path=/trunk/; revision=4778
2002-02-02Clean up the heuristic code in the Q.931 dissector. If it's a heuristicGuy Harris1-31/+37
dissector, it's looking for Q.931 encapsulated inside TPKT, so it shouldn't check whether the first byte is NLPID_Q_931 or not, as it *won't* be NLPID_Q_931, it'll be 3, for the TPKT version. It should first check whether "is_tpkt()" thinks it's a TPKT packet, and then check that the packet has at least 3 bytes past the TPKT header, then check the first byte in the payload to see whether it's NLPID_Q_931. If that all succeeds, treat it as Q.931 inside TPKT. Make "is_tpkt()" return the length from the TPKT header on success, and -1 on failure, and return the offset past the TPKT header via a pointer (so clients don't have to know that the TPKT header is 4 bytes long). svn path=/trunk/; revision=4669
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
2001-12-10Move the pointer to the "column_info" structure in the "frame_data"Guy Harris1-5/+5
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-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-06-18From Joerg Mayer: explicitly fill in all members of aGuy Harris1-4/+4
"header_field_info" structure, including the ones that are later set by the routines to register fields. svn path=/trunk/; revision=3561
2001-06-12Give a number of files RCS IDs.Guy Harris1-2/+3
Give "proto_hier_stats.h" a standard header. svn path=/trunk/; revision=3540
2001-03-28Handle, in the Q.931 heuristic dissector, the case where TPKT isn'tGuy Harris1-2/+2
enabled. Fix comments to explain that a return of -1 from "dissect_tpkt_header()" means "TPKT wasn't enabled". svn path=/trunk/; revision=3200
2001-03-28Support for TPKT being used for its original purpose (TCP port > 102,Guy Harris1-43/+91
containing OSI transport layer PDUs). Enable the Q.931-inside-TPKT code (but not the H.225 stuff, as that requires Andreas Sikkema's H.225 dissector). Update it to match his current modified Q.931 dissector. svn path=/trunk/; revision=3199
2001-01-03Have "proto_register_protocol()" build a list of data structures forGuy Harris1-1/+1
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-1/+1
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-10-19Andreas Sikkema's new H.261 and TPKT dissectors, replacement RTCP andGuy Harris1-0/+187
RTP dissectors, and changes to the Q.931 dissector for use with H.323. svn path=/trunk/; revision=2511