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
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
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
Make it have the usual collection of 3 static buffers, just in case
somebody decides to call it more than once in the same
printf-like-routine call.
svn path=/trunk/; revision=7940
removed two hf fields that are now redundant since F_CTL is decoded
placed most interesting header fields in a struct
added request response matching and measurement of delta time between the first and the last frame of an exchange.
todo:
1, finish restructure of decoding of fc header so that
it will populate the tree as it reads more data fields from the tvb
so that we can get useful info in the tree even for short frames.
2, add TAP to fc and pass the header struct and the time delta struct to
tap listeners
3, add ServiceResponseTime tap listener for FC
svn path=/trunk/; revision=7923
epoch-in-seconds value and converts it to a string.
Use that routine in the RADIUS dissector, rather than using "ctime()"
and "tzname[]" - "tzname[]" strings might contain non-ASCII characters,
which currently give the GTK+ 1.3[.x] used on Windows, and also, I
think, GTK+ 2.x, heartburn, as they expect UTF-8, not, for example, ISO
8859/1.
Fix the string length in "abs_time_to_str()".
svn path=/trunk/; revision=7124
changes to the actual argument lists in the calls (putting the byte
string length after the byte string pointer).
Make the byte string length actually be the length, not the length - 1.
Use a #define for the longest byte string it can handle, and put in a
"g_assert()" to check the sanity of that length.
svn path=/trunk/; revision=6774
"ether_to_str_punct()" no longer deals only with Ethernet-style
addresses, as it now takes a length argument, rename it
"bytestring_to_str()" - and make it static, as it's not used outside
"to_str.c".
Get rid of unused "fc_to_str_buf()" routine.
svn path=/trunk/; revision=6770
we're including them to get AF_ values.
Shuffle the order of those includes in "inet_pton.c" to match the order
in "inet_ntop.c".
Include <winsock2.h> in "resolv.c" and "to_str.c" so that we get AF_
values from it - including AF_INET6 - if they exist, as we want to have
everybody who uses AF_INET6 get the same value.
svn path=/trunk/; revision=6517
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
<packet32.h> includes <winsock2.h>; we include that rather than
<winsock.h>, to avoid errors due to conflicting declarations in
<winsock.h> and <winsock2.h>.
svn path=/trunk/; revision=5742
fractions-of-a-second (the units of which are either milliseconds or
microseconds, specified by a Boolean argument), and formats it into a
"DD days, HH hours, MM minutes, SS seconds" using a buffer supplied to
it. Have "time_secs_to_str()" and "time_msecs_to_str()" both use it.
Also, have it correctly handle the case of SS being > 0 but < 1 (which
"time_msecs_to_str()" didn't do).
Rename "rel_time_to_str()" to "rel_time_to_secs_str()", and add a
"rel_time_to_str()" routine that takes a "struct timeval" and hands its
seconds and microseconds values to "time_secs_to_str_buf()". Use
"rel_time_to_secs_str()" to format FT_RELATIVE_TIME values for now; we
might want to use "rel_time_to_str()" for them, though, or make it an
option (either a user option, or a per-field option, using the field
that also holds BASE_ values).
svn path=/trunk/; revision=3806
value.
Check that the microseconds field of an absolute time is valid, if it's
present.
Set "tm_isdst" in the "struct tm" handed to "mktime()" to -1, so that
"mktime()" will attempt to figure out whether the time is daylight
savings time or not.
Check that "mktime()" was able to convert the time.
svn path=/trunk/; revision=3487
"value_string.c", as they include "epan/to_str.h", and that uses "struct
timeval" in some function prototypes.
In "to_str.c", include <sys/types.h> before including <netinet/in.h>; on
at least some platforms, definitions in <netinet/in.h> require types
defined in <sys/types.h>.
In "to_str.c", include <sys/socket.h>, so that AF_INET6 is defined.
svn path=/trunk/; revision=3238
to_str.{c,h}. Resolved strange situation where ipx_addr_to_str was
declared in packet.h but defined in packet-ipx.c by moving
ipx_addr_to_str, ipxnet_to_str_punct, and ipxnet_to_str from packet-ipx.{c,h} to to_str.{c,h}
svn path=/trunk/; revision=3219