It's not only executable but a script as well: propset eol-style + keywords
[obnox/wireshark/wip.git] / capture_opts.c
index d8c2f859547b7f5ee6a40a871f13b7c59fad46f9..ed7339c845d065cb5e27ceac3823d0ecec098ca9 100644 (file)
@@ -3,8 +3,8 @@
  *
  * $Id$
  *
- * Ethereal - Network traffic analyzer
- * By Gerald Combs <gerald@ethereal.com>
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
  * Copyright 1998 Gerald Combs
  *
  * This program is free software; you can redistribute it and/or
@@ -52,16 +52,17 @@ void
 capture_opts_init(capture_options *capture_opts, void *cfile)
 {
   capture_opts->cf                      = cfile;            
-  capture_opts->cfilter                            = g_strdup("");     /* No capture filter string specified */
+  capture_opts->cfilter                 = g_strdup("");     /* No capture filter string specified */
   capture_opts->iface                   = NULL;             /* Default is "pick the first interface" */
 #ifdef _WIN32
   capture_opts->buffer_size             = 1;                /* 1 MB */
 #endif
   capture_opts->has_snaplen             = FALSE;
   capture_opts->snaplen                 = WTAP_MAX_PACKET_SIZE; /* snapshot length - default is
-                                                                    infinite, in effect */
+                                                                   infinite, in effect */
   capture_opts->promisc_mode            = TRUE;             /* promiscuous mode is the default */
   capture_opts->linktype                = -1;               /* the default linktype */
+  capture_opts->saving_to_file          = FALSE;
   capture_opts->save_file               = NULL;
   capture_opts->real_time_mode          = TRUE;
   capture_opts->show_info               = TRUE;
@@ -106,6 +107,7 @@ capture_opts_log(const char *log_domain, GLogLevelFlags log_level, capture_optio
     g_log(log_domain, log_level, "SnapLen         (%u): %u", capture_opts->has_snaplen, capture_opts->snaplen);
     g_log(log_domain, log_level, "Promisc            : %u", capture_opts->promisc_mode);
     g_log(log_domain, log_level, "LinkType           : %d", capture_opts->linktype);
+    g_log(log_domain, log_level, "SavingToFile       : %u", capture_opts->saving_to_file);
     g_log(log_domain, log_level, "SaveFile           : %s", (capture_opts->save_file) ? capture_opts->save_file : "");
     g_log(log_domain, log_level, "RealTimeMode       : %u", capture_opts->real_time_mode);
     g_log(log_domain, log_level, "ShowInfo           : %u", capture_opts->show_info);
@@ -190,7 +192,7 @@ get_ring_arguments(capture_options *capture_opts, const char *arg)
 
   colonp = strchr(arg, ':');
   if (colonp == NULL)
-    return TRUE;
+    return FALSE;
 
   p = colonp;
   *p++ = '\0';
@@ -223,7 +225,7 @@ get_ring_arguments(capture_options *capture_opts, const char *arg)
     capture_opts->file_duration = get_positive_int(p, "ring buffer duration");
   }
 
-  *colonp = ':';       /* put the colon back */
+  *colonp = ':';    /* put the colon back */
   return TRUE;
 }
 
@@ -242,7 +244,7 @@ capture_opts_add_iface_opt(capture_options *capture_opts, const char *optarg)
 
     /*
      * If the argument is a number, treat it as an index into the list
-     * of adapters, as printed by "tethereal -D".
+     * of adapters, as printed by "tshark -D".
      *
      * This should be OK on UNIX systems, as interfaces shouldn't have
      * names that begin with digits.  It can be useful on Windows, where
@@ -318,7 +320,7 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg,
         capture_opts->buffer_size = get_positive_int(optarg, "buffer size");
         break;
 #endif
-    case 'c':        /* Capture xxx packets */
+    case 'c':        /* Capture n packets */
         capture_opts->has_autostop_packets = TRUE;
         capture_opts->autostop_packets = get_positive_int(optarg, "packet count");
         break;
@@ -330,7 +332,7 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg,
     case 'H':        /* Hide capture info dialog box */
         capture_opts->show_info = FALSE;
         break;
