cf_ functions, have separate ones for different classes of routines, and
use gboolean when the return value is just "success" or "failure" - that
way you don't get compiler warnings if a case statement isn't handling a
particular status value if the routine in question won't return it.
svn path=/trunk/; revision=13293
This includes: all functions in file.h now have a cf_ prefix, will have doxygen tags, will have the capture_file *cf as the first parameter and I tried to generalize the return values for non trivial functions.
Hopefully, I didn't introduced any new bugs, as I had to change a lot of files...
svn path=/trunk/; revision=13289
don't use global cfile at all but only an untpyed handle to call the cf_... functions in file.c
move the save_file member from capture_file to capture_opts, as it's only used while capturing and while preparing it
svn path=/trunk/; revision=13276
Patch for graphing ISUP calls. It shows the type of message,
in the first one the calling and called numbers, and in the second the SPs
and CIC; in releases it shows the cause value.
svn path=/trunk/; revision=13262
don't use the print mechanism for that - do the writing directly in the
"follow stream" code.
Use "size_t" for character counts.
Make the "hexchars" array static and const, as it's not written to, and
there's probably no point in copying it to the stack (unless that
improves cache locality).
There's no need to explain why we're subtracting the number of bytes
actually read, rather than the number of bytes asked for, from the data
length.
Note an issue with printing lines.
svn path=/trunk/; revision=13240
an all-space-character string.
Don't use "filter_string" both for the (unfreeable, unmodifiable) value
fetched from the text entry and the new filter expression; use it only
for the former, and make it a "const" pointer to avoid compiler
warnings.
Use a GString to construct the stuff to be added to the new filter
expression - the old code, when appending stuff to the filter expression
in a loop, would leak the pre-append value.
svn path=/trunk/; revision=13237
add radiobutton to allow saving raw tcpstreams
these radiobuttons should, by someone that uses, this feature be changed into
a menu instead.
svn path=/trunk/; revision=13236
- make VoIP Call Analysis work if, called from command line
- should also work now while capturing with packet list
updated in "real time" (to be tested)
- give each tap listener a unique identifier, so ethereal
won't mix them up
- various cleanups
- compile by default
Todo:
- add support for "tap display filter"
- reimplement function to add rtp streams to the call flow.
svn path=/trunk/; revision=13232
h323 taps support up to 5 messages per packet now.
VoIP call analysis:
- Collect ISUP, SIP and H323 calls from a capture and show them in window with the following info:
- Start and Stop time of the call
- Init
svn path=/trunk/; revision=13225
I might later add something like "View/Auto Resize Columns" with a checkbox menu item, so this is done everytime a capture file finished loading. However, I don't know how well this will work together with "Update list of packets in real time" while doing a capture.
svn path=/trunk/; revision=13192
If we would allow selecting multiple packets in the packet list in the future, this option would print all selected packets.
svn path=/trunk/; revision=13169
However, if someone (already) want's to try out right now, you simply have to remove the comments in menu.c around line 430
svn path=/trunk/; revision=13091
window titles even on UN*X, and if the user's specified a description
for an interface, use that rather than the description supplied by
libpcap.
Put the interface name into the main window title when doing a live
capture.
svn path=/trunk/; revision=13060
On WIN32, this interface name is in a somehwat unreadable format "\Device\NPF_{242423...", display the interface description on win32 systems instead "Realtek RTL ..."
svn path=/trunk/; revision=13048
"gpointer" - callers should do that if appropriate (or perhaps change
the call to pass a different argument if that's more appropriate), and
even if casting it were the right thing to do, the argument needs to be
surrounded with parentheses so the correct value is cast.
svn path=/trunk/; revision=12919
"window_new_with_geom()" - there's no way to tell the compiler that
we're not going to be modifying it, but we aren't.
The right way to check whether a pointer is null and get a Boolean is to
test it against null, not to cast it to a Boolean type - as Boolean
types in C89/C90, at least, are just integral types, that cast might
just throw away the upper 32 bits; that probably yields the results you
want, but the compiler might well justifiably warn about that on an LP64
platform.
svn path=/trunk/; revision=12918
test it against null, not to cast it to a Boolean type - as Boolean
types in C89/C90, at least, are just integral types, that cast might
just throw away the upper 32 bits; that probably yields the results you
want, but the compiler might well justifiably warn about that on an LP64
platform.
svn path=/trunk/; revision=12915
match what "register_tap_listener()" expects (rather than squelching
warnings about the differences by casting function pointers to "void
*").
Make static some functions not used outside the module in which they're
defined.
svn path=/trunk/; revision=12913
const pointer (so that we don't get complaints when we make the
tap-specific data argument to "tap_queue_packet()" a const pointer,
allowing dissectors to hand const data to a tap without a complaint), we
should make the tap per-packet function take a const pointer as an
argument as well. Do so.
In some taps, use _U_, or actually use the argument, rather than
sticking in dummy "X = X" assignments to fake use of parameters. (This
means that the tap functions in question no longer have the notion that
they act on a particular static structure wired in.)
svn path=/trunk/; revision=12910
one.
"get_basename()" doesn't modify its argument, and its callers don't
modify the substring pointed to by the result, so make it take a "const
char *" as an argument and return a "const char *".
"find_last_pathname_separator()" doesn't modify its argument, so make it
a "const char *" - but some of its callers pass a non-"const" "char *"
and modify the result, so don't make its return value a "const char *".
And, as none of its callers are outside "filesystem.c", make it static.
In "about_folders_page_new()", have separate variables for pathnames
returned as "const char *" (which are cached by the routine that returns
them, so you can't modify them - and can't free them, so get rid of the
commented-out "g_free()" calls for them) and pathnames returned as "char
*" (which are allocated anew for each call, and can be modified, but
have to be freed).
Clean up white space.
svn path=/trunk/; revision=12881
array of "const char *" rather than to an array of "char *", and make
the second argument of "col_set_str()" a "const char *" - there's no
guarantee that "col_data" points to something you're allowed to modify.
svn path=/trunk/; revision=12880
array of "const char *" rather than to an array of "char *", and make
the second argument of "col_set_str()" a "const char *" - there's no
guarantee that "col_data" points to something you're allowed to modify.
svn path=/trunk/; revision=12875
to resolve it to a name.
Fix up some const-pointer-to-non-const-pointer, and
function-pointer-to-void-*, conversions.
Fix some comments.
svn path=/trunk/; revision=12863
Hopefully the unspecified forward declaration of capture_options_t in main.h is portable, but buildbot will tell me. This way I need the internals of that struct only at the places I really use it.
svn path=/trunk/; revision=12853
in some profiling runs eth_clist_get_type() took ~6% change this to just a variable and initialize it explicitely from main.c
svn path=/trunk/; revision=12653
the display style (ASCII/EBCDIC/char[]/hex) radio button set - pushing a
radio button generates *two* events, one for the button that gets turned
off and one for the button that gets turned on.
svn path=/trunk/; revision=12530
"history_current" happens to be null (that might not be possible, but
this is still perhaps a bit clearer).
Clear "history_current" after clearing the list, as the current entry no
longer exists, so that "packet_history_add()" doesn't use the now-bogus
value.
svn path=/trunk/; revision=12488
and use that information to provide better error messages.
Have "merge_open_outfile()" do all the work of filling in the
merge_out_file_t structure, with the values to use passed as arguments.
Get rid of some structure members that used to be used solely to pass
information to "merge_open_outfile()".
Add a "cf_merge_files()" routine to do the merging and reporting of errors.
svn path=/trunk/; revision=12420
box for the flag is active and clear it if it's inactive, rather than
clearing all but RESOLV_CONCURRENT and then setting flags if the check
box is active - or, in one case, not clearing any flags due to a typo
and then setting them, so they never get cleared. This matches what's
done with theresolution flags in some other places.
svn path=/trunk/; revision=12375
exist if no filters have been remembered; don't set the popdown string
list for the filter combo box if the list is empty.
svn path=/trunk/; revision=12367
to hold the representation of the range, rather than imposing a
fixed-size limit on the string.
Check for overflow in "strtoul()" - and use "strtoul()" rather than
"strtol()" for range members.
Clean up indentation.
Get rid of an unnecessary include in <epan/range.h>.
svn path=/trunk/; revision=12323
allocate them to be large enough.
Add checks that the numbers in the range fit in a guint32.
Check the validity of a range before saving or printing, and report
errors in an alert box.
Clean up white space.
svn path=/trunk/; revision=12320
number of ranges - 1, and update loops that iterate over all the ranges
appropriately.
Make "range_convert_str()" return a success/failure indication, and
check it. Rewrite it to do more checks, and not to blithely ignore
unknown characters.
svn path=/trunk/; revision=12313
Checking the syntax involves opening a device, which
1) might not succeed
and
2) might tie up a BPF device or otherwise consume resources
so we leave it up to the capture operation to do the checking.
svn path=/trunk/; revision=12225
it's a pain to have to keep typing the same filter over and over again
if you're trying multiple captures of the same type of traffic. At
least with GTK+ 2.x, the text of the filter is selected, so if you start
typing a new filter it'll replace the default filter.
svn path=/trunk/; revision=12212
of entries in it and check that many entries - that squelches a compiler
warning.
From Alejandro Vaquero: get rid of an unused argument to
"rtp_packet_add_graph()".
svn path=/trunk/; revision=12201
puts a separate copy in every file that includes "h323_conversations.h",
even if it doesn't use that copy. Instead, define it in
"h323_conversations.c" and declare it in "h323_conversations.h".
svn path=/trunk/; revision=12179
RTP graphic analysis;
assorted bug fixes;
display delay and jitter in milliseconds, and add the percentage
of lost packets to the statistics.
svn path=/trunk/; revision=12166
Having a closer look at the new and very useful H323 Call Analysis
feature, I have found some bugs and unnecessarily complicated code for
managing the registration of the tap listeners. So I decided to rewrite
this part of the source code. This part of the code is much smaller now.
Unnecessary and wrong calls of register_ethereal_tap() and
register_tap_listener_xxx() have been removed or replaced.
I also fixed a bug with RAS Messages.
svn path=/trunk/; revision=12149
not "Save".
In UN*X with GTK+ 2.x, put the affirmative button in file dialogs to the
right of the cancel button, as is done with other dialogs.
svn path=/trunk/; revision=12146
before applying any other preferences, as, before we've applied them,
the internal state of the preferences in some dissectors might be
inconsistent (for example, the 802.11 dissector might've had its
number-of-WEP-keys preference increased but might not yet have allocated
a table for the WEP keys), and, as "gui_prefs_apply()" could cause a
redissection when redisplaying, that could cause dissectors to
malfunction (e.g., crash).
svn path=/trunk/; revision=12102
giFT, iSCSI, and iSNS don't show up at the end. Protocol short names
are ASCII, so just use "g_ascii_strcasecmp()".
Clean up white space.
svn path=/trunk/; revision=12020
records by tw fields: base (for integers), and blurb
Add a "-G values" option which shows value strings and true_false strings for
the fields that have them.
svn path=/trunk/; revision=11954