Commit Graph

521 Commits

Author SHA1 Message Date
Michael Mann 31ecdf5b06 Refactor "common" Conversation table functionality.
Refactor (non-GUI) conversation table functionality from gtk/Qt to epan.  Also refactor "common GUI" conversation table functionality.

The idea is to not have to modify the GUI when a dissector adds a new "conversation type"

Change-Id: I11f08d0d7edd631218663ba4b902c4a4c849acda
Reviewed-on: https://code.wireshark.org/review/3113
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-07-26 20:59:42 +00:00
John Miner c3e42cc6b4 OptoMMP Dissector
Change-Id: I754335b9944a9de169e37c16a3e37a86d35543a6
Reviewed-on: https://code.wireshark.org/review/3110
Petri-Dish: Evan Huus <eapache@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-07-25 19:54:21 +00:00
Graham Bloice 9ba0a18d12 Fix up library names when using CMake on Windows
Change-Id: I3573e69eb54044bb915161756dbb8f18cc769061
Reviewed-on: https://code.wireshark.org/review/2957
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-07-15 20:37:44 +00:00
Graham Bloice 4b5967f683 Moved nghttp2 to epan
Cleaned up nghttp2 build

Change-Id: I9f7adc12936155e0ffc01ec825b5aff95279f97d
Reviewed-on: https://code.wireshark.org/review/2937
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-07-09 05:31:31 +00:00
Gerald Combs 4cdd17a59d Qt: Cache packet list column strings.
For each displayed packet list row, save a copy of or a pointer to
column strings similar to ui/gtk/packet_list_store.c. This lets us call
epan_dissect_run only once per row.

Bug: 9511
Change-Id: I17e8ebeb5ed70518c9047413c3b2a46f01e904ef
Reviewed-on: https://code.wireshark.org/review/2752
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-07-07 06:24:23 +00:00
Guy Harris 06bd8045d7 Make wsutil depend on gitversion.
wsutil contains the only code that uses version.h; make the dependency
explicit, to see whether that fixes the current build issues with Debian
packaging.

Also, get rid of all *other* dependencies on gitversion.

Change-Id: I89fa5e4112633b83a1a7dfa349bc337e3688575f
Reviewed-on: https://code.wireshark.org/review/2823
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-07-03 17:16:54 +00:00
Graham Bloice 4742fc8ed2 Fixed linker flags for MSVC to not attempt to make and link a manifest
Added solution "folder" for tests.

Change-Id: I96dfb4a28fb7aaf3e84cea026e1f5d15afe6c0c6
Reviewed-on: https://code.wireshark.org/review/2635
Tested-by: Graham Bloice <graham.bloice@trihedral.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-06-26 21:34:38 +00:00
Yan Burman 1f724bc891 iSER: Add iSER dissector support
Bug: 10189
Change-Id: Ie99d99a1736b3c6446d5a00edf201a49dfcd4780
Reviewed-on: https://code.wireshark.org/review/2247
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-26 15:26:18 +00:00
Evan Huus 02edc3369b Revert "Optimize sip_is_known_sip_header()"
This reverts commit c9a5fbeb1d.

Change-Id: Ic2e5d531f719ed1107ef7bb1de12175d4601fd6d
Reviewed-on: https://code.wireshark.org/review/2574
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-23 16:22:30 +00:00
Jakub Zawadzki c9a5fbeb1d Optimize sip_is_known_sip_header()
Profling SIP shows that gperf generated hashing code, is
3 times faster than using GHashTable & g_str_hash/_equal()

This result in about 1% improve of whole dissection (sip traffic with filter).

Change-Id: Id6bf64bacd872e2d1c30a1b6356db444b25ba326
Reviewed-on: https://code.wireshark.org/review/2116
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-06-23 14:42:20 +00:00
Michael Mann 2c0214efff LLTD dissector
bug: 6071
Change-Id: If7b544a762df10ffc13aeaf8886cf74a1757c37c
Reviewed-on: https://code.wireshark.org/review/2512
Tested-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-06-22 21:07:43 +00:00
Joerg Mayer c11ae8ac82 Add .rc files to the sources to have them included in the build
Change-Id: I84dda519e617b24d92fcf374670a4a6ee6f488ee
Reviewed-on: https://code.wireshark.org/review/2506
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
2014-06-20 23:58:22 +00:00
Jesse Gross c95ff6b42f Add dissector for Generic Network Virtualization Encapsulation (Geneve).
Change-Id: I3ecf655d8e49bb7b519c4ba95d4e45c7b114bdd6
Reviewed-on: https://code.wireshark.org/review/2359
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-19 18:24:03 +00:00
Michael Mann 53594f34e4 Dissectors for totemnet and totemsrp protocols implemented in corosync cluster engine. Bug 3232.
From Masatake YAMATO

