after asking the devlist if this would break things and got no negative response, try to scan command line parameters twice, trying to "rewind" the getopt settings
this way, fixing #135
svn path=/trunk/; revision=14610
glib-object.h is is glib2 only.
graph_analysis.c:47:25: glib-object.h: No such file or directory
a patch for ths issue and also to correct the "first_item"
issue reported in "RE: [Ethereal-dev] Voip graph analysis "Save as" button"
svn path=/trunk/; revision=14577
a patch which adds support for displaying jxta
conversations and endpoints from the 'Statistics' menu. Also adds :
- a generated field to Welcome messages to indicate whether this
welcome is from the initiator or the receiver. You can filter on this
field with 'jxta.welcome.initiator==[0|1]'
- Marks the source and destination fields of message added in the last
patch as generated fields. (Saw it being done for some other protocol).
- Cleans up dissection of Message which used to assume it would
dissected more than one set of hdr/message per tvbuff. Now it only
attempts to dissect one.
- Uses GMemChunk for tap info and for conversation data rather than
g_malloc() There's still a major leakage of g_malloc()ed the c-strings
which are used in jxta addresses. Any suggestions for how these can be
allocated such that they can be freed re-init is called would be
appreciated. For address objects whose data ptr doesn't point into a
tvbuff it's not clear what the lifecyle of an address object is.
- Fixes a bug with filling in the of the transport layer conversation
data. >= vs. >
svn path=/trunk/; revision=14559
- Add a pane to contain the main graph and the comments to be able to
split them
- Change the main graph area to be a scrolled_window
- Change the look of the selected item to be blue with white text color
- Gray color the title area
- Change the conversations color to more "soft" colors (it was difficult
to read in some cases before)
svn path=/trunk/; revision=14556
as I don't see a way to fix this (and it just don't really hurt, as this scrollbar is usually shown anyway if some more packets have to be display) just show it always
svn path=/trunk/; revision=14546
use the console_log_handler in main.c for win32 AND unix now
Currently use the log for the capturing engine (only), as I desperately needed a log output for debugging.
svn path=/trunk/; revision=14438
to prevent problems, bring the main GUI into "capture mode" right after successfully spawn/exec the capture child, without waiting for any response from it
svn path=/trunk/; revision=14436
It adds "CIC" info display on the comments column for ISUP
It adds a small Help button that open up a window that offers you to vist the Wiki page containing the explanation of the Dialog window.
svn path=/trunk/; revision=14410
If we *don't* have libpcap, don't include "capture.h", and don't test
whether a capture is in progress.
Clean up a message.
svn path=/trunk/; revision=14356
all of it correctly, and as if you don't initialize all of it you get a
compiler warning.
Add an assignment to squelch a compiler warning.
svn path=/trunk/; revision=14317
This patch fixes the slightly broken logic in the loop which searches
for establisted call in isup_calls_packet.
The problem is that (right_pair) is set to false if we see call on the
same CIC as existing conversation, but with different opc/dpc pair:
at this point dpc/opc pair is not checked, so any call with the same
CIC matches:
voip_call.c:851
else{
right_pair = FALSE;
}
and then the correct conversation is never found, because right_pair is
never reset for this packet, which leads to total confusion of the call
tracking logic
Fixed by initializing right_pair = TRUE for every loop iteration
svn path=/trunk/; revision=14269
Other nodes will never be created by the tree (sort of auto pruning of the tree).
While this greatly spped up the processing performance of ethereal, it makes it "dangerous" for apps that try to walk the tree directly.
rtp_analysis did not specify the fields "rtp.version" nor " rtp.ssrc" when dissecting the current packet and as such these fields were no longer part of the tree.
This surprised rtp_analysis and a coredump resulted.
This change will add the field that we walkt the tree to find to the filter string so that they will be there.
svn path=/trunk/; revision=14200
-always show descriptive string in combo box
-correct the initialization, so cancelling the option dialog won't make trouble
svn path=/trunk/; revision=14144
ask for unsaved file when really starting the capture, not already when showing the options dialog,
use the start capture icon in the capture options dialog (instead of simply Ok)
svn path=/trunk/; revision=14142
-show the current capture file size, if capturing in real time mode.
-move the packet "Drops" count (if available) from file to packets statusbar part
svn path=/trunk/; revision=14130
sure we're not referencing a fid when we think we're referencing an
smb_nt_transact_info_t pointer. (A fuzzed capture I have triggers
this behavior).
svn path=/trunk/; revision=14107
add two toolbar toggle buttons
add icons to various menu items
create new Statistics telephony group and put telephony and alike protocols in it
svn path=/trunk/; revision=14098
add "new" capture options feature, which will act like old capture start, and change capture start option (for immediately capture)
rename Capture/Clear to Capture/Restart
svn path=/trunk/; revision=14083
add a new feature to clear the currently captured packets and restart the capture with the previous parameters
various code cleanup and minor bugfixes
Win32: use millisecond resolution in capture_loop, to smooth screen update a bit (500ms instead of 1000ms)
svn path=/trunk/; revision=14059
If this is used together with an option where input files changes too fast (e.g. new file every second), capturing will be (hopefully) stopped.
I've replaced the former capture pipe message format into a somewhat more general format to remove a lot of confusion.
svn path=/trunk/; revision=14054
display filename in statusbar while capturing
print_usage banner fixed
cf_cb_live_capture_prepare no longer needed
rename sync_pipe_do_capture -> sync_pipe_start
bugfix: sync_pipe_input_wait_for_start replaced by former implementation
fix cleanup of old file in capture_input_new_file
fix a tempfile detection bug (named file showed up as tempfile after capture)
svn path=/trunk/; revision=14053
optimization for COLUMNS to make ethereal faster when filtering
optimization to make the slow find_protocol_by_id() fast.
(idea from Didier, implementation modified by me to be less intrusive)
svn path=/trunk/; revision=14026
it's used to register a callback for a tap listener invoked if the
specified command line argument is specified to the "-z" flag.
Move it, along with routines to:
look up a "-z" argument in the table constructed by
"register_tap_listener_cmd_arg()" and either save the full
argument to "-z" and the corresponding listener if it's found or
return a failure indication if it isn't;
list the available tap listeners;
call the "init" routines for the tap listeners saved in the
table above;
and have Ethereal and Tethereal use those routines.
svn path=/trunk/; revision=13993
Find attached a patch for SDP sessions to:
- Dissect Dynamic payload types in RTP packets
- Add the dynamic payload type description in RTP packets
- Add RTP dynamic payload types description in the Voip Calls Graph, in the RTP and SDP.
svn path=/trunk/; revision=13935
"gtk_style_copy()" has a reference count of 1; release the reference
when we're finished setting other widgets' styles to it.
svn path=/trunk/; revision=13890
when formatting numerical values for CSV lists, save the locale
before formatting, set the locale to the "C" locale, and then
restore the locale, so that numbers are always formatted with
"." as the decimal point;
add to the RTP streams window a Copy button that copies all data
from the CList to the clipboard as CSV.
svn path=/trunk/; revision=13842
left uninitialized successive copies of the stats tree.
Split the stats_tree data in two different structs one for data that's
always needed and it's not going to change at every run and another
for each run of the tap.
svn path=/trunk/; revision=13816
- Fix a problem when pressing a key when the "Graph" is displayed
without any frame selected.
- Add support for RTP Payload changes. Now the graph will show any
change in the RTP payload type. This is useful for example to show DTMF
2833 in a call.
-This line, and those below, will be ignored--
M gtk/graph_analysis.c
M gtk/voip_calls.c
M gtk/voip_calls.h
svn path=/trunk/; revision=13651
- Correct the order of the calls in the VoIP Calls dialog when ordering by time fields
- Prevent an assertion when ordering on the last columns
svn path=/trunk/; revision=13649
- As capture.h is empty without libpcap defined, only include it in that
case and don't protect the file internally against libpcap any more.
svn path=/trunk/; revision=13648
it serves the same purpose as the register routine in a built-in
dissector, and don't require all dissectors to have one, as they might
just be taps.
Get rid of the stats tree's init routine, as it's just a tap, and as it
doesn't do anything.
Update the idl2eth Python script to generate plugins with register routines.
svn path=/trunk/; revision=13644
menu.c:1841:1: warning: C++ style comments are not allowed in ISO C90
menu.c:1841:1: warning: (this will be reported only once per input file)
(just removed it)
svn path=/trunk/; revision=13627
../capture.h:115: warning: struct pcap_stat declared inside parameter list
../capture.h:115: warning: its scope is only this definition or declaration,
which is probably not what you want
../capture.h:125: warning: struct pcap_stat declared inside parameter list
svn path=/trunk/; revision=13626
to determine forward and reverse directions. This fixes a capture I
have which has the same SSRC in the forward and reverse streams.
svn path=/trunk/; revision=13599
Avoid adding to a call non ISUP mtp3 packets towards the same destination as a copy of the last ISUP packet towards that dpc.
svn path=/trunk/; revision=13576
- Name resolution support for the RTP Stream Analysis functionality
- fix a crash when trying to analyze with no stream selected.
svn path=/trunk/; revision=13572
patch to the voip calls facility to:
- Add a horizontal scrollbar in the "Graph" to scroll the "comments"
- Fix a "state" bug in H323 and SIP calls
- Fix a bug that can make the "graph" to crash, and also clean up the "address" when the window is close
svn path=/trunk/; revision=13565
add infrastructure for them, and display the plugin type (which could be
both dissector *and* tap) in the list of plugins.
svn path=/trunk/; revision=13543
- Avoid creating a copy of every branch at reinitialization
this used to cause some GTK warnings and a leakage of tree nodes
- propperly check the optarg to avoid getting junk in the filter text
this caused a crash
svn path=/trunk/; revision=13534
- from the "RTP streams" dialog, pressing 'Analyze' with no stream selected
would throw up an 'invalid filter' error. This patch avoids anything if no
steam(s) are selected.
svn path=/trunk/; revision=13529
- change the tap init_string to %s,tree instead of %s,stat
- change the registration key (it used to be tapname, that disallowed to register more than one tap per protocol)
- add a "pivot" node for convenience
svn path=/trunk/; revision=13502
voip_calls_dlg.c
Change the "prepare filter" function to be protocol independent. Now it uses the
"frame_num"s from the Graph structure to create the filter. This also add support
to MGCP and H323 LRQ/LCF filters that were not supported before.
graph_analysis.c:
Change the mouse scroll wheel implementation to make a 3 line step change instead of 1 line.
svn path=/trunk/; revision=13489
changed the behaviour of get_addr_name:
- resolve to a name if the address supports it
- call address_to_str if it does not, but the address is valid
- return "NONE" if it is AT_NONE
svn path=/trunk/; revision=13463
- fix the thinks I broken removing warnings in the last commit
other than that I removed calls to glib2 that broke
compilation on solaris' buiddbot
svn path=/trunk/; revision=13461
- boolean does not exists in *nix change them to g_boolean
- removed some warnings about uninitialized variables
- mgcp_info->hasDigitMap is a pointer to a boolean, dereference it
svn path=/trunk/; revision=13456
there are still problems at reinit (gtk2 node->pr warns about an iterator not been OK)
set up propperties of the given files
svn path=/trunk/; revision=13448
file name argument; if the pointed-to pointer is null, it opens a
temporary file, and sets that pointer to a mallocated copy of the
pathname of the temporary file. It no longer needs a file descriptor as
an argument.
svn path=/trunk/; revision=13419
so if "wtap_dump_fdopen()" succeeds (as a side-effect of calling
"wtap_dump_close()"), even if "cf_merge_fails()" after that, so it
should do so if it fails.
That means we don't need to close it in the callers of "cf_merge_files()".
svn path=/trunk/; revision=13407
files. Do this with GENERATED_HEADER_FILES, GENERATED_C_FILES, and
GENERATED_FILES macros in Makefile.common files, along the lines of what
wiretap/Makefile.common has.
Clean up "*~" files with "make clean" rather than only "make distclean"
in some additional places.
Add "maintainer-clean" rules to the Makefile.nmake files, paralelling
the ones in the automake-generated Makefile.in files, using the
GENERATED_FILES macros from Makefile.common files. In some cases, move
the cleanup of files from "make distclean" to "make maintainer-clean",
and in other cases, put in a comment indicating why we're not doing that
(because some files that are distributed in the source tarballs, namely
Flex output, were built with a UN*X Flex and won't compile on Windows,
so we get rid of them with "make distclean" so you can clean up stuff
that *has* to be re-generated for Windows).
Clean up some *CLEANFILES definitions - get rid of ones that no longer
apply as files were moved or that add to the definition a name that's
already there.
svn path=/trunk/; revision=13402
object code for libethereal.dll isn't generated by the
makefile in /trunk.
Having no code in /trunk linked into libethereal.dll
anymore, the definition of the macro _NEED_VAR_IMPORT_
can be moved from various source files in /trunk to /trunk/Makefile.nmake .
So do that, too.
svn path=/trunk/; revision=13389
instead of already invoking cf_cb_live_capture_started in capture.c, I've introduced the new event cf_cb_live_capture_prepare which only has to set the main windows title and nothing more.
svn path=/trunk/; revision=13355
from Alejandro Vaquero:
patch for "Voip analysis" to get the LRQ/LCF/LRJ messages included in the H323 calls for Gatekeeper to Gatekeeper configurations
svn path=/trunk/; revision=13347
Find attached a patch for "Voip analysis" to get the LRQ/LCF/LRJ messages included in the H323 calls for Gatekeeper to Gatekeeper configurations
svn path=/trunk/; revision=13336
to the "start live capture" callback, and call that from "do_capture()".
When opening a capture file, don't pop up the "What do you want to do?"
pane when closing any existing file you have open, as we're just going
to put the regular view up right after that.
svn path=/trunk/; revision=13332
I've implemented a very simple callback mechanism which provides exactly this. I've tried GHook from GLib before, but this doesn't seem to be the right thing, as it's too inflexible for the purpose here.
So I've implemented a callback function in main.c which receives all "events" and spreads them to menu, statusbar and itself.
I would see this implementation as a prototype which may need improvements. Please comment the changes.
svn path=/trunk/; revision=13330
"main_set_for_capture_file()"; it should only deal with menus, not
anything else - and it gets called while the menus are being set up,
which is before the main window has been completely created, so
"main_widgets_show_or_hide()", which is called by
"main_set_for_capture_file()", gets errors trying to show or hide
widgets the pointers to which are null.
svn path=/trunk/; revision=13328
move another two capture related fields (iface and cfilter) from cfile to capture_opts
also move the handling of capture related command line options from main.c to capture.c, that way a future privilege seperated capture program can use the same code to parse it's command line than Ethereal.
It might be even possible to share this parser code even with Tethereal, didn't took a closer look at this.
svn path=/trunk/; revision=13320
Make "reset()" static (it's not used outside "sctp_stat.c"), and fix its
prototype to match what's expected for a reset routine passed to
"register_tap_listener()". Similarly, fix the prototypes of other
routines passed to "register_tap_listener()", and get rid of the casts
of pointers to those functions to "void *".
Fix some declarations in "sctp_stat.h" to have function prototypes.
svn path=/trunk/; revision=13319
split drag and drop support out of main.c into new file drag_and_drop.c, to reduce the size of main.c a bit.
Hopefully this won't break unix builds because of missing #include's, I will keep an eye on the buildbot
svn path=/trunk/; revision=13308
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