This functin was in a recent profiling run the fifth most expensive function.
It consumed ~3.5% of the total cpu in that run.
Using a static table this function is now just over twice as fast as previously.
My testrun calling it 10.000.000 times in a loop changed the execution time from ~17.3s ro ~8.2s
If this test was representative for the speedup and if ~3.5 in the profile run
was representative for normal cases this should make ethereal ~1.8% faster.
Woohoo.
(low hanging fruit)
svn path=/trunk/; revision=8992
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
* Added a new function get_file_in_temp() to
epan/filesystem.c. This because of asn1.dll plugin which
had code to write to a log-file "c:\temp\ethereal.log". I feel
this patch makes this safer; I don't even have a c:\temp dir.
* Patched packet-asn1.c to use get_file_in_temp().
* Added some #undef to packet-snmp.c to silence gcc.
* Changed "%u" -> "%lu" formats in util.c
Rename get_file_in_temp() to get_tempfile_path() to match other function
names.
svn path=/trunk/; revision=8859
- Dissector for FICON
- Dissector for FC-SP (Security Protocol for Fibre Channel)
- Patches to correct the reassembly of FC fragments.
- Support for new MDS Port Analyzer Adapters that carry the
frame length for truncated frames.
svn path=/trunk/; revision=8823
any previously-allocated version first, so that they don't leak memory.
From Olivier Biot: add a "proto_item_append_string()" routine, to append
to the string value a protocol tree item has.
svn path=/trunk/; revision=8821
exception, for use in CATCH_ALL handlers, so you can catch all
exceptions and then pass the exception code on to a routine that handles
different exceptions differently.
svn path=/trunk/; revision=8757
stub data even if there's a problem dissecting the verifier.
Show stub data as "Encrypted stub data" if it's encrypted, "Decrypted
stub data" if it was encrypted but we decrypted it, and "Stub data" if
it wasn't encrypted.
Don't attempt to decrypt data unless it was encrypted (i.e., the
authentication level is "Packet privacy".
Get rid of "decrypted_data" member of "packet_info" structure - we don't
need it any more.
svn path=/trunk/; revision=8743
directory in nmake files persists across targets; presumably all
commands, or, at least, all "cd" commands, are run in the same process.)
svn path=/trunk/; revision=8682
recurse into subdirectories doing "nmake -f Makefile.nmake distclean".
Have "nmake -f Makefile.nmake clean" not remove stuff that "make clean"
doesn't remove (such as Flex/Bison output and config.h files) - and have
"nmake -f Makefile.nmake distclean" remove stuff that "make distclean"
removes, including "tethereal-tap-register.c" and
"ethereal-tap-register.c".
svn path=/trunk/; revision=8672
that probably means you've registered two fields with the same field ID
variable, which is an error.
Fix the bugs doing so found.
svn path=/trunk/; revision=8629
0 means "there is no FCS in the packet data", 4 means "there is an FCS
in the packet data", -1 means "I don't know whether there's an FCS in
the packet data, guess based on the packet size".
Assume that Ethernet encapsulated inside other protocols has no FCS, by
having the "eth" dissector assume that (and not check for an Ethernet
pseudo-header).
Have "ethertype()" take an argument giving the FCS size; pass 0 when
appropriate.
Fix up Wiretap routines to set the pseudo-header. This means we no
longer use the "generic" seek-and-read routine, so get rid of it.
svn path=/trunk/; revision=8574
non-null, set "*exception" to the appropriate exception - its callers
rely on it.
Now that it does that, there's no need for "check_offset_length()" to
check for a length of -1, as "compute_offset_length()" does so, and
therefore "check_offset_length_no_exception()" does so.
svn path=/trunk/; revision=8562
Remove the internal packet-per.c functions
"dissect_per_length_determinant()" and
"dissect_per_normally_small_nonnegative_whole_number()" from the
plugin API, as they shouldn't be used outside the PER dissector.
Remove the H.225/H.245 functions
"dissect_h225_TransportAddress()" and
"dissect_h245_NonStandardParameter()" from the plugin API until
we really need them in plugins.
Add the string dissector table functions to the plugin API.
svn path=/trunk/; revision=8532
Don't crash if "-z" is used on the command line when a live
capture is being done (e.g., with "-k -S" - in that case,
"cfile.filename" is null when the window is created), just don't
display the file name in the title.
Don't set the title of a non-existent window - create the window
first.
svn path=/trunk/; revision=8472
One can now select a packet and mark it as a TimeReference packet using the menu.
A TimeReference packet will be indicated by having all timestamp related column entries replaced by the string *REF*
A TimeReference packet will always be displayed in the packet pane, and overrides any display filters.
When a frame is a TimeReference frame, all later frames will calculate the TimeRelativeToFirstPacket relative to the timestamp of the TimeReference frame instead of the first frame of the capture.
You can have any number of TimeReference frames you like.
svn path=/trunk/; revision=8459
Make the Ethereal "decode as" stuff not blow up with string dissector
tables.
Selectors for uint dissector tables are unsigned, not signed.
svn path=/trunk/; revision=8408
comparison function to use based on the type value passed in. For the
traditional unsigned integer table, require FT_UINT{8,16,24,32}; if the
type is FT_STRING or FT_STRINGZ, use the string hashing functions
instead.
Add routines for manipulating entries and looking up dissectors in
string dissector tables.
svn path=/trunk/; revision=8407
Ethereal presents a column to display culmulative bytes into the capture.
A new column type is added : Culmulative Bytes.
While PacketLength column type specifies the number of bytes in the current packet,
Culmulative Bytes specifies the culmulative number of bytes from the start of the capture.
svn path=/trunk/; revision=8359
expression information if the address type is AT_NONE -
"address_to_str_buf()" panics if passed an AT_NONE address, as there's
nothing sensible one can do with them. (A null string wouldn't be
appropriate here, as a dissector might have set the address columns to a
string.)
svn path=/trunk/; revision=8269
which fills in a caller-supplied buffer.
Create "_buf()" versions of various "to_str" routines for various
address types, and create a routine to map SNA FIDs to strings, and use
them to finish up "address_to_str_buf()".
Get rid of the declaration of "sna_fid_type_4_addr_to_str()" in
"packet-sna.h", as that routine has been swallowed up in
"sna_fid_to_str()".
svn path=/trunk/; revision=8260
support for registering fields after all the protocol
registration routines are called (i.e., adding fields to the
named field tree as they're registered);
fix the GTK 2.x version of the field list dialog to show the
correct name.
svn path=/trunk/; revision=8248
Put in some additional "case AT_" statements to
1) squelch compiler warnings;
2) add AT_ARCNET (cheap and easy);
3) add placeholders for some other address types.
svn path=/trunk/; revision=8243
Implement conersion from address to string for IPv4 and IPv6
and update the conversation tables to use the new interface.
svn path=/trunk/; revision=8234
move the initialization of the addresses in the plugin interface
structure from run-time to link time;
don't attempt to rebuild the X* files automatically, just warn
that they're out of date and show the command used to rebuild
them (not everybody has GCC installed, but it's required in
order to rebuild them).
Get rid of the checked-in Xepan_plugins.c, as it's no longer generated
or used.
Fix Makefile.am now that Xepan_plugins.c has been replaced by Xass-list.
Give plugin_gen.py an RCS ID.
svn path=/trunk/; revision=8186