changes in patch3 (Masatake YAMATO):

  * Fix a typo(s/Sequnce/Sequence/)
  * Use variable len instead of a number literal
  * Put _U_ marker to length parameter of dissect_corosync_totemsrp_ip_address
  * Use tvb_report_length instread of tvb_length

changes in patch5 (Masatake YAMATO):

  * packet-corosync-totemsrp.c: Adapt to new dissector_try_heuristic interface

    + pass hdtbl_entry argument to dissector_try_heuristic.

  * packet-corosync-totemnet.c: Initialize corosync_totemnet_port to 5405

changes in patch6 (Masatake YAMATO):

  * packet-corosync-totemsrp.c: Use tvb_reported_length instead of tvb_length.
  * packet-corosync-totemsrp.c: Remove unnecessary trailing space in string literals.

  * packet-corosync-totemnet.c: Remove SVN Id tag in a comment.

changes in patch8 (Masatake YAMATO):

  * packet-corosync-totemnet.c: Remove SVN Id tag in comment(again).
  * packet-corosync-totemsrp.c: Use val_to_str_const instead of val_to_str.

changes in patch9 (Masatake YAMATO):

  * wsutil/sober128.[ch]: New files derived from packet-corosync-totemnet.c.
    Decryption code is moved here.
  * packet-corosync-totemnet.c: Remove all decryption code from this file.

Change-Id: Id832d9c5ce1be1668c857c9bbf39e8a84c31880c
Reviewed-on: https://code.wireshark.org/review/725
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-19 18:23:09 +00:00
Evan Huus 08063d824b Build unit test binaries with Cmake
That was surprisingly easy.

Change-Id: Idda34580fd694cb0d253a121921f31d3731d3007
Reviewed-on: https://code.wireshark.org/review/2396
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-18 18:27:38 +00:00
Evan Huus ad97c1eb87 kill unmaintained python bindings
Change-Id: I1fa4f0d76b6b29d2935723b83b5ea7165039c807
Reviewed-on: https://code.wireshark.org/review/2258
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-06-16 20:44:08 +00:00
Michael Mann a279fa7705 Have ipmi "dissectors" register through the build process instead of "manually"
Change-Id: I6d6d32e8a1bc21dee9bf52b502e1a02e9511ecb2
Reviewed-on: https://code.wireshark.org/review/2253
Reviewed-by: Dmitry Bazhenov <dima_b@pigeonpoint.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-06-16 20:38:54 +00:00
Dario Lombardo 2919633c65 New dissector for Character Generator Protocol (chargen).
Change-Id: I01e0508adc79dda11b3eaee51fa01110b8c83e39
Bug: 10178
Reviewed-on: https://code.wireshark.org/review/2220
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-06-15 18:41:21 +00:00
U-beauty\bdn 977a811217 IPMI trace dissector (without PCAP-dependent part).
Added KCS and TMode protocol dissectors.
Request/response logic has been revised.
Saved request data logic has been revised.
Added Get Message command response dissector.
Added missing PICMG command dissectors.
Added new PICMG command dissectors.
Added new PPS OEM command entries.
Added VITA 46.11 command dissectors.

From: Bill Meier:
- refs to value_strings/range_strings in hf[] entries, by convention, should use VALS/RVALS macros;
- refs to true_false_strings should use TFS(&...) macro.
  also: true_false_string definitions should not be defined as arrays.
- remove some unneeded #includes (packet-ipmi.c).
- Do some re-indentation.
- Add editor-modelines as needed.

bug: 10004
Change-Id: Ib269b35784c0b70892d1e0111bcfb483ea64092c
Reviewed-on: https://code.wireshark.org/review/1185
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-06-06 06:43:45 +00:00
Guy Harris 7c68a8e540 Move the definitions of OUI value_strings to epan/oui.c.
Change-Id: Iad921bebad03dd482b58a38ed25ae3f4a99c5cf2
Reviewed-on: https://code.wireshark.org/review/1904
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-05-31 22:07:56 +00:00
Guy Harris c91dd11ccb Split off the dissectors for 802.3 "slow protocols".
Add a dissector table for the 802.3 "slow protocols" subtype, split the
dissectors for those protocols into separate files, and have them
register in that dissector table.

Remove some unnecessary #includes while we're at it.

Change-Id: Ic36c9c255efdd348055fa4f21fd6cc094f74e378
Reviewed-on: https://code.wireshark.org/review/1891
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-05-31 05:07:13 +00:00
Balint Reczey 5c6403b27b Honor configured CMAKE_INSTALL_LIBDIR when installing libraries
Change-Id: I860c9408ed01e9567992b0dcf5c6c6421344c13e
Reviewed-on: https://code.wireshark.org/review/1862
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-05-30 13:36:02 +00:00
Martin Kaiser 357b61092b start a dissector for GDB's remote serial protocol
Change-Id: I8e20917ac08e2349caf330ee967d24d7c738bb71
Reviewed-on: https://code.wireshark.org/review/1815
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
Tested-by: Martin Kaiser <wireshark@kaiser.cx>
2014-05-29 17:32:41 +00:00
Guy Harris 088b06418a Add support for dissecting pcap-ng file-type-specific blocks.
Add a dissector for pcap-ng file-type-specific blocks; it creates a
dissector table using the block type as the key, attempts to call the
appropriate dissector using that table, and does a minimal dissection if
that fails.

Change-Id: I67e139f06ba88d40faa5b4ab169e8df08f5bfe7b
Reviewed-on: https://code.wireshark.org/review/1784
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-05-25 00:36:23 +00:00
Michael Mann 9554b2fc62 Condense DIS dissector to a single file.
This doesn't appears to be "autogenerated", and it certainly isn't the biggest dissector even after the merge.  This avoid file pollution, makes less non-static variables/functions and makes the check* scripts job easier.

Change-Id: If94857e4a3e602c3d45201b1aebbf466ba3e1dd1
Reviewed-on: https://code.wireshark.org/review/1597
Reviewed-by: Michael Mann <mmann78@netscape.net>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-05-12 01:41:23 +00:00
Gerald Combs 44d83c2f4f Don't build update-sminmpec by default when using CMake.
Change-Id: Iccce783eeef23a90ca23900cf18e2d3d2620c767
Reviewed-on: https://code.wireshark.org/review/1592
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-05-11 16:54:10 +00:00
Peter Ross dac0a0c9a3 packet-link16: Link 16 message dissector (MIL-STD-6016)
Described in:
Robertson, W., and Ross, P., Extending the Wireshark Network Protocol Analyser
to Decode Link 16 Tactical Data Link Messages, Defence Science and Technology
Organisation, January 2014. DSTO-TN-1257.

Change-Id: Ie4b1228ef112e56b3ab975d0c9254fa468b90cc2
Reviewed-on: https://code.wireshark.org/review/1551
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-05-10 15:42:56 +00:00
Gerald Combs 3f247a5cee Be less aggressive about rebuilding sminmpec.c.
Instead of forcing developers to generate sminmpec.c (which will have
different results depending on the presence or absence of a working
Internet connection) add sminmpec.c back to the repository. I'll add
it to the weekly update-numbers script so that it will be updated at
the same time as manuf, services, enterprise-numbers, and usb.c.

Change the Autotools, CMake, and Nmake sminmpec.c target name to
"update-sminmpec".

Remove the mtime check from make-sminmpec.pl. Update enterprise-numbers
and sminmpec.c while we're here.

Tested with an in-tree Autotools build and an out-of-tree CMake build.

Change-Id: Iecc332ce2731e3e98ab0205a56c78807e599a026
Reviewed-on: https://code.wireshark.org/review/1516
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-05-09 09:03:24 +00:00
Sean O. Stalley ac99cfd0d2 Media Agnostic USB Packet Dissector
This dissector dissects MA USB Packets. It is capable of dissecting
Media Agnostic packets both in a TCP stream as well as packets sent
over SNAP (referred to in spec as "Raw Ethernet" mode).

Change-Id: I3ad4e1beb891f9c2835adff320095e7e738241eb
Signed-off-by: Sean O. Stalley <sean.stalley@intel.com>
Reviewed-on: https://code.wireshark.org/review/1252
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-05-05 13:49:56 +00:00
Michael Mann bf3fbb394f Add dissector for 3GPP2 A21/S102 protocol.
Change-Id: I611c217e1eec47da7427c0317ed9416b4c52411a
Reviewed-on: https://code.wireshark.org/review/1487
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-05-05 04:28:57 +00:00
Jakub Zawadzki 5f239013e7 wmem: add new simple block allocator, use it in packet-scope.
For packet-scope allocation, there's no need to support realloc(), free()
cause memory will be garbage collected after packet dissection.

(and this allocator is much faster than full block allocator).

Change-Id: I73fdf708c3077f48f55bdcc71f4fa859e4ac2335
Reviewed-on: https://code.wireshark.org/review/1428
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-05-02 21:07:07 +00:00
Marcel Essig 34fa169719 Add a new Dissector for HiSLIP
Change-Id: I87aaf4c8093ee8013a661aa8af81dba63eaa7086
Signed-off-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-on: https://code.wireshark.org/review/1337
2014-05-02 13:39:42 +00:00
Philip Rosenberg-Watt cd68b4744c Add dissector for LINKTYPE_EPON
See IEEE Standard 802.3-2012 Section 5, Clause 65 and CableLabs DPoE
Security and Certificate Specification 1.0, Section 6.

Currently dissects 1G mode. 10G mode will be added when hardware is
available.

Change-Id: I6232af9bf6807644ef66a120d97e5fa5927988fe
Reviewed-on: https://code.wireshark.org/review/1284
Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-28 15:26:32 +00:00
Michael Mann 5ce5d0677e swIPe IP Security Protocol
bug:9996
Change-Id: I7c7ab7dfa81e44d6bf9affe7bfb0cd9f0a221adf
Reviewed-on: https://code.wireshark.org/review/1379
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-04-27 20:55:58 +00:00
Evan Huus fbc522633e Revert "Move kerberos to dirty list in CMake"
it no longer has any warnings

This reverts commit 30c9f421c0.

Change-Id: I5cc71f905ffa4f00ffb44ad7d03b2684c2e44e38
Reviewed-on: https://code.wireshark.org/review/1316
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-24 02:16:37 +00:00
Evan Huus 30c9f421c0 Move kerberos to dirty list in CMake
As pointed out by David Ameiss, I only did automake the first time round.

Change-Id: Ie72ab5014d8f21d194d15af430c6c0a8a612f5f7
Reviewed-on: https://code.wireshark.org/review/1309
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-23 19:20:14 +00:00
Evan Huus 9ba4c6e091 Hash map implementation for wmem.
This has two expected uses:
- Many current users of wmem_tree don't actually need the predecessor lookup
  it provides (the lookup_le function family). A hash map provides straight
  insertion and lookup much more efficiently than a wmem_tree when predecessor
  lookup isn't needed.

- Many current users of glib's hash table and hash functions use untrusted data
  for keys, making them vulnerable to algorithmic complexity attacks. Care has
  been taken to make this implementation secure against such attacks, so it
  should be used whenever data is untrusted.

In my benchmarks it is measurably slower than GHashTable, but not excessively
so. Given the additional security it provides this seems like a reasonable
trade-off (and it is still faster than a wmem_tree).

Change-Id: I2d67a0d06029f14c153eaa42d5cfc774aefd9918
Reviewed-on: https://code.wireshark.org/review/1272
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-23 12:42:26 +00:00
Alexis La Goutte 0601a8b54a Move packet-kerberos to ASN1 dissector
Change-Id: Ib4c97cb654b744bdc65155a0f97b3e944486fc30
Reviewed-on: https://code.wireshark.org/review/1200
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2014-04-18 22:00:04 +00:00
Michael Mann 8055351c6d Add SPDY dissector (from SPDYSHARK)
Porting SPDYSHARK Plugin ( http://code.google.com/p/spdyshark/) to built-in dissector

Closed-bug: 9821
Change-Id: I3169ab49e67f67a17e4094a289f4d3a389d610bc
Reviewed-on: https://code.wireshark.org/review/767
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-15 23:19:43 +00:00
Martin Kaiser 537a02b365 start a dissector for Ethernet Local Management Interface
Change-Id: I332bd690be67c908067c12e570f993565de98aed
Reviewed-on: https://code.wireshark.org/review/1159
Reviewed-by: Martin Kaiser <wireshark@kaiser.cx>
Tested-by: Martin Kaiser <wireshark@kaiser.cx>
2014-04-15 21:30:25 +00:00
Joseph Huffman fad0aa0382 Addition of AllJoyn packet dissector. Bug 9361
Change-Id: Ia582732ee27ce9c1e4280afef5a6b3e3be959d23
Reviewed-on: https://code.wireshark.org/review/1127
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-14 17:57:02 +00:00
Michael Mann 4990a8e4ee Added support for MQTT protocol. Bug 9930
Change-Id: I04fc3a6225c56af9905f4f9bbbca5bc10f214843
Reviewed-on: https://code.wireshark.org/review/873
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-09 22:35:08 +00:00
Guy Harris 130b94fa61 Sadly, packet-dcerpc-mapi.c is not yet free of warnings.
Change-Id: Ic208c89a915fc34d0f42ce788a60aa15029d105b
Reviewed-on: https://code.wireshark.org/review/1036
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-04-09 02:02:26 +00:00
Guy Harris d8a647ece1 OK, that might mean packet-dcerpc-mapi.c now has no warnings.
Change-Id: I22688f0a9b6c04b1e0e9f16c92e7c0713610854c
Reviewed-on: https://code.wireshark.org/review/1035
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-04-09 00:58:56 +00:00
Michael Mann 2f4ca9c8d9 Initial checkin of LBM aka 29West dissectors. See Bug 9718.
Change-Id: If8fcfe1971c8863f370e440f64c36eb7566f6852
Reviewed-on: https://code.wireshark.org/review/113
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-07 23:28:46 +00:00
Michael Mann 9fa48e3796 New DCE/RPC MDSSVC dissector. Bug 9950
Change-Id: I8832c139938e767de71b2cc74ca41208f509e478
Reviewed-on: https://code.wireshark.org/review/959
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-04-04 23:04:47 +00:00
Evan Huus b238cd1541 Scrap wmem splay trees for now.
There is confusion about API usage, and problems on my part concerning whether
keys should be compared signed or unsigned, and how to do that efficiently.
Unsigned keys in particular were behaving oddly.

Change-Id: I075693bbd04c15f79f24f9a24006003a914cc572
Reviewed-on: https://code.wireshark.org/review/924
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-02 17:14:16 +00:00
Guy Harris fc48f57214 Add a dissector for Apple's PKTAP headers.
It automatically works for LINKTYPE_PKTAP and, by default, for
LINKTYPE_USER2; if any other dissector is specified for LINKTYPE_USER2,
that dissector overrides PKTAP.

Change-Id: Ic00ac8a81c6101e45d638d337aef42df3920da12
Reviewed-on: https://code.wireshark.org/review/903
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-01 17:03:29 +00:00
Alexis La Goutte 757aa33220 Continue to remove $Id$ from top of file
(Using sed : sed -i '/^\# \$Id\$/,+1 d') (start with dash)

Change-Id: Ia4b5a6c2302f6a531f6a86c1ec3a2f8205c8c2dd
Reviewed-on: https://code.wireshark.org/review/881
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-03-31 18:48:06 +00:00
Evan Huus 7df883954e Splay tree implementation for wmem
This is a tree implementation intended to replace the current red-black tree in
wmem_tree (which was inherited from emem), assuming there are no regressions.
Splay trees bubble recently accessed keys to the top, and as such have a number
of very nice properties: https://en.wikipedia.org/wiki/Splay_tree

This implementation is a variant known as "independent semi-splaying", which has
better practical performance. It should do about as well as the red-black tree
for random insertions and accesses, but somewhat better for patterned accesses
(such as accessing each key in order, or accessing certain keys very
frequently).

There are a few other changes relative to the red-black tree implementation that
are worth mentioning:
 - Instead of requiring complex keys to be split into guint32 chunks and doing
   this weird trick with sub-trees, I let the keys be arbitrary pointers and
   allowed the user to specify an arbitrary comparison function. If the function
   is NULL then the pointers are compared directly for the simple integer-key
   case.
 - Splay trees do not need to store a red-black colour flag for each node. It is
   also much easier to do without the parent pointer in each node. And due to
   the simpler system for complex keys, I was able to remove the "is_subtree"
   boolean. As such, splay nodes are 12 bytes smaller on 32-bit platforms, and
   16 bytes smaller on a 64-bit platform.

All done in about half the lines of code.

Change-Id: I89fb57e07d2bb7e3197190c7c2597b0c5adcc03b
Reviewed-on: https://code.wireshark.org/review/758
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-03-29 18:01:55 +00:00