From Vincenzo Condoleo via bug 3724:
authorGerald Combs <gerald@wireshark.org>
Fri, 23 Apr 2010 21:21:11 +0000 (21:21 -0000)
committerGerald Combs <gerald@wireshark.org>
Fri, 23 Apr 2010 21:21:11 +0000 (21:21 -0000)
Update the compare stats documentation.

From me: Add a screen shot and editorial updates. Change some lables to
better match the IP and TCP dissectors.

svn path=/trunk/; revision=32545

docbook/user-guide.xml
docbook/wsug_graphics/ws-stats-compare.png [new file with mode: 0755]
docbook/wsug_src/WSUG_chapter_statistics.xml
gtk/compare_stat.c

index 0c09cc639943bb8e5cc4322603aabd41322581ee..348a100d8670e07af444d67c5eece960d695d61f 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" 
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
 
 <!-- $Id$ -->
@@ -24,7 +24,7 @@ BIOGRAPHICAL SECTION
   <!ENTITY AuthorFirstName3 "Ed">
   <!ENTITY AuthorOtherName3 "">
   <!ENTITY AuthorSurname3 "Warnicke">
-  
+
   <!ENTITY AuthorFullName4 "Luis E. Garcia Ontanon">
   <!ENTITY AuthorFirstName4 "Luis">
   <!ENTITY AuthorOtherName4 "Enrique">
@@ -135,7 +135,7 @@ FILE SECTION
 <!-- These refer to graphics files and figures contained in the document -->
   <!-- -->
   <!ENTITY WiresharkLogo SYSTEM "./wsug_graphics/ws-logo.png" NDATA PNG>
-  
+
   <!-- 1st Chapter -->
   <!ENTITY WiresharkMain1 SYSTEM "./wsug_graphics/ws-main.png" NDATA PNG>
 
@@ -158,7 +158,7 @@ FILE SECTION
   <!ENTITY WiresharkStatusbarFilter SYSTEM "./wsug_graphics/ws-statusbar-filter.png" NDATA PNG>
   <!ENTITY WiresharkPacketSelected1 SYSTEM "./wsug_graphics/ws-packet-selected.png" NDATA PNG>
   <!ENTITY WiresharkPacketSepView SYSTEM "./wsug_graphics/ws-packet-sep-win.png" NDATA PNG>
-  <!ENTITY WiresharkFilterTCP SYSTEM "./wsug_graphics/ws-display-filter-tcp.png" NDATA PNG>  
+  <!ENTITY WiresharkFilterTCP SYSTEM "./wsug_graphics/ws-display-filter-tcp.png" NDATA PNG>
   <!ENTITY WiresharkColoringRulesDialog SYSTEM "./wsug_graphics/ws-coloring-rules-dialog.png" NDATA PNG>
   <!ENTITY WiresharkColoringFields SYSTEM "./wsug_graphics/ws-coloring-fields.png" NDATA PNG>
   <!ENTITY WiresharkEditColorDialog SYSTEM "./wsug_graphics/ws-edit-color-rule-dialog.png" NDATA PNG>
@@ -167,8 +167,8 @@ FILE SECTION
   <!ENTITY WiresharkExpertInfoDialog SYSTEM "./wsug_graphics/ws-expert-infos.png" NDATA PNG>
   <!ENTITY WiresharkChooseColorDialog SYSTEM "./wsug_graphics/ws-choose-color-rule.png" NDATA PNG>
   <!ENTITY WiresharkFollowStream SYSTEM "./wsug_graphics/ws-follow-stream.png" NDATA PNG>
-  <!ENTITY WiresharkFindPacket SYSTEM "./wsug_graphics/ws-find-packet.png" NDATA PNG>  
-  <!ENTITY WiresharkGoToPacket SYSTEM "./wsug_graphics/ws-goto-packet.png" NDATA PNG>  
+  <!ENTITY WiresharkFindPacket SYSTEM "./wsug_graphics/ws-find-packet.png" NDATA PNG>
+  <!ENTITY WiresharkGoToPacket SYSTEM "./wsug_graphics/ws-goto-packet.png" NDATA PNG>
   <!ENTITY WiresharkGUIPreferences SYSTEM "./wsug_graphics/ws-gui-preferences.png" NDATA PNG>
   <!ENTITY WiresharkGUIInterfaceOptions SYSTEM "./wsug_graphics/ws-gui-interface-options.png" NDATA PNG>
   <!ENTITY WiresharkGUILayoutPreferences SYSTEM "./wsug_graphics/ws-gui-layout-preferences.png" NDATA PNG>
