Add monitor mode support to TShark.
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 7 May 2010 01:46:38 +0000 (01:46 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Fri, 7 May 2010 01:46:38 +0000 (01:46 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@32704 f5534014-38df-0310-8fa8-9805f1628bb7

capture_sync.c
doc/tshark.pod
tshark.c

index ab14c985586f39eeb71875d7fc6ac0577bdb0300..6fe6fd1fc968996869668a7837ae6f85c8205b14 100644 (file)
@@ -357,6 +357,10 @@ sync_pipe_start(capture_options *capture_opts) {
 
     if (!capture_opts->promisc_mode)
       argv = sync_pipe_add_arg(argv, &argc, "-p");
+#ifdef HAVE_PCAP_CREATE
+    if (capture_opts->monitor_mode)
+      argv = sync_pipe_add_arg(argv, &argc, "-I");
+#endif
     if (capture_opts->use_pcapng)
       argv = sync_pipe_add_arg(argv, &argc, "-n");
 #ifdef HAVE_PCAP_REMOTE
index df326a14c664477b13cbdb049ed88dd6207b992e..449be833482d842338a17189d820a781bc03ddd9 100644 (file)
@@ -19,6 +19,7 @@ S<[ B<-f> E<lt>capture filterE<gt> ]>
 S<[ B<-F> E<lt>file formatE<gt> ]>
 S<[ B<-h> ]>
 S<[ B<-i> E<lt>capture interfaceE<gt>|- ]>
+S<[ B<-I> ]>
 S<[ B<-K> E<lt>keytabE<gt> ]>
 S<[ B<-l> ]>
 S<[ B<-L> ]>
@@ -302,6 +303,18 @@ standard libpcap format.
 Note: the Win32 version of B<TShark> doesn't support capturing from
 pipes!
 
+=item -I
+
+Put the interface in "monitor mode"; this is supported only on IEEE
+802.11 Wi-Fi interfaces, and supported only on some operating systems.
+
+Note that in monitor mode the adapter might disassociate from the
+network with which it's associated, so that you will not be able to use
+any wireless networks with that adapter.  This could prevent accessing
+files on a network server, or resolving host names or network addresses,
+if you are capturing in monitor mode and are not connected to another
+network with another adapter.
+
 =item -K  E<lt>keytabE<gt>
 
 Load kerberos crypto keys from the specified keytab file.
index 6ad1f9def5436ae0419aeca0b196b5ff886660ff..ffc2e2c1db450078624ca769d2168ac4fd470e75 100644 (file)
--- a/tshark.c
+++ b/tshark.c
@@ -232,6 +232,9 @@ print_usage(gboolean print_ver)
   fprintf(output, "  -f <capture filter>      packet filter in libpcap filter syntax\n");
   fprintf(output, "  -s <snaplen>             packet snapshot length (def: 65535)\n");
   fprintf(output, "  -p                       don't capture in promiscuous mode\n");
+#ifdef HAVE_PCAP_CREATE
+  fprintf(output, "  -I                       capture in monitor mode, if available\n");
+#endif
 #if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
   fprintf(output, "  -B <buffer size>         size of kernel buffer (def: platform-dependent)\n");
 #endif
@@ -767,18 +770,25 @@ main(int argc, char *argv[])
   GLogLevelFlags       log_flags;
   int                  optind_initial;
 
-#define OPTSTRING_INIT "a:b:c:C:d:De:E:f:F:G:hi:K:lLnN:o:pPqr:R:s:St:T:u:vVw:xX:y:z:"
 #ifdef HAVE_LIBPCAP
 #if defined(_WIN32) || defined(HAVE_PCAP_CREATE)
-#define OPTSTRING_EXTRA "B:"
+#define OPTSTRING_B "B:"
 #else
-#define OPTSTRING_EXTRA ""
+#define OPTSTRING_B ""
 #endif  /* _WIN32 or HAVE_PCAP_CREATE */
-#else
-#define OPTSTRING_EXTRA ""
+#else /* HAVE_LIBPCAP */
+#define OPTSTRING_B ""
 #endif  /* HAVE_LIBPCAP */
 
-  static const char    optstring[] = OPTSTRING_INIT OPTSTRING_EXTRA;
+#ifdef HAVE_PCAP_CREATE
+#define OPTSTRING_I "I"
+#else
+#define OPTSTRING_I ""
+#endif
+
+#define OPTSTRING "a:b:" OPTSTRING_B "c:C:d:De:E:f:F:G:hi:" OPTSTRING_I "K:lLnN:o:pPqr:R:s:St:T:u:vVw:xX:y:z:"
+
+  static const char    optstring[] = OPTSTRING;
 
   /*
    * Get credential information for later use.
@@ -1001,6 +1011,9 @@ main(int argc, char *argv[])
       case 'f':        /* capture filter */
       case 'i':        /* Use interface x */
       case 'p':        /* Don't capture in promiscuous mode */
+#ifdef HAVE_PCAP_CREATE
+      case 'I':        /* Capture in monitor mode, if available */
+#endif
       case 's':        /* Set the snapshot (capture) length */
       case 'w':        /* Write to capture file x */
       case 'y':        /* Set the pcap data link type */