-    case 'i':        /* Use interface xxx */
+    case 'i':        /* Use interface x */
         status = capture_opts_add_iface_opt(capture_opts, optarg);
         if(status != 0) {
             return status;
@@ -354,7 +356,8 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg,
     case 'S':        /* "Real-Time" mode: used for following file ala tail -f */
         capture_opts->real_time_mode = TRUE;
         break;
-    case 'w':        /* Write to capture file xxx */
+    case 'w':        /* Write to capture file x */
+        capture_opts->saving_to_file = TRUE;
 #if defined _WIN32 && (GLIB_MAJOR_VERSION > 2 || (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION >= 6))
         /* since GLib 2.6, we need to convert filenames to utf8 for Win32 */
         capture_opts->save_file = g_locale_to_utf8(optarg, -1, NULL, NULL, NULL);
@@ -363,7 +366,7 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg,
 #endif
         status = capture_opts_output_to_pipe(capture_opts->save_file, &capture_opts->output_to_pipe);
         return status;
-           break;
+        break;
     case 'y':        /* Set the pcap data link type */
 #ifdef HAVE_PCAP_DATALINK_NAME_TO_VAL
         capture_opts->linktype = linktype_name_to_val(optarg);
@@ -373,7 +376,7 @@ capture_opts_add_opt(capture_options *capture_opts, int opt, const char *optarg,
           return 1;
         }
 #else /* HAVE_PCAP_DATALINK_NAME_TO_VAL */
-        /* XXX - just treat it as a number */
+        /* we can't get the type name, just treat it as a number */
         capture_opts->linktype = get_natural_int(optarg, "data link type");
 #endif /* HAVE_PCAP_DATALINK_NAME_TO_VAL */
         break;
@@ -396,11 +399,11 @@ int capture_opts_list_link_layer_types(capture_options *capture_opts)
     lt_list = get_pcap_linktype_list(capture_opts->iface, err_str);
     if (lt_list == NULL) {
       if (err_str[0] != '\0') {
-       cmdarg_err("The list of data link types for the capture device \"%s\" could not be obtained (%s)."
-         "Please check to make sure you have sufficient permissions, and that\n"
-         "you have the proper interface or pipe specified.\n", capture_opts->iface, err_str);
+        cmdarg_err("The list of data link types for the capture device \"%s\" could not be obtained (%s)."
+         "Please check to make sure you have sufficient permissions, and that\n"
+         "you have the proper interface or pipe specified.\n", capture_opts->iface, err_str);
       } else
-       cmdarg_err("The capture device \"%s\" has no data link types.", capture_opts->iface);
+        cmdarg_err("The capture device \"%s\" has no data link types.", capture_opts->iface);
       return 2;
     }
     cmdarg_err_cont("Data link types (use option -y to set):");
@@ -409,9 +412,9 @@ int capture_opts_list_link_layer_types(capture_options *capture_opts)
       data_link_info = lt_entry->data;
       cmdarg_err_cont("  %s", data_link_info->name);
       if (data_link_info->description != NULL)
-       cmdarg_err_cont(" (%s)", data_link_info->description);
+        cmdarg_err_cont(" (%s)", data_link_info->description);
       else
-       cmdarg_err_cont(" (not supported)");
+        cmdarg_err_cont(" (not supported)");
       putchar('\n');
     }
     free_pcap_linktype_list(lt_list);
@@ -429,6 +432,11 @@ int capture_opts_list_interfaces()
     gchar       err_str[CAPTURE_PCAP_ERRBUF_SIZE];
     gchar       *cant_get_if_list_errstr;
     int         i;
+#if 0
+    GSList      *ip_addr;
+    if_addr_t   *if_addr;
+    guint8      ipv4[4];
+#endif
 
 
     if_list = get_interface_list(&err, err_str);
@@ -454,6 +462,25 @@ int capture_opts_list_interfaces()
         printf("%d. %s", i++, if_info->name);
         if (if_info->description != NULL)
             printf(" (%s)", if_info->description);
+#if 0
+        for(ip_addr = g_slist_nth(if_info->ip_addr, 0); ip_addr != NULL;
+        ip_addr = g_slist_next(ip_addr)) {
+            if_addr = ip_addr->data;
+            switch(if_addr->type) {
+            case AT_IPv4:
+                memcpy(ipv4, (void *) &if_addr->ip_addr.ip4_addr, 4);
+                printf(" %u.%u.%u.%u", ipv4[0], ipv4[1], ipv4[2], ipv4[3]);
+                break;
+            case AT_IPv6:
+                /* XXX - display the IPv6 address without using stuff from epan */
+                printf(" XXX-IPv6");
+                break;
+            default:
+                printf(" unknown address type %u", if_addr->type);
+            }
+        }
+#endif
+
         printf("\n");
     }
     free_interface_list(if_list);