X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/87b129ad3a96a9a29d3bd36a945f69ddf4dad911..6df4852ec38a5f7342f35e8d62918f33ace103f8:/tcpdump.c diff --git a/tcpdump.c b/tcpdump.c index 7f6e0780..8ea49251 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -142,9 +142,9 @@ The Regents of the University of California. All rights reserved.\n"; #define PATH_MAX 1024 #endif -#ifdef SIGINFO +#if defined(SIGINFO) #define SIGNAL_REQ_INFO SIGINFO -#elif SIGUSR1 +#elif defined(SIGUSR1) #define SIGNAL_REQ_INFO SIGUSR1 #endif @@ -233,11 +233,11 @@ static void dump_packet(u_char *, const struct pcap_pkthdr *, const u_char *); static void droproot(const char *, const char *); #ifdef SIGNAL_REQ_INFO -void requestinfo(int); +static void requestinfo(int); #endif #ifdef SIGNAL_FLUSH_PCAP -void flushpcap(int); +static void flushpcap(int); #endif #ifdef _WIN32 @@ -259,6 +259,9 @@ static const struct tok status_flags[] = { { PCAP_IF_RUNNING, "Running" }, #endif { PCAP_IF_LOOPBACK, "Loopback" }, +#ifdef PCAP_IF_WIRELESS + { PCAP_IF_WIRELESS, "Wireless" }, +#endif { 0, NULL } }; #endif @@ -477,8 +480,50 @@ show_devices_and_exit(void) printf("%d.%s", i+1, dev->name); if (dev->description != NULL) printf(" (%s)", dev->description); - if (dev->flags != 0) - printf(" [%s]", bittok2str(status_flags, "none", dev->flags)); + if (dev->flags != 0) { + printf(" ["); + printf("%s", bittok2str(status_flags, "none", dev->flags)); +#ifdef PCAP_IF_WIRELESS + if (dev->flags & PCAP_IF_WIRELESS) { + switch (dev->flags & PCAP_IF_CONNECTION_STATUS) { + + case PCAP_IF_CONNECTION_STATUS_UNKNOWN: + printf(", Association status unknown"); + break; + + case PCAP_IF_CONNECTION_STATUS_CONNECTED: + printf(", Associated"); + break; + + case PCAP_IF_CONNECTION_STATUS_DISCONNECTED: + printf(", Not associated"); + break; + + case PCAP_IF_CONNECTION_STATUS_NOT_APPLICABLE: + break; + } + } else { + switch (dev->flags & PCAP_IF_CONNECTION_STATUS) { + + case PCAP_IF_CONNECTION_STATUS_UNKNOWN: + printf(", Connection status unknown"); + break; + + case PCAP_IF_CONNECTION_STATUS_CONNECTED: + printf(", Connected"); + break; + + case PCAP_IF_CONNECTION_STATUS_DISCONNECTED: + printf(", Disconnected"); + break; + + case PCAP_IF_CONNECTION_STATUS_NOT_APPLICABLE: + break; + } + } +#endif + printf("]"); + } printf("\n"); } pcap_freealldevs(devlist); @@ -2910,7 +2955,8 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) } #ifdef SIGNAL_REQ_INFO -void requestinfo(int signo _U_) +static void +requestinfo(int signo _U_) { if (infodelay) ++infoprint; @@ -2920,7 +2966,8 @@ void requestinfo(int signo _U_) #endif #ifdef SIGNAL_FLUSH_PCAP -void flushpcap(int signo _U_) +static void +flushpcap(int signo _U_) { if (pdd != NULL) pcap_dump_flush(pdd);