@@ -240,6 +240,7 @@ FILE SECTION
   <!ENTITY WiresharkStatsEndpoints SYSTEM "./wsug_graphics/ws-stats-endpoints.png" NDATA PNG>
   <!ENTITY WiresharkStatsConversations SYSTEM "./wsug_graphics/ws-stats-conversations.png" NDATA PNG>
   <!ENTITY WiresharkStatsIOGraphs SYSTEM "./wsug_graphics/ws-stats-iographs.png" NDATA PNG>
+  <!ENTITY WiresharkStatsCompare SYSTEM "./wsug_graphics/ws-stats-compare.png" NDATA PNG>
   <!ENTITY WiresharkStatsWLANTraffic SYSTEM "./wsug_graphics/ws-stats-wlan-traffic.png" NDATA PNG>
   <!ENTITY WiresharkStatsLTEMACTraffic SYSTEM "./wsug_graphics/ws-stats-lte-mac-traffic.png" NDATA PNG>
   <!ENTITY WiresharkStatsLTERLCTraffic SYSTEM "./wsug_graphics/ws-stats-lte-rlc-traffic.png" NDATA PNG>
@@ -261,13 +262,13 @@ FILE SECTION
   <!ENTITY WiresharkCaptureOptionsRemoteSettingsDialog SYSTEM "./wsug_graphics/ws-capture-options-remote-settings.png" NDATA PNG>
 
   <!-- Fifth Chapter -->
-  <!ENTITY WiresharkOpenDialog20 SYSTEM "./wsug_graphics/ws-open-gtk20.png" NDATA PNG> 
+  <!ENTITY WiresharkOpenDialog20 SYSTEM "./wsug_graphics/ws-open-gtk20.png" NDATA PNG>
   <!ENTITY WiresharkSaveAsDialog20 SYSTEM "./wsug_graphics/ws-save-as-gtk20.png" NDATA PNG>
   <!ENTITY WiresharkMergeDialog20 SYSTEM "./wsug_graphics/ws-merge-gtk20.png" NDATA PNG>
-  <!ENTITY WiresharkOpenDialog24 SYSTEM "./wsug_graphics/ws-open-gtk24.png" NDATA PNG> 
+  <!ENTITY WiresharkOpenDialog24 SYSTEM "./wsug_graphics/ws-open-gtk24.png" NDATA PNG>
   <!ENTITY WiresharkSaveAsDialog24 SYSTEM "./wsug_graphics/ws-save-as-gtk24.png" NDATA PNG>
   <!ENTITY WiresharkMergeDialog24 SYSTEM "./wsug_graphics/ws-merge-gtk24.png" NDATA PNG>
-  <!ENTITY WiresharkOpenDialogWin32 SYSTEM "./wsug_graphics/ws-open-win32.png" NDATA PNG> 
+  <!ENTITY WiresharkOpenDialogWin32 SYSTEM "./wsug_graphics/ws-open-win32.png" NDATA PNG>
   <!ENTITY WiresharkSaveAsDialogWin32 SYSTEM "./wsug_graphics/ws-save-as-win32.png" NDATA PNG>
   <!ENTITY WiresharkMergeDialogWin32 SYSTEM "./wsug_graphics/ws-merge-win32.png" NDATA PNG>
   <!ENTITY WiresharkFileSetDialog SYSTEM "./wsug_graphics/ws-file-set-dialog.png" NDATA PNG>
@@ -343,18 +344,18 @@ WSLua Reference Manual
   &ChapterCustomize;
 
   &WsLuaRm;
-  
+
   &AppFiles;
   &AppProtocols;
-  &AppMessages;  
+  &AppMessages;
   &AppTools;
-  
+
   &AppGPL;
 
   <!--  Removed, as these chapters must be reworked
   &Glossary;
   &Index;
   &AppHowItWorks;
-  &ChapterTroubleshoot;   
+  &ChapterTroubleshoot;
   -->
 </book>
diff --git a/docbook/wsug_graphics/ws-stats-compare.png b/docbook/wsug_graphics/ws-stats-compare.png
new file mode 100755 (executable)
index 0000000..462ca9c
Binary files /dev/null and b/docbook/wsug_graphics/ws-stats-compare.png differ
index 3fa2ed79cc7fe40f2122fe5a3ff65075bc667dee..f2b9fb3d05e513dd945d22aff97aede67cf03d52 100644 (file)
     </para>
   </section>
   </section>
-<!--
   <section id="ChStatCompareCaptureFiles">
     <title>Compare two capture files</title>
     <para>
       Compare two capture files.
     </para>
