aboutsummaryrefslogtreecommitdiffstats
path: root/epan/conversation.c
Commit message (Collapse)AuthorAgeFilesLines
* From Peter Johansson:Anders Broman2006-08-021-9/+9
| | | | | | | | | the supplied patch fixes a problem where the options value should really be used from the conversation found (using conversation_lookup_hashtable(...) to create a new conversation based on the already stored conversation template (the CONVERSATION_TEMPLATE bit is set in the stored conversation) rather from the options argument passed to the function(s). This solves a problem that otherwise shows itself where "DISSECTOR_ASSERT(!(conv->options & CONVERSATION_TEMPLATE) && "Use the conversation_create_from_template function when the CONVERSATION_TEMPLATE bit is set in the options mask");" fails sometimes. svn path=/trunk/; revision=18825
* name changeRonnie Sahlberg2006-05-211-2/+2
| | | | svn path=/trunk/; revision=18197
* start converting gmemchunk into se_alloc() in /epanRonnie Sahlberg2005-08-131-32/+5
| | | | svn path=/trunk/; revision=15329
* Fix more "no previous declaration" warningsJörg Mayer2005-08-021-1/+1
| | | | svn path=/trunk/; revision=15171
* from Kashyap DesaiRonnie Sahlberg2005-06-251-2/+4
| | | | | | | | fix bug in conversation_delete_proto_data second argument to g_slist_remove() is a pointer to the data, not a GSlist containing a list of such pointers. svn path=/trunk/; revision=14755
* Some applications do very naughty things like reusing a port for a different ↵Ronnie Sahlberg2005-05-111-3/+15
| | | | | | | | | | | | | | | | | | | | | protocol during different stages of an application cycle. This is very naughty and will cause problems when we have assigned a dissector to a dynamic port using conversation_set_dissector(). To make ethereal handle this case I have changed the try_conversation_dissector() to allow it to fail and return 0, meaning yes there is indeed a protocol registered for this conversation but that protocol rejected this packet. (which only happens for "new" style dissectors, "old" style dissectors will never reject a packet that way) When this happens the decode_udp_port() helper will still allow other dissectors to be tried, in the hope that the conversation is now used for some other protocol and thus someone else might be able to decode the packet. Update SNMP and TFTP dissectors to check that even if there already is a conversation but that conversation does NOT have snmp/tftp registered as the dissector for it, then create a new conversation anyway and attach the proper dissector. Since ethereal keeps track of which frame number a conversation started in, this actually works really well. svn path=/trunk/; revision=14345
* use DISSECTOR_ASSERT instead of g_assertUlf Lamping2005-03-231-3/+3
| | | | svn path=/trunk/; revision=13871
* Check in the missing part of Jon Ringle's patch (the part that actuallyGuy Harris2005-02-031-37/+77
| | | | | | changed the conversation code). svn path=/trunk/; revision=13250
* From Peter Johansson: "template" conversations - if one is recognized,Guy Harris2004-12-151-257/+406
| | | | | | | the template is left around, and a new conversation is created with the wildcards in the template un-wildcarded. svn path=/trunk/; revision=12757
* Set the svn:eol-style property on all text files to "native", so thatGuy Harris2004-07-181-1/+1
| | | | | | | | | they have LF at the end of the line on UN*X and CR/LF on Windows; hopefully this means that if a CR/LF version is checked in on Windows, the CRs will be stripped so that they show up only when checked out on Windows, not on UN*X. svn path=/trunk/; revision=11400
* From Dinesh Dutt:Gerald Combs2004-07-061-4/+4
| | | | | | | | | | | | - conversation.[ch] - To support not setting port2 on matching a conversation. This is used by protocols such as iSNS in which the client registers a TCP/UDP port with the server for notifications and the server sends notifications to this port from different source ports. - packet-isns.c - Added support for handling zero-length TLVs and ESI & SCN frames (when registering an SCN/ESI port, a conversation dissector is setup). svn path=/trunk/; revision=11320
* Fix a comment.Guy Harris2004-01-091-3/+3
| | | | svn path=/trunk/; revision=9605
* From Dinesh Dutt: Add Fibre Channel support, including FCIP, Basic FCGerald Combs2002-12-081-8/+42
| | | | | | header, Extended Link Service, Interswitch Link Service, FCP, and IPFC. svn path=/trunk/; revision=6757
* Cast various "const gpointer" arguments to const pointers rather thanGuy Harris2002-11-271-15/+18
| | | | | | non-const pointers. svn path=/trunk/; revision=6683
* Move the stuff to save, recompute, and restore "can_desegment" out ofGuy Harris2002-10-291-15/+2
| | | | | | | | "try_circuit_dissector()" and "try_conversation_dissector()", as both fo them call "call_dissector()" and "call_dissector()" now does that stuff itself. svn path=/trunk/; revision=6520
* Removed trailing whitespaces from .h and .c files using theJörg Mayer2002-08-281-17/+17
| | | | | | | winapi_cleanup tool written by Patrik Stridvall for the wine project. svn path=/trunk/; revision=6116
* Replace the types from sys/types.h and netinet/in.h by their glib.hJörg Mayer2002-08-021-9/+1
| | | | | | | equivalents for the epan/ directory but leave winsock2.h in inet_pton.c and inet_ntop.c for now (can't estimate the consequences). svn path=/trunk/; revision=5928
* Added parsing of PORTMAP GETPORT functions.Ronnie Sahlberg2002-05-091-2/+2
| | | | | | | | | When we see PRTOMAP GETPORT calls for UDP, make sure all further UDP packets to or from this port goes to the ONC-RPC dissector regardless of the port on the other side. We need this because if there is ONC-RPC traffic going between the ONC-RPC Program port to a port which has a normal ethereal dissector, ethereal would dissect the traffic as the protocol associated with the other port instead. svn path=/trunk/; revision=5430
* Update from Ronnie Sahlberg:Guy Harris2001-11-291-2/+15
| | | | | | | | | | | | | | | | | | | | | | | 1. Changes how can_desegment works so that can_desegment is only != 0 for whichever dissector is running immediately on top of whoever offers the can_desegment service. Thus DCERPC needs no special handling to see if it can trust can_desegment (which is currently only available ontop of TCP and not ontop of tcp->nbss->smb). 2. Changes fragment reassembly of transaction smb to only show the defragmented packet for the transaction smb holding the first fragment. To see why, test it with a transaction SMB containing a ~60kb PDU or larger. The old behaviour had approximately quadratic behaviour regarding runtime for dissecting such PDUs. (example: NetShareEnum is a command which can grow really really large if the number of shares and comments are large) svn path=/trunk/; revision=4296
* Change "conversation_set_dissector()" to take a dissector handle, ratherGuy Harris2001-11-271-7/+8
| | | | | | | | | | | | | | | | | | | | | than a pointer to a dissector function, as an argument. This means that the conversation dissector is called through "call_dissector()", so the dissector itself doesn't have to worry about checking whether the protocol is enabled or setting "pinfo->current_proto", so get rid of the code that does that in conversation dissectors. Also, make the conversation dissectors static. Get rid of some direct calls to dissectors; replace them with calls through handles, and, again, get rid of code to check whether a protocol is enabled and set "pinfo->current_proto" where that code isn't needed. Make those dissectors static if they aren't already static. Add a routine "create_dissector_handle()" to create a dissector handle without registering it by name, if the dissector isn't used outside the module in which it's defined. svn path=/trunk/; revision=4281
* Get rid of some unused variables.Guy Harris2001-11-211-3/+1
| | | | svn path=/trunk/; revision=4239
* Get rid of a bunch of stuff that was there to support non-tvbuffifiedGuy Harris2001-10-311-34/+6
| | | | | | dissectors and that's no longer needed. svn path=/trunk/; revision=4112
* Instead of having a single datum attached to a conversation, have a listGuy Harris2001-09-031-3/+93
| | | | | | | | | | | of protocol-id-plus-datum pairs, so that multiple protocols can attach information to the same conversation. Dissectors that attach information to a conversation should not assume that if they find a conversation it has one of its data attached to it; the conversation might've been created by another dissector. svn path=/trunk/; revision=3901
* Don't pass wildcarded arguments to "find_conversation()" to routinesGuy Harris2001-09-031-44/+181
| | | | | | | | | | | | | | | | that look up conversations in hash tables, unless they are arguments that will be ignored; if they're not being ignored, then if the argument is a null pointer you may get a crash if it's dereferenced, and if it's not a null pointer you'll only get a match if the conversation has whatever stuff the arguments points to as its first address or port. If you match a conversation with a wildcarded address and/or port, and the address and/or port matched a non-wildcarded search argument, and the conversation is for a connection-oriented transport protocol, set the wildcarded address and/or port for the conversation to the value that matched it. svn path=/trunk/; revision=3897
* In "find_conversation()", do the same type of matching thatGuy Harris2001-09-031-91/+125
| | | | | | | | | "try_conversation_dissector()" does - start with as exact matches as possible, and then start doing wildcarding - so that it can find conversations with wildcard addresses or ports even if both address and port arguments are supplied to it. svn path=/trunk/; revision=3893
* Rename the arguments and flags for the conversation routines, so as notGuy Harris2001-06-101-204/+206
| | | | | | | | | | | | | | | | | | | | | | | | | to imply that 1) conversations have source and destination addresses and ports - they don't (if they did, they'd be monologues, not conversations), they just have two address/port pairs for the two endpoints, with one or more of the address or port in the second pair possibly being wildcarded; 2) the first and second address or port argument to "find_conversation()" or "try_conversation_dissector()" have anything to do with the first or second address/port pair in a conversation - they don't, the two arguments to those routines are matched against *both* address/port pairs for a conversation; as otherwise people might think that they need to add flags to wildcard the first arguments "conversation_new()" or "find_conversation()" (they don't, they just have to pass the non-wildcarded address/port first and then pass the wildcarded one, even if that means passing the destination first and source second). svn path=/trunk/; revision=3537
* Fix a comment.Guy Harris2001-06-061-10/+14
| | | | | | Split some lines differently. svn path=/trunk/; revision=3519
* Define a "COPY_ADDRESS()" macro, which copies the data in one address toGuy Harris2001-06-041-20/+4
| | | | | | | another (copying the data to a mallocated array) in "epan/packet_info.h", and use it in the conversation code. svn path=/trunk/; revision=3510
* Add an "ADDRESSES_EQUAL()" macro, taking pointers to two "address"Guy Harris2001-06-041-29/+10
| | | | | | | | structures as arguments, that evaluates to "true" if the two addresses are equal and "false" if they're not equal. Use that macro in the conversation code. svn path=/trunk/; revision=3509
* Nobody calls "old_try_conversation_dissector()" orGuy Harris2000-11-181-57/+1
| | | | | | | "old_dissector_try_heuristic()" any more, as their users have all been tvbuffified - get rid of them. svn path=/trunk/; revision=2660
* Do the checks for the presence of a conversation dissector the same wayGuy Harris2000-11-181-10/+6
| | | | | | | in "try_conversation_dissector()" that they're done in "old_try_conversation_dissector()". svn path=/trunk/; revision=2656
* Don't attempt to call the dissector for a conversation if theGuy Harris2000-11-181-3/+16
| | | | | | conversation doesn't have a dissector. svn path=/trunk/; revision=2655
* Wildcard matching is tricky - you have to try wildcarding both theGuy Harris2000-10-211-65/+391
| | | | | | | | | | | | | | | | | | | | source *and* destination port and/or both the source *and* destination address passed to "find_conversation()", because the packet for which you're trying to find the conversation may be going in the opposite direction to the packet for which the conversation was originally created. Create different hash tables for wildcarded conversations, to reduce the number of "is this a wildcard?" tests done when doing hash lookups. This is sufficient to allow the TFTP dissector to use conversations rather than being special-cased in the UDP dissector, and may also be sufficient to handle a similar problem with SMTP (request goes from client IP X port Y to server IP Z's well-known port, reply comes back from some other port on server Z to client IP X port Y), but further use may reveal other changes that should be made. svn path=/trunk/; revision=2525
* Support for conversations with "wildcard" destination addresses, fromGuy Harris2000-10-211-29/+118
| | | | | | Jeff Foster. svn path=/trunk/; revision=2523
* First step in moving core Ethereal routines to libepan.Gilbert Ramirez2000-09-271-0/+362
svn path=/trunk/; revision=2458