+
+    <para>
+      This feature works best when you have merged two capture files
+      chronologically, one from each side of a client/server connection.
+    </para>
+
+    <para>
+      The merged capture data is checked for missing packets. If a matching
+      connection is found it is checked for:
+        <itemizedlist>
+            <listitem>
+            <para>
+             IP header checksums
+            </para>
+            </listitem>
+            <listitem>
+            <para>
+             Excessive delay (defined by the "Time variance" setting)
+            </para>
+            </listitem>
+            <listitem>
+            <para>
+             Packet order
+            </para>
+            </listitem>
+        </itemizedlist>
+    </para>
+
+    <figure><title>The "Compare" window</title>
+     <graphic entityref="WiresharkStatsCompare" format="PNG"/>
+    </figure>
+
+    <para>
+        You can configure the following:
+        <itemizedlist>
+        <listitem>
+        <para>
+            <command>Start compare:</command> Start comparing when this many
+            IP IDs are matched. A zero value starts comparing immediately.
+        </para>
+        </listitem>
+        <listitem>
+        <para>
+            <command>Stop compare:</command> Stop comparing when we can no longer
+            match this many IP IDs. Zero always compares.
+        </para>
+        </listitem>
+        <listitem>
+        <para>
+            <command>Endpoint distinction:</command> Use MAC addresses or IP
+            time-to-live values to determine connection enpoints.
+        </para>
+        </listitem>
+        <listitem>
+        <para>
+            <command>Check order:</command> Check for the same IP ID in the
+            previous packet at each end.
+        </para>
+        </listitem>
+        <listitem>
+        <para>
+            <command>Time variance:</command> Trigger an error if the packet
+            arrives this many milliseconds after the average delay.
+        </para>
+        </listitem>
+        <listitem>
+        <para>
+            <command>Filter:</command> Limit comparison to packets that match
+            this display filter.
+        </para>
+        </listitem>
+        </itemizedlist>
+    </para>
+
+    <para>
+        The info column contains new numbering so the same packets are parallel.
+    </para>
+    <para>
+        The color filtering differentiate the two files from each other. A
+        “zebra” effect is create if the Info column is sorted.
+    </para>
+
+    <tip><title>Tip!</title>
+    <para>
+        If you click on an item in the error list its corresponding packet will
+        be selected in the main window.
+    </para>
+    </tip>
+
+
   </section>
--->
   <section id="ChStatWLANTraffic">
     <title>WLAN Traffic Statistics</title>
     <para>
index 4a4fb77f2b2a2a6eba951fffd174314afad64b59..16bff05bcfaa20648d8bb653cfed07635a283bb3 100644 (file)
@@ -407,7 +407,7 @@ call_foreach_merge_settings(gpointer value, gpointer arg)
        if((fInfo->num==tot_packet_amount)&&(cs->stop_packet_nr_first==G_MAXINT32)&&(cs->start_packet_nr_first!=G_MAXINT32)){
                fInfoTemp=se_tree_lookup32(cs->packet_tree, cs->start_packet_nr_first);
                if(fInfoTemp==NULL){
-                       fprintf(stderr,"ERROR: start number not set correctly\n");
+                       fprintf(stderr,"ERROR: Incorrect start number\n");
                }
                if(fInfoTemp && fmod(fInfoTemp->zebra_time.nsecs, 2)){
                        /*first file*/
@@ -446,7 +446,7 @@ call_foreach_merge_settings(gpointer value, gpointer arg)
        /* no start found */
        if(fInfo->num==tot_packet_amount&&compare_start!=0&&compare_stop!=0){
                if(cs->start_packet_nr_first==G_MAXINT32){
-                       report_failure("Start point couldn't be set, choose a lower compare start");
+                       report_failure("Start point couldn't be set. Please choose a lower start number.");
                }
        }
 
@@ -485,7 +485,7 @@ call_foreach_print_ip_tree(gpointer value, gpointer user_data)
        if(show_it){
                if((fInfo->fg->count<MERGED_FILES)){
                        gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, NULL);
-                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Packet lost", COUNT, fInfo->fg->count, DELTA, 0.0, -1);
+                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Lost packet", COUNT, fInfo->fg->count, DELTA, 0.0, -1);
                }
 
                if(fInfo->fg->count > MERGED_FILES){
@@ -493,31 +493,31 @@ call_foreach_print_ip_tree(gpointer value, gpointer user_data)
                        gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "More than two packets", COUNT, fInfo->fg->count, DELTA, 0.0, -1);
                        if(fInfo->fg->cksum == WRONG_CHKSUM) {
                                gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, &cs->iter);
-                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Checksum error over IP header", COUNT, fInfo->fg->count, DELTA, 0.0, -1);
+                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "IP header checksum incorrect", COUNT, fInfo->fg->count, DELTA, 0.0, -1);
                        }
                }
                if(fInfo->fg->count == MERGED_FILES){
                        if(fInfo->fg->cksum == WRONG_CHKSUM) {
                                gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, NULL);
-                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Checksum error over IP header", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "IP header checksum incorrect", COUNT, fInfo->fg->count, DELTA, delta, -1);
                                if(((delta < (average-cs->stats.variance)) || (delta > (average+cs->stats.variance))) && (delta > 0.0) && (cs->stats.variance!=0)){
                                        gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, &cs->iter);
-                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Not arrived in time", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Late arrival", COUNT, fInfo->fg->count, DELTA, delta, -1);
                                }
                                if((nstime_cmp(&fInfo->fg->predecessor_time, &fInfo->zebra_time)>0||nstime_cmp(&fInfo->fg->partner->fg->predecessor_time, &fInfo->fg->partner->zebra_time)>0) && (fInfo->zebra_time.nsecs!=MERGED_FILES) && ON_method){
                                        gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, &cs->iter);
-                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Not correct order", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Out of order", COUNT, fInfo->fg->count, DELTA, delta, -1);
                                }
                        } else if(((delta < (average-cs->stats.variance)) || (delta > (average+cs->stats.variance))) && (delta > 0.0) && (cs->stats.variance!=0)) {
                                gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, NULL);
-                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Not arrived in time", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Late arrival", COUNT, fInfo->fg->count, DELTA, delta, -1);
                                if((nstime_cmp(&fInfo->fg->predecessor_time, &fInfo->zebra_time)>0||nstime_cmp(&fInfo->fg->partner->fg->predecessor_time, &fInfo->fg->partner->zebra_time)>0) && fInfo->zebra_time.nsecs != MERGED_FILES && ON_method){
                                        gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, &cs->iter);
-                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Not correct order", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                                       gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->child, IP_ID, fInfo->id, PROBLEM, "Out of order", COUNT, fInfo->fg->count, DELTA, delta, -1);
                                }
                        } else if((nstime_cmp(&fInfo->fg->predecessor_time, &fInfo->zebra_time)>0||nstime_cmp(&fInfo->fg->partner->fg->predecessor_time, &fInfo->fg->partner->zebra_time)>0) && fInfo->zebra_time.nsecs != MERGED_FILES && ON_method){
                                gtk_tree_store_append(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, NULL);
-                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Not correct order", COUNT, fInfo->fg->count, DELTA, delta, -1);
+                               gtk_tree_store_set(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(cs->treeview))), &cs->iter, IP_ID, fInfo->id, PROBLEM, "Out of order", COUNT, fInfo->fg->count, DELTA, delta, -1);
                        }
                }
        }
@@ -686,7 +686,7 @@ setup_tree_view(GtkWidget *treeview)
        /* Create a new GtkCellRendererText, add it to the tree view column and
         * append the column to the tree view. */
        renderer=gtk_cell_renderer_text_new ();
-       column=gtk_tree_view_column_new_with_attributes("IP Id", renderer, "text", IP_ID, NULL);
+       column=gtk_tree_view_column_new_with_attributes("IP ID", renderer, "text", IP_ID, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
        renderer=gtk_cell_renderer_text_new ();
        column=gtk_tree_view_column_new_with_attributes("Problem", renderer, "text", PROBLEM, NULL);
@@ -953,7 +953,7 @@ gtk_comparestat_cb(GtkWidget *w _U_, gpointer d _U_)
 
        /* radio label */
        gtk_container_set_border_width(GTK_CONTAINER(differ_box), 1);
-       differ_label=gtk_label_new("File distinction:");
+       differ_label=gtk_label_new("Endpoint distinction:");
        gtk_box_pack_start(GTK_BOX(differ_box), differ_label, FALSE, FALSE, 0);
        gtk_widget_show(differ_label);
 
@@ -978,8 +978,8 @@ gtk_comparestat_cb(GtkWidget *w _U_, gpointer d _U_)
        gtk_widget_show(order_label);
 
        /* create radio buttons */
-       radio_ON=gtk_radio_button_new_with_label (NULL, "ON");
-       radio_OFF=gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(radio_ON), "OFF");
+       radio_ON=gtk_radio_button_new_with_label (NULL, "On");
+       radio_OFF=gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(radio_ON), "Off");
        gtk_box_pack_start(GTK_BOX(order_box), radio_ON, TRUE, TRUE, 0);
        gtk_box_pack_start(GTK_BOX(order_box), radio_OFF, TRUE, TRUE, 0);
        gtk_widget_show(radio_ON);