summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extcap/androiddump.c395
-rw-r--r--extcap/extcap-base.h63
-rw-r--r--extcap/randpktdump.c60
-rw-r--r--extcap/sshdump.c70
4 files changed, 253 insertions, 335 deletions
diff --git a/extcap/androiddump.c b/extcap/androiddump.c
index 45f03c8d26..1bedc68165 100644
--- a/extcap/androiddump.c
+++ b/extcap/androiddump.c
@@ -23,11 +23,10 @@
*/
#include "config.h"
-#include <glib.h>
-#include <glib/gprintf.h>
+#include "extcap-base.h"
+
#include <stdio.h>
#include <stdint.h>
-#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
@@ -136,17 +135,14 @@
#define PACKET_LENGTH 65535
+#define verbose_print(...) { if (verbose) printf(__VA_ARGS__); }
+#define errmsg_print(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
+
enum {
- OPT_HELP = 1,
+ EXTCAP_BASE_OPTIONS_ENUM,
+ OPT_HELP,
OPT_VERSION,
OPT_VERBOSE,
- OPT_LIST_INTERFACES,
- OPT_LIST_DLTS,
- OPT_INTERFACE,
- OPT_CONFIG,
- OPT_CAPTURE,
- OPT_CAPTURE_FILTER,
- OPT_FIFO,
OPT_CONFIG_ADB_SERVER_IP,
OPT_CONFIG_ADB_SERVER_TCP_PORT,
OPT_CONFIG_LOGCAT_TEXT,
@@ -157,19 +153,10 @@ enum {
};
static struct option longopts[] = {
-/* Generic application options */
- { "help", no_argument, NULL, OPT_HELP},
- { "version", no_argument, NULL, OPT_VERSION},
- { "verbose", optional_argument, NULL, OPT_VERBOSE},
-/* Extcap options */
- { "extcap-interfaces", no_argument, NULL, OPT_LIST_INTERFACES},
- { "extcap-dlts", no_argument, NULL, OPT_LIST_DLTS},
- { "extcap-interface", required_argument, NULL, OPT_INTERFACE},
- { "extcap-config", no_argument, NULL, OPT_CONFIG},
- { "capture", no_argument, NULL, OPT_CAPTURE},
- { "extcap-capture-filter", required_argument, NULL, OPT_CAPTURE_FILTER},
- { "fifo", required_argument, NULL, OPT_FIFO},
-/* Interfaces options */
+ EXTCAP_BASE_OPTIONS,
+ { "help", no_argument, NULL, OPT_HELP},
+ { "version", no_argument, NULL, OPT_VERSION},
+ { "verbose", optional_argument, NULL, OPT_VERBOSE},
{ "adb-server-ip", required_argument, NULL, OPT_CONFIG_ADB_SERVER_IP},
{ "adb-server-tcp-port", required_argument, NULL, OPT_CONFIG_ADB_SERVER_TCP_PORT},
{ "logcat-text", required_argument, NULL, OPT_CONFIG_LOGCAT_TEXT},
@@ -260,16 +247,14 @@ static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
else if (encap == EXTCAP_ENCAP_ETHERNET)
encap_ext = DLT_EN10MB;
else {
- if (verbose)
- fprintf(stderr, "ERROR: Unknown encapsulation\n");
+ errmsg_print("ERROR: Unknown encapsulation");
exit(1);
}
pcap = pcap_open_dead_with_tstamp_precision(encap_ext, PACKET_LENGTH, PCAP_TSTAMP_PRECISION_NANO);
extcap_dumper.dumper.pcap = pcap_dump_open(pcap, fifo);
if (!extcap_dumper.dumper.pcap) {
- if (verbose)
- fprintf(stderr, "ERROR: Cannot save dump file\n");
+ errmsg_print("ERROR: Cannot save dump file");
exit(1);
}
extcap_dumper.encap = encap;
@@ -284,15 +269,13 @@ static struct extcap_dumper extcap_dumper_open(char *fifo, int encap) {
else if (encap == EXTCAP_ENCAP_ETHERNET)
encap_ext = WTAP_ENCAP_ETHERNET;
else {
- if (verbose)
- fprintf(stderr, "ERROR: Unknown encapsulation\n");
+ errmsg_print("ERROR: Unknown encapsulation");
exit(1);
}
extcap_dumper.dumper.wtap = wtap_dump_open(fifo, WTAP_FILE_TYPE_SUBTYPE_PCAP_NSEC, encap_ext, PACKET_LENGTH, FALSE, &err);
if (!extcap_dumper.dumper.wtap) {
- if (verbose)
- fprintf(stderr, "ERROR: Cannot save dump file\n");
+ errmsg_print("ERROR: Cannot save dump file");
exit(1);
}
extcap_dumper.encap = encap;
@@ -355,7 +338,7 @@ static gboolean extcap_dumper_dump(struct extcap_dumper extcap_dumper, char *buf
}
if (!wtap_dump(extcap_dumper.dumper.wtap, &hdr, (const guint8 *) buffer, &err, &err_info)) {
- fprintf(stderr, "ERROR: Cannot dump: %s\n", err_info);
+ errmsg_print("ERROR: Cannot dump: %s", err_info);
return FALSE;
}
@@ -378,8 +361,7 @@ static socket_handle_t adb_connect(const char *server_ip, unsigned short *server
server.sin_addr.s_addr = inet_addr(server_ip);
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
- if (verbose)
- fprintf(stderr, "ERROR: Cannot open system TCP socket: %s\n", strerror(errno));
+ errmsg_print("ERROR: Cannot open system TCP socket: %s", strerror(errno));
return INVALID_SOCKET;
}
@@ -397,22 +379,18 @@ static socket_handle_t adb_connect(const char *server_ip, unsigned short *server
#else
if (execlp("adb", "adb", "start-server", NULL)) {
#endif
- if (verbose)
- fprintf(stderr, "WARNING: Cannot execute system command to start adb: %s\n", strerror(errno));
+ errmsg("WARNING: Cannot execute system command to start adb: %s", strerror(errno));
closesocket(sock);
return INVALID_SOCKET;
};
if (connect(sock, (struct sockaddr *) &server, sizeof(server)) == SOCKET_ERROR) {
- if (verbose)
- fprintf(stderr, "ERROR: Cannot connect to ADB: <%s> Please check that adb daemon is running.\n", strerror(errno));
+ errmsg_print("ERROR: Cannot connect to ADB: <%s> Please check that adb daemon is running.", strerror(errno));
closesocket(sock);
return INVALID_SOCKET;
}
#else
- if (verbose) {
- fprintf(stderr, "ERROR: Cannot connect to ADB: <%s> Please check that adb daemon is running.\n", strerror(errno));
- }
+ errmsg_print("ERROR: Cannot connect to ADB: <%s> Please check that adb daemon is running.", strerror(errno));
closesocket(sock);
return INVALID_SOCKET;
#endif
@@ -423,18 +401,18 @@ static socket_handle_t adb_connect(const char *server_ip, unsigned short *server
length = sizeof(client);
if (getsockname(sock, (struct sockaddr *) &client, &length)) {
- fprintf(stderr, "ERROR getsockname: %s\n", strerror(errno));
+ errmsg_print("ERROR getsockname: %s", strerror(errno));
closesocket(sock);
return INVALID_SOCKET;
}
if (length != sizeof(client)) {
- fprintf(stderr, "ERROR: incorrect length\n");
+ errmsg_print("ERROR: incorrect length");
closesocket(sock);
return INVALID_SOCKET;
}
- fprintf(stderr, "VERBOSE: Client port %u\n", GUINT16_FROM_BE(client.sin_port));
+ errmsg_print("VERBOSE: Client port %u", GUINT16_FROM_BE(client.sin_port));
}
return sock;
@@ -454,8 +432,7 @@ static char *adb_send_and_receive(socket_handle_t sock, const char *adb_service,
result = send(sock, adb_service, (int) adb_service_length, 0);
if (result != (gssize) adb_service_length) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending <%s> to ADB\n", adb_service);
+ errmsg_print("ERROR: Error while sending <%s> to ADB", adb_service);
if (data_length)
*data_length = 0;
return 0;
@@ -480,8 +457,7 @@ static char *adb_send_and_receive(socket_handle_t sock, const char *adb_service,
*data_length = used_buffer_length - 8;
if (memcmp(status, "OKAY", 4)) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while receiving by ADB for <%s>\n", adb_service);
+ errmsg_print("ERROR: Error while receiving by ADB for <%s>", adb_service);
if (data_length)
*data_length = 0;
return 0;
@@ -502,8 +478,7 @@ static char *adb_send_and_read(socket_handle_t sock, const char *adb_service, ch
result = send(sock, adb_service, (int) adb_service_length, 0);
if (result != (gssize) adb_service_length) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending <%s> to ADB\n", adb_service);
+ errmsg_print("ERROR: Error while sending <%s> to ADB", adb_service);
if (data_length)
*data_length = 0;
return 0;
@@ -526,8 +501,7 @@ static char *adb_send_and_read(socket_handle_t sock, const char *adb_service, ch
*data_length = used_buffer_length - 4;
if (memcmp(status, "OKAY", 4)) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while receiving by ADB for <%s>\n", adb_service);
+ errmsg_print("ERROR: Error while receiving by ADB for <%s>", adb_service);
if (data_length)
*data_length = 0;
return 0;
@@ -547,8 +521,7 @@ static int adb_send(socket_handle_t sock, const char *adb_service) {
result = send(sock, adb_service, (int) adb_service_length, 0);
if (result != (gssize) adb_service_length) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending <%s> to ADB\n", adb_service);
+ errmsg_print("ERROR: Error while sending <%s> to ADB", adb_service);
return 1;
}
@@ -558,8 +531,7 @@ static int adb_send(socket_handle_t sock, const char *adb_service) {
}
if (memcmp(buffer, "OKAY", 4)) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while receiving by ADB for <%s>\n", adb_service);
+ errmsg_print("ERROR: Error while receiving by ADB for <%s>", adb_service);
return 2;
}
@@ -620,8 +592,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
result = (int) (pos - prev_pos);
pos = strchr(pos, '\n') + 1;
if (result >= (int) sizeof(serial_number)) {
- if (verbose)
- fprintf(stderr, "WARNING: Serial number too long, ignore device\n");
+ errmsg_print("WARNING: Serial number too long, ignore device");
continue;
}
memcpy(serial_number, prev_pos, result);
@@ -636,8 +607,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -657,8 +627,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -667,8 +636,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
closesocket(sock);
response[data_length] = '\0';
api_level = (int) g_ascii_strtoll(response, NULL, 10);
- if (verbose)
- fprintf(stderr, "VERBOSE: Android API Level for %s is %i\n", serial_number, api_level);
+ errmsg_print("VERBOSE: Android API Level for %s is %i", serial_number, api_level);
if (api_level < 21) {
new_interface(INTERFACE_ANDROID_LOGCAT_MAIN, serial_number, "Android Logcat Main");
@@ -692,8 +660,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -701,22 +668,18 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
response = adb_send_and_read(sock, adb_hcidump_version, helpful_packet, sizeof(helpful_packet), &data_length);
closesocket(sock);
if (!response || data_length < 1) {
- if (verbose) {
- fprintf(stderr, "WARNING: Error while getting hcidump version by <%s> (%p len=%"G_GSSIZE_FORMAT")\n",
- adb_hcidump_version, (void*)response, data_length);
- fprintf(stderr, "VERBOSE: Android hcidump version for %s is unknown\n", serial_number);
- }
+ errmsg_print("WARNING: Error while getting hcidump version by <%s> (%p len=%"G_GSSIZE_FORMAT")",
+ adb_hcidump_version, (void*)response, data_length);
+ errmsg_print("VERBOSE: Android hcidump version for %s is unknown", serial_number);
disable_interface = 1;
} else {
response[data_length] = '\0';
if (g_ascii_strtoull(response, NULL, 10) == 0) {
- if (verbose)
- fprintf(stderr, "VERBOSE: Android hcidump version for %s is unknown\n", serial_number);
+ errmsg_print("VERBOSE: Android hcidump version for %s is unknown", serial_number);
disable_interface = 1;
} else {
- if (verbose)
- fprintf(stderr, "VERBOSE: Android hcidump version for %s is %s\n", serial_number, response);
+ errmsg_print("VERBOSE: Android hcidump version for %s is %s", serial_number, response);
}
}
@@ -733,8 +696,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -742,11 +704,9 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
response = adb_send_and_read(sock, adb_ps_droid_bluetooth, helpful_packet, sizeof(helpful_packet), &data_length);
closesocket(sock);
if (!response || data_length < 1) {
- if (verbose) {
- fprintf(stderr, "WARNING: Error while getting Bluetooth application process id by <%s> "
- "(%p len=%"G_GSSIZE_FORMAT")\n", adb_hcidump_version, (void*)response, data_length);
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is unknown\n", serial_number);
- }
+ errmsg_print("WARNING: Error while getting Bluetooth application process id by <%s> "
+ "(%p len=%"G_GSSIZE_FORMAT")", adb_hcidump_version, (void*)response, data_length);
+ errmsg_print( "VERBOSE: Android Bluetooth application PID for %s is unknown", serial_number);
disable_interface = 1;
} else {
char *data_str;
@@ -757,8 +717,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
data_str = strchr(response, '\n');
if (data_str && sscanf(data_str, "%*s %s", pid) == 1) {
- if (verbose)
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is %s\n", serial_number, pid);
+ errmsg_print("VERBOSE: Android Bluetooth application PID for %s is %s", serial_number, pid);
sock = adb_connect(adb_server_ip, adb_server_tcp_port);
if (sock == INVALID_SOCKET)
@@ -767,8 +726,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -780,17 +738,14 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
data_str = strchr(response, '\n');
if (data_str && sscanf(data_str, "%*s %s", pid) == 1 && strcmp(pid + 9, "10EA") == 0) {
- if (verbose)
- fprintf(stderr, "VERBOSE: Bluedroid External Parser Port for %s is %s\n", serial_number, pid + 9);
+ errmsg_print("VERBOSE: Bluedroid External Parser Port for %s is %s", serial_number, pid + 9);
} else {
disable_interface = 1;
- if (verbose)
- fprintf(stderr, "VERBOSE: Bluedroid External Parser Port for %s is unknown\n", serial_number);
+ errmsg_print("VERBOSE: Bluedroid External Parser Port for %s is unknown", serial_number);
}
} else {
disable_interface = 1;
- if (verbose)
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is unknown\n", serial_number);
+ errmsg_print("VERBOSE: Android Bluetooth application PID for %s is unknown", serial_number);
}
}
@@ -807,8 +762,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -819,11 +773,9 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
response = adb_send_and_read(sock, adb_ps_droid_bluetooth, helpful_packet, sizeof(helpful_packet), &data_length);
closesocket(sock);
if (!response || data_length < 1) {
- if (verbose) {
- fprintf(stderr, "WARNING: Error while getting Bluetooth application process id by <%s> "
- "(%p len=%"G_GSSIZE_FORMAT")\n", adb_hcidump_version, (void*)response, data_length);
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is unknown\n", serial_number);
- }
+ errmsg_print("WARNING: Error while getting Bluetooth application process id by <%s> "
+ "(%p len=%"G_GSSIZE_FORMAT")", adb_hcidump_version, (void*)response, data_length);
+ errmsg_print("VERBOSE: Android Bluetooth application PID for %s is unknown", serial_number);
disable_interface = 1;
} else {
char *data_str;
@@ -834,8 +786,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
data_str = strchr(response, '\n');
if (data_str && sscanf(data_str, "%*s %s", pid) == 1) {
- if (verbose)
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is %s\n", serial_number, pid);
+ errmsg_print("VERBOSE: Android Bluetooth application PID for %s is %s", serial_number, pid);
sock = adb_connect(adb_server_ip, adb_server_tcp_port);
if (sock == INVALID_SOCKET)
@@ -844,8 +795,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -857,17 +807,14 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
data_str = strchr(response, '\n');
if (data_str && sscanf(data_str, "%*s %s", pid) == 1 && strcmp(pid + 9, "22A8") == 0) {
- if (verbose)
- fprintf(stderr, "VERBOSE: Btsnoop Net Port for %s is %s\n", serial_number, pid + 9);
+ errmsg_print("VERBOSE: Btsnoop Net Port for %s is %s", serial_number, pid + 9);
} else {
disable_interface = 1;
- if (verbose)
- fprintf(stderr, "VERBOSE: Btsnoop Net Port for %s is unknown\n", serial_number);
+ errmsg_print("VERBOSE: Btsnoop Net Port for %s is unknown", serial_number);
}
} else {
disable_interface = 1;
- if (verbose)
- fprintf(stderr, "VERBOSE: Android Bluetooth application PID for %s is unknown\n", serial_number);
+ errmsg_print("VERBOSE: Android Bluetooth application PID for %s is unknown", serial_number);
}
}
@@ -882,7 +829,7 @@ static int list_interfaces(const char *adb_server_ip, unsigned short *adb_server
static int list_dlts(char *interface) {
if (!interface) {
- fprintf(stderr, "ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return 1;
}
@@ -907,14 +854,14 @@ static int list_dlts(char *interface) {
return 0;
}
- fprintf(stderr, "ERROR: Invalid interface: <%s>\n", interface);
+ errmsg_print("ERROR: Invalid interface: <%s>", interface);
return 1;
}
static int list_config(char *interface) {
if (!interface) {
- fprintf(stderr, "ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return 1;
}
@@ -954,7 +901,7 @@ static int list_config(char *interface) {
return 0;
}
- fprintf(stderr, "ERROR: Invalid interface: <%s>\n", interface);
+ errmsg_print("ERROR: Invalid interface: <%s>", interface);
return 1;
}
@@ -1029,8 +976,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", adb_transport);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", adb_transport);
closesocket(sock);
return 1;
}
@@ -1038,8 +984,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
@@ -1047,8 +992,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
result = adb_send(sock, adb_shell_hcidump);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while starting capture by sending command: %s\n", adb_shell_hcidump);
+ errmsg_print("ERROR: Error while starting capture by sending command: %s", adb_shell_hcidump);
closesocket(sock);
return 1;
}
@@ -1060,8 +1004,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
length = recv(sock, data + used_buffer_length, (int)(PACKET_LENGTH - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
@@ -1072,8 +1015,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
char *state_line_position = i_position + 1;
if (!strncmp(data, "/system/bin/sh: hcidump: not found", 34)) {
- if (verbose)
- fprintf(stderr, "ERROR: Command not found for <%s>\n", adb_shell_hcidump);
+ errmsg_print("ERROR: Command not found for <%s>", adb_shell_hcidump);
closesocket(sock);
return 2;
}
@@ -1082,8 +1024,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
if (i_position) {
i_position += 1;
if (!strncmp(state_line_position, "Can't access device: Permission denied", 38)) {
- if (verbose)
- fprintf(stderr, "WARNING: No permission for command <%s>\n", adb_shell_hcidump);
+ errmsg_print("WARNING: No permission for command <%s>", adb_shell_hcidump);
used_buffer_length = 0;
try_next += 1;
break;
@@ -1103,16 +1044,14 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
sprintf((char *) helpful_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helpful_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helpful_packet);
closesocket(sock);
return 1;
}
result = adb_send(sock, adb_shell_su_hcidump);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while starting capture by sending command: <%s>\n", adb_shell_su_hcidump);
+ errmsg_print("ERROR: Error while starting capture by sending command: <%s>", adb_shell_su_hcidump);
closesocket(sock);
return 1;
}
@@ -1125,8 +1064,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
length = recv(sock, data + used_buffer_length, (int)(PACKET_LENGTH - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
@@ -1135,8 +1073,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
i_position = (char *) memchr(data, '\n', used_buffer_length);
if (i_position && i_position < data + used_buffer_length) {
if (!strncmp(data, "/system/bin/sh: su: not found", 29)) {
- if (verbose)
- fprintf(stderr, "ERROR: Command 'su' not found for <%s>\n", adb_shell_su_hcidump);
+ errmsg_print("ERROR: Command 'su' not found for <%s>", adb_shell_su_hcidump);
closesocket(sock);
return 2;
}
@@ -1157,8 +1094,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
length = recv(sock, data + used_buffer_length, (int)(PACKET_LENGTH - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
@@ -1176,8 +1112,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
hex_data = new_hex_data;
hex = g_ascii_strtoll(hex_data, &new_hex_data, 16);
if (hex < 0 || hex >= 256 || hex_data == new_hex_data) {
- if (verbose)
- printf("ERROR: data format error: %s\n", strerror(errno));
+ errmsg_print("ERROR: data format error: %s", strerror(errno));
closesocket(sock);
return 101;
}
@@ -1185,8 +1120,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
hex_data = new_hex_data;
hex = g_ascii_strtoll(hex_data, &new_hex_data, 16);
if (hex < 0 || hex >= 256 || hex_data == new_hex_data) {
- if (verbose)
- printf("ERROR: data format error: %s\n", strerror(errno));
+ errmsg_print("ERROR: data format error: %s", strerror(errno));
closesocket(sock);
return 101;
}
@@ -1199,8 +1133,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
hex_data = new_hex_data;
hex = g_ascii_strtoll(hex_data, &new_hex_data, 16);
if (hex < 0 || hex >= 256 || hex_data == new_hex_data) {
- if (verbose)
- printf("ERROR: data format error: %s\n", strerror(errno));
+ errmsg_print("ERROR: data format error: %s", strerror(errno));
closesocket(sock);
return 101;
}
@@ -1213,8 +1146,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
hex_data = new_hex_data;
hex = g_ascii_strtoll(hex_data, &new_hex_data, 16);
if (hex < 0 || hex >= 256 || hex_data == new_hex_data) {
- if (verbose)
- printf("ERROR: data format error: %s\n", strerror(errno));
+ errmsg_print("ERROR: data format error: %s", strerror(errno));
closesocket(sock);
return 101;
}
@@ -1222,8 +1154,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
hex_data = new_hex_data;
hex = g_ascii_strtoll(hex_data, &new_hex_data, 16);
if (hex < 0 || hex >= 256 || hex_data == new_hex_data) {
- if (verbose)
- printf("ERROR: data format error: %s\n", strerror(errno));
+ errmsg_print("ERROR: data format error: %s", strerror(errno));
closesocket(sock);
return 101;
}
@@ -1238,8 +1169,7 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
}
} else {
- if (verbose)
- fprintf(stderr, "ERROR: bad raw stream\n");
+ errmsg_print("ERROR: bad raw stream");
closesocket(sock);
return 1;
}
@@ -1259,11 +1189,9 @@ static int capture_android_bluetooth_hcidump(char *interface, char *fifo,
&date.tm_year, &date.tm_mon, &date.tm_mday, &date.tm_hour,
&date.tm_min, &date.tm_sec, &ms, &direction_character)) {
- if (verbose) {
- fprintf(stderr, "time %04d-%02d-%02d %02d:%02d:%02d.%06d %c\n",
+ errmsg_print("time %04d-%02d-%02d %02d:%02d:%02d.%06d %c",
date.tm_year, date.tm_mon, date.tm_mday, date.tm_hour,
date.tm_min, date.tm_sec, ms, direction_character);
- }
date.tm_mon -= 1;
date.tm_year -= 1900;
ts = mktime(&date);
@@ -1374,22 +1302,18 @@ static int capture_android_bluetooth_external_parser(char *interface,
if (bt_forward_socket) {
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
- if (verbose)
- printf("ERROR: Cannot open system TCP socket: %s\n", strerror(errno));
+ errmsg_print("ERROR: Cannot open system TCP socket: %s", strerror(errno));
return 1;
}
- if (verbose) {
- printf("Using config: Server TCP Port=%u, Local IP=%s, Local TCP Port=%u\n",
+ verbose_print("Using config: Server TCP Port=%u, Local IP=%s, Local TCP Port=%u\n",
*bt_server_tcp_port, bt_local_ip, *bt_local_tcp_port);
- }
if (*bt_local_tcp_port != 0) {
int result;
result = adb_forward(serial_number, adb_server_ip, adb_server_tcp_port, *bt_local_tcp_port, *bt_server_tcp_port);
- if (verbose)
- printf("DO: adb forward tcp:%u (local) tcp:%u (remote) result=%i\n",
+ verbose_print("DO: adb forward tcp:%u (local) tcp:%u (remote) result=%i\n",
*bt_local_tcp_port, *bt_server_tcp_port, result);
}
@@ -1399,8 +1323,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
server.sin_addr.s_addr = inet_addr(bt_local_ip);
if (connect(sock, (struct sockaddr *) &server, sizeof(server)) == SOCKET_ERROR) {
- if (verbose)
- printf("ERROR: <%s> Please check that adb daemon is running.\n\n", strerror(errno));
+ errmsg_print("ERROR: <%s> Please check that adb daemon is running.", strerror(errno));
closesocket(sock);
return 2;
}
@@ -1410,18 +1333,18 @@ static int capture_android_bluetooth_external_parser(char *interface,
length = sizeof(client);
if (getsockname(sock, (struct sockaddr *) &client, (socklen_t *) &length)) {
- printf("ERROR getsockname: %s\n", strerror(errno));
+ errmsg_print("ERROR getsockname: %s", strerror(errno));
closesocket(sock);
return 3;
}
if (length != sizeof(client)) {
- printf("ERROR: incorrect length\n");
+ errmsg_print("ERROR: incorrect length");
closesocket(sock);
return 4;
}
- printf("VERBOSE: Client port %u\n", GUINT16_FROM_BE(client.sin_port));
+ verbose_print("VERBOSE: Client port %u", GUINT16_FROM_BE(client.sin_port));
}
} else {
int result;
@@ -1433,8 +1356,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport\n");
+ errmsg_print("ERROR: Error while setting adb transport");
closesocket(sock);
return 1;
}
@@ -1442,8 +1364,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
g_snprintf((char *) buffer, PACKET_LENGTH, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, buffer);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport\n");
+ errmsg_print("ERROR: Error while setting adb transport");
closesocket(sock);
return 1;
}
@@ -1452,8 +1373,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
sprintf((char *) buffer, adb_tcp_bluedroid_external_parser_template, 4 + 5, *bt_server_tcp_port);
result = adb_send(sock, buffer);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while forwarding adb port\n");
+ errmsg_print("ERROR: Error while forwarding adb port");
closesocket(sock);
return 1;
}
@@ -1464,8 +1384,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
length = recv(sock, buffer + used_buffer_length, (int)(PACKET_LENGTH - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
@@ -1473,13 +1392,11 @@ static int capture_android_bluetooth_external_parser(char *interface,
if (length <= 0) {
if (bt_forward_socket) {
/* NOTE: Workaround... It seems that Bluedroid is slower and we can connect to socket that are not really ready... */
- if (verbose)
- printf("WARNING: Broken socket connection. Try reconnect.\n");
+ verbose_print("WARNING: Broken socket connection. Try reconnect.\n");
closesocket(sock);
if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == INVALID_SOCKET) {
- if (verbose)
- printf("ERROR1: %s\n", strerror(errno));
+ errmsg_print("ERROR1: %s", strerror(errno));
return 1;
}
@@ -1488,14 +1405,12 @@ static int capture_android_bluetooth_external_parser(char *interface,
server.sin_addr.s_addr = inet_addr(bt_local_ip);
if (connect(sock, (struct sockaddr *) &server, sizeof(server)) == SOCKET_ERROR) {
- if (verbose)
- printf("ERROR reconnect: <%s> Please check that adb daemon is running.\n", strerror(errno));
+ errmsg_print("ERROR reconnect: <%s> Please check that adb daemon is running.", strerror(errno));
closesocket(sock);
return 2;
}
} else {
- if (verbose)
- printf("ERROR: Broken socket connection.\n");
+ errmsg_print("ERROR: Broken socket connection.");
closesocket(sock);
return 1;
}
@@ -1505,7 +1420,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
used_buffer_length += length;
- if (verbose) printf("Received: length=%"G_GSSIZE_FORMAT"\n", length);
+ verbose_print("Received: length=%"G_GSSIZE_FORMAT"\n", length);
while (((payload[BLUEDROID_H4_PACKET_TYPE] == BLUEDROID_H4_PACKET_TYPE_HCI_CMD || payload[BLUEDROID_H4_PACKET_TYPE] == BLUEDROID_H4_PACKET_TYPE_SCO) &&
used_buffer_length >= BLUEDROID_TIMESTAMP_SIZE + BLUEDROID_H4_SIZE + 2 + 1 &&
@@ -1556,17 +1471,16 @@ static int capture_android_bluetooth_external_parser(char *interface,
break;
default:
- if (verbose)
- printf("ERROR: Invalid stream\n");
+ errmsg_print("ERROR: Invalid stream");
closesocket(sock);
return 1;
}
if (verbose) {
static unsigned int id = 1;
- printf("\t Packet %u: used_buffer_length=%"G_GSSIZE_FORMAT" length=%"G_GSSIZE_FORMAT" captured_length=%i type=0x%02x\n", id, used_buffer_length, length, captured_length, payload[BLUEDROID_H4_PACKET_TYPE]);
+ verbose_print("\t Packet %u: used_buffer_length=%"G_GSSIZE_FORMAT" length=%"G_GSSIZE_FORMAT" captured_length=%i type=0x%02x\n", id, used_buffer_length, length, captured_length, payload[BLUEDROID_H4_PACKET_TYPE]);
if (payload[BLUEDROID_H4_PACKET_TYPE] == BLUEDROID_H4_PACKET_TYPE_HCI_EVT)
- printf("\t Packet: %02x %02x %02x\n", (unsigned int) payload[0], (unsigned int) payload[1], (unsigned int)payload[2]);
+ verbose_print("\t Packet: %02x %02x %02x\n", (unsigned int) payload[0], (unsigned int) payload[1], (unsigned int)payload[2]);
id +=1;
}
@@ -1580,8 +1494,7 @@ static int capture_android_bluetooth_external_parser(char *interface,
used_buffer_length -= length - sizeof(own_pcap_bluetooth_h4_header) + BLUEDROID_TIMESTAMP_SIZE;
if (used_buffer_length < 0) {
- if (verbose)
- printf("ERROR: Internal error: Negative used buffer length.\n");
+ errmsg_print("ERROR: Internal error: Negative used buffer length.");
closesocket(sock);
return 1;
}
@@ -1642,16 +1555,14 @@ static int capture_android_bluetooth_btsnoop_net(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", adb_transport);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", adb_transport);
return 1;
}
} else {
sprintf((char *) packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", packet);
closesocket(sock);
return 1;
}
@@ -1659,8 +1570,7 @@ static int capture_android_bluetooth_btsnoop_net(char *interface, char *fifo,
result = adb_send(sock, adb_tcp_btsnoop_net);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending command <%s>\n", adb_tcp_btsnoop_net);
+ errmsg_print("ERROR: Error while sending command <%s>", adb_tcp_btsnoop_net);
closesocket(sock);
return 1;
}
@@ -1681,15 +1591,13 @@ static int capture_android_bluetooth_btsnoop_net(char *interface, char *fifo,
(int)(PACKET_LENGTH - sizeof(own_pcap_bluetooth_h4_header) - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
if (length <= 0) {
- if (verbose)
- printf("ERROR: Broken socket connection.\n");
+ errmsg_print("ERROR: Broken socket connection.");
closesocket(sock);
return 101;
}
@@ -1714,8 +1622,7 @@ static int capture_android_bluetooth_btsnoop_net(char *interface, char *fifo,
used_buffer_length -= 24 + GINT32_FROM_BE(*captured_length);
if (used_buffer_length < 0) {
- if (verbose)
- printf("ERROR: Internal error: Negative used buffer length.\n");
+ errmsg_print("ERROR: Internal error: Negative used buffer length.");
closesocket(sock);
return 1;
}
@@ -1787,8 +1694,7 @@ static int capture_android_logcat_text(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", adb_transport);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", adb_transport);
closesocket(sock);
return 1;
}
@@ -1798,8 +1704,7 @@ static int capture_android_logcat_text(char *interface, char *fifo,
sprintf((char *) packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", packet);
closesocket(sock);
return 1;
}
@@ -1816,7 +1721,7 @@ static int capture_android_logcat_text(char *interface, char *fifo,
else if (is_specified_interface(interface, INTERFACE_ANDROID_LOGCAT_TEXT_CRASH))
logcat_buffer = " -b crash";
else {
- printf("ERROR: Unknown interface: <%s>\n", interface);
+ errmsg_print("ERROR: Unknown interface: <%s>", interface);
closesocket(sock);
return -1;
}
@@ -1825,8 +1730,7 @@ static int capture_android_logcat_text(char *interface, char *fifo,
g_snprintf((char *) packet, sizeof(packet), adb_logcat_template, strlen(adb_logcat_template) + -8 + strlen(logcat_buffer), logcat_buffer, "");
result = adb_send(sock, packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending command <%s>\n", packet);
+ errmsg_print("ERROR: Error while sending command <%s>", packet);
closesocket(sock);
return 1;
}
@@ -1852,15 +1756,13 @@ static int capture_android_logcat_text(char *interface, char *fifo,
length = recv(sock, packet + exported_pdu_headers_size + used_buffer_length, (int)(PACKET_LENGTH - exported_pdu_headers_size - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
if (length <= 0) {
- if (verbose)
- printf("ERROR: Broken socket connection. Try reconnect.\n");
+ errmsg_print("ERROR: Broken socket connection. Try reconnect.");
closesocket(sock);
return 1;
}
@@ -1960,8 +1862,7 @@ static int capture_android_logcat(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport\n");
+ errmsg_print("ERROR: Error while setting adb transport");
closesocket(sock);
return 1;
}
@@ -1971,8 +1872,7 @@ static int capture_android_logcat(char *interface, char *fifo,
g_snprintf(packet, PACKET_LENGTH, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport\n");
+ errmsg_print("ERROR: Error while setting adb transport");
closesocket(sock);
return 1;
}
@@ -1987,15 +1887,14 @@ static int capture_android_logcat(char *interface, char *fifo,
else if (is_specified_interface(interface, INTERFACE_ANDROID_LOGCAT_EVENTS))
adb_command = adb_log_events;
else {
- printf("ERROR: Unknown interface: <%s>\n", interface);
+ errmsg_print("ERROR: Unknown interface: <%s>", interface);
closesocket(sock);
return -1;
}
result = adb_send(sock, adb_command);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending command <%s>\n", adb_command);
+ errmsg_print("ERROR: Error while sending command <%s>", adb_command);
closesocket(sock);
return 1;
}
@@ -2031,16 +1930,14 @@ static int capture_android_logcat(char *interface, char *fifo,
length = recv(sock, packet + exported_pdu_headers_size + used_buffer_length, (int)(PACKET_LENGTH - exported_pdu_headers_size - used_buffer_length), 0);
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK)) continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
closesocket(sock);
return 100;
}
if (length <= 0) {
while (endless_loop) {
- if (verbose)
- printf("WARNING: Broken socket connection. Try reconnect.\n");
+ verbose_print("WARNING: Broken socket connection. Try reconnect.\n");
used_buffer_length = 0;
closesocket(sock);
@@ -2051,8 +1948,7 @@ static int capture_android_logcat(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", adb_transport);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", adb_transport);
closesocket(sock);
return 1;
}
@@ -2060,8 +1956,7 @@ static int capture_android_logcat(char *interface, char *fifo,
sprintf((char *) helper_packet, adb_transport_serial_templace, 15 + serial_number_length, serial_number);
result = adb_send(sock, helper_packet);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while setting adb transport for <%s>\n", helper_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>", helper_packet);
closesocket(sock);
return 1;
}
@@ -2076,15 +1971,14 @@ static int capture_android_logcat(char *interface, char *fifo,
else if (is_specified_interface(interface, INTERFACE_ANDROID_LOGCAT_EVENTS))
adb_command = adb_log_events;
else {
- printf("ERROR: Unknown interface: <%s>\n", interface);
+ errmsg_print("ERROR: Unknown interface: <%s>", interface);
closesocket(sock);
return 1;
}
result = adb_send(sock, adb_command);
if (result) {
- if (verbose)
- fprintf(stderr, "ERROR: Error while sending command <%s>\n", adb_command);
+ errmsg_print("ERROR: Error while sending command <%s>", adb_command);
continue;
}
@@ -2163,13 +2057,13 @@ static void attach_parent_console()
/* Console attach succeeded */
if (outRedirected == FALSE) {
if (!freopen("CONOUT$", "w", stdout)) {
- fprintf(stderr, "WARNING: Cannot redirect to stdout.");
+ errmsg_print("WARNING: Cannot redirect to stdout.");
}
}
if (errRedirected == FALSE) {
if (!freopen("CONOUT$", "w", stderr)) {
- fprintf(stderr, "WARNING: Cannot redirect to strerr.");
+ errmsg_print("WARNING: Cannot redirect to strerr.");
}
}
}
@@ -2212,12 +2106,10 @@ static int capture_android_wifi_tcpdump(char *interface, char *fifo,
if (!serial_number) {
result = adb_send(sock, adb_transport);
if (result) {
- if (verbose)
- printf("ERROR: Error while setting adb transport");
+ errmsg_print("ERROR: Error while setting adb transport");
fflush(stdout);
- fprintf(stderr,
- "ERROR: Error while setting adb transport for <%s>\n",
+ errmsg_print("ERROR: Error while setting adb transport for <%s>",
adb_transport);
closesocket(sock);
return 1;
@@ -2229,10 +2121,8 @@ static int capture_android_wifi_tcpdump(char *interface, char *fifo,
if (result) {
printf("ERROR: Error while setting adb transport");
fflush(stdout);
- if (verbose)
- fprintf(stderr,
- "ERROR: Error while setting adb transport for <%s>\n",
- helpful_packet);
+ errmsg_print("ERROR: Error while setting adb transport for <%s>",
+ helpful_packet);
closesocket(sock);
return 1;
}
@@ -2241,10 +2131,8 @@ static int capture_android_wifi_tcpdump(char *interface, char *fifo,
if (result) {
printf("ERROR: Error while setting adb transport");
fflush(stdout);
- if (verbose)
- fprintf(stderr,
- "ERROR: Error while starting capture by sending command: %s\n",
- adb_shell_tcpdump);
+ errmsg_print("ERROR: Error while starting capture by sending command: %s",
+ adb_shell_tcpdump);
closesocket(sock);
return 1;
}
@@ -2257,8 +2145,7 @@ static int capture_android_wifi_tcpdump(char *interface, char *fifo,
if (errno == EAGAIN || (EWOULDBLOCK != EAGAIN && errno == EWOULDBLOCK))
continue;
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ verbose_print("ERROR capture: %s", strerror(errno));
return 100;
}
used_buffer_length += length;
@@ -2370,8 +2257,7 @@ static int capture_android_wifi_tcpdump(char *interface, char *fifo,
continue;
}
else if (errno != 0) {
- if (verbose)
- printf("ERROR capture: %s\n", strerror(errno));
+ errmsg_print("ERROR capture: %s", strerror(errno));
return 100;
}
if (length > 0 && (used_buffer_length += length)>1) {
@@ -2434,15 +2320,15 @@ int main(int argc, char **argv) {
else
verbose = 1;
- if (verbose) {
+ {
int j = 0;
- fprintf(stderr, "VERBOSE: Command line: ");
+ verbose_print("VERBOSE: Command line: ");
while(j < argc) {
- fprintf(stderr, "%s ", argv[j]);
+ verbose_print("%s ", argv[j]);
j += 1;
}
- fprintf(stderr, "\n");
+ verbose_print("\n");
}
break;
case OPT_LIST_INTERFACES:
@@ -2475,7 +2361,7 @@ int main(int argc, char **argv) {
case OPT_CONFIG_ADB_SERVER_TCP_PORT:
adb_server_tcp_port = &local_adb_server_tcp_port;
if (!optarg){
- fprintf(stderr, "ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
+ errmsg_print("ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
return -1;
}
*adb_server_tcp_port = (unsigned short) g_ascii_strtoull(optarg, NULL, 10);
@@ -2486,7 +2372,7 @@ int main(int argc, char **argv) {
case OPT_CONFIG_BT_SERVER_TCP_PORT:
bt_server_tcp_port = &local_bt_server_tcp_port;
if (!optarg){
- fprintf(stderr, "ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
+ errmsg_print("ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
return -1;
}
*bt_server_tcp_port = (unsigned short) g_ascii_strtoull(optarg, NULL, 10);
@@ -2500,7 +2386,7 @@ int main(int argc, char **argv) {
case OPT_CONFIG_BT_LOCAL_TCP_PORT:
bt_local_tcp_port = &local_bt_local_tcp_port;
if (!optarg){
- fprintf(stderr, "ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
+ errmsg_print("ERROR: Impossible exception. Parameter required argument, but there is no it right now.");
return -1;
}
*bt_local_tcp_port = (unsigned short) g_ascii_strtoull(optarg, NULL, 10);
@@ -2535,8 +2421,7 @@ int main(int argc, char **argv) {
#ifdef _WIN32
result = WSAStartup(MAKEWORD(1,1), &wsaData);
if (result != 0) {
- if (verbose)
- printf("ERROR: WSAStartup failed with error: %d\n", result);
+ errmsg_print("ERROR: WSAStartup failed with error: %d", result);
return 1;
}
#endif /* _WIN32 */
@@ -2548,7 +2433,7 @@ int main(int argc, char **argv) {
}
if (fifo == NULL) {
- printf("ERROR: No FIFO or file specified\n");
+ errmsg_print("ERROR: No FIFO or file specified");
return 1;
}
diff --git a/extcap/extcap-base.h b/extcap/extcap-base.h
new file mode 100644
index 0000000000..0dabd8b2a9
--- /dev/null
+++ b/extcap/extcap-base.h
@@ -0,0 +1,63 @@
+/* extcap_base.h
+ * Base function for extcaps
+ *
+ * Copyright 2016, Dario Lombardo
+ *
+ * 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
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+#ifndef __EXTCAP_BASE_H__
+#define __EXTCAP_BASE_H__
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <stdlib.h>
+
+#define EXTCAP_BASE_OPTIONS_ENUM \
+ OPT_LIST_INTERFACES, \
+ OPT_LIST_DLTS, \
+ OPT_INTERFACE, \
+ OPT_CONFIG, \
+ OPT_CAPTURE, \
+ OPT_CAPTURE_FILTER, \
+ OPT_FIFO \
+
+
+#define EXTCAP_BASE_OPTIONS \
+ { "extcap-interfaces", no_argument, NULL, OPT_LIST_INTERFACES}, \
+ { "extcap-dlts", no_argument, NULL, OPT_LIST_DLTS}, \
+ { "extcap-interface", required_argument, NULL, OPT_INTERFACE}, \
+ { "extcap-config", no_argument, NULL, OPT_CONFIG}, \
+ { "capture", no_argument, NULL, OPT_CAPTURE}, \
+ { "extcap-capture-filter", required_argument, NULL, OPT_CAPTURE_FILTER}, \
+ { "fifo", required_argument, NULL, OPT_FIFO} \
+
+#endif
+
+/*
+ * Editor modelines - https://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: t
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=4 noexpandtab:
+ * :indentSize=4:tabSize=4:noTabs=false:
+ */ \ No newline at end of file
diff --git a/extcap/randpktdump.c b/extcap/randpktdump.c
index a2c7dfbce8..aa16ebcd0a 100644
--- a/extcap/randpktdump.c
+++ b/extcap/randpktdump.c
@@ -24,11 +24,10 @@
#include "config.h"
+#include "extcap-base.h"
+
#include "randpkt_core/randpkt_core.h"
-#include <glib.h>
-#include <glib/gprintf.h>
-#include <stdlib.h>
#ifdef HAVE_GETOPT_H
#include <getopt.h>
@@ -66,27 +65,21 @@
#define SOCKET_ERROR (-1)
#endif
-#define verbose_print(...) { if (verbose) printf(__VA_ARGS__); }
-#define errmsg_print(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
-
#define RANDPKT_EXTCAP_INTERFACE "randpkt"
#define RANDPKTDUMP_VERSION_MAJOR 0
#define RANDPKTDUMP_VERSION_MINOR 1
#define RANDPKTDUMP_VERSION_RELEASE 0
+#define verbose_print(...) { if (verbose) printf(__VA_ARGS__); }
+#define errmsg_print(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
+
static gboolean verbose = TRUE;
enum {
- OPT_HELP = 1,
+ EXTCAP_BASE_OPTIONS_ENUM,
+ OPT_HELP,
OPT_VERSION,
OPT_VERBOSE,
- OPT_LIST_INTERFACES,
- OPT_LIST_DLTS,
- OPT_INTERFACE,
- OPT_CONFIG,
- OPT_CAPTURE,
- OPT_CAPTURE_FILTER,
- OPT_FIFO,
OPT_MAXBYTES,
OPT_COUNT,
OPT_RANDOM_TYPE,
@@ -95,19 +88,10 @@ enum {
};
static struct option longopts[] = {
- /* Generic application options */
- { "help", no_argument, NULL, OPT_HELP},
- { "version", no_argument, NULL, OPT_VERSION},
+ EXTCAP_BASE_OPTIONS,
+ { "help", no_argument, NULL, OPT_HELP},
+ { "version", no_argument, NULL, OPT_VERSION},
{ "verbose", optional_argument, NULL, OPT_VERBOSE},
- /* Extcap options */
- { "extcap-interfaces", no_argument, NULL, OPT_LIST_INTERFACES},
- { "extcap-dlts", no_argument, NULL, OPT_LIST_DLTS},
- { "extcap-interface", required_argument, NULL, OPT_INTERFACE},
- { "extcap-config", no_argument, NULL, OPT_CONFIG},
- { "capture", no_argument, NULL, OPT_CAPTURE},
- { "extcap-capture-filter ", required_argument, NULL, OPT_CAPTURE_FILTER},
- { "fifo", required_argument, NULL, OPT_FIFO},
- /* Interfaces options */
{ "maxbytes", required_argument, NULL, OPT_MAXBYTES},
{ "count", required_argument, NULL, OPT_COUNT},
{ "random-type", required_argument, NULL, OPT_RANDOM_TYPE},
@@ -215,12 +199,12 @@ static int list_config(char *interface)
unsigned list_num;
if (!interface) {
- errmsg_print("ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return EXIT_FAILURE;
}
if (g_strcmp0(interface, RANDPKT_EXTCAP_INTERFACE)) {
- errmsg_print("ERROR: interface must be %s\n", RANDPKT_EXTCAP_INTERFACE);
+ errmsg_print("ERROR: interface must be %s", RANDPKT_EXTCAP_INTERFACE);
return EXIT_FAILURE;
}
@@ -255,12 +239,12 @@ static int list_config(char *interface)
static int list_dlts(const char *interface)
{
if (!interface) {
- errmsg_print("ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return EXIT_FAILURE;
}
if (g_strcmp0(interface, RANDPKT_EXTCAP_INTERFACE)) {
- errmsg_print("ERROR: interface must be %s\n", RANDPKT_EXTCAP_INTERFACE);
+ errmsg_print("ERROR: interface must be %s", RANDPKT_EXTCAP_INTERFACE);
return EXIT_FAILURE;
}
@@ -355,7 +339,7 @@ int main(int argc, char *argv[])
case OPT_MAXBYTES:
maxbytes = atoi(optarg);
if (maxbytes > MAXBYTES_LIMIT) {
- errmsg_print("randpktdump: Max bytes is %u\n", MAXBYTES_LIMIT);
+ errmsg_print("randpktdump: Max bytes is %u", MAXBYTES_LIMIT);
return 1;
}
break;
@@ -382,17 +366,17 @@ int main(int argc, char *argv[])
case ':':
/* missing option argument */
- errmsg_print("Option '%s' requires an argument\n", argv[optind - 1]);
+ errmsg_print("Option '%s' requires an argument", argv[optind - 1]);
break;
default:
- errmsg_print("Invalid option 1: %s\n", argv[optind - 1]);
+ errmsg_print("Invalid option 1: %s", argv[optind - 1]);
return EXIT_FAILURE;
}
}
if (optind != argc) {
- errmsg_print("Invalid option: %s\n", argv[optind]);
+ errmsg_print("Invalid option: %s", argv[optind]);
return EXIT_FAILURE;
}
@@ -407,7 +391,7 @@ int main(int argc, char *argv[])
/* Some sanity checks */
if ((random_type) && (all_random)) {
- errmsg_print("You can specify only one between: --random-type, --all-random\n");
+ errmsg_print("You can specify only one between: --random-type, --all-random");
return EXIT_FAILURE;
}
@@ -421,19 +405,19 @@ int main(int argc, char *argv[])
result = WSAStartup(MAKEWORD(1,1), &wsaData);
if (result != 0) {
if (verbose)
- errmsg_print("ERROR: WSAStartup failed with error: %d\n", result);
+ errmsg_print("ERROR: WSAStartup failed with error: %d", result);
return 1;
}
#endif /* _WIN32 */
if (do_capture) {
if (!fifo) {
- errmsg_print("ERROR: No FIFO or file specified\n");
+ errmsg_print("ERROR: No FIFO or file specified");
return 1;
}
if (g_strcmp0(interface, RANDPKT_EXTCAP_INTERFACE)) {
- errmsg_print("ERROR: invalid interface\n");
+ errmsg_print("ERROR: invalid interface");
return 1;
}
diff --git a/extcap/sshdump.c b/extcap/sshdump.c
index 9a273968bf..8a932bb70a 100644
--- a/extcap/sshdump.c
+++ b/extcap/sshdump.c
@@ -24,12 +24,11 @@
#include "config.h"
-#include <glib.h>
-#include <glib/gprintf.h>
+#include "extcap-base.h"
+
#include <glib/gstdio.h>
#include <stdio.h>
#include <stdint.h>
-#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
@@ -104,19 +103,16 @@
#define DEFAULT_CAPTURE_BIN "dumpcap"
+#define verbose_print(...) { if (verbose) printf(__VA_ARGS__); }
+#define errmsg_print(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
+
static gboolean verbose = FALSE;
enum {
- OPT_HELP = 1,
+ EXTCAP_BASE_OPTIONS_ENUM,
+ OPT_HELP,
OPT_VERSION,
OPT_VERBOSE,
- OPT_LIST_INTERFACES,
- OPT_LIST_DLTS,
- OPT_INTERFACE,
- OPT_CONFIG,
- OPT_CAPTURE,
- OPT_FIFO,
- OPT_EXTCAP_FILTER,
OPT_REMOTE_HOST,
OPT_REMOTE_PORT,
OPT_REMOTE_USERNAME,
@@ -130,17 +126,10 @@ enum {
};
static struct option longopts[] = {
-/* Generic application options */
+ EXTCAP_BASE_OPTIONS,
{ "help", no_argument, NULL, OPT_HELP},
{ "version", no_argument, NULL, OPT_VERSION},
{ "verbose", optional_argument, NULL, OPT_VERBOSE},
- { "extcap-interfaces", no_argument, NULL, OPT_LIST_INTERFACES},
- { "extcap-dlts", no_argument, NULL, OPT_LIST_DLTS},
- { "extcap-interface", required_argument, NULL, OPT_INTERFACE},
- { "extcap-config", no_argument, NULL, OPT_CONFIG},
- { "extcap-capture-filter", required_argument, NULL, OPT_EXTCAP_FILTER},
- { "capture", no_argument, NULL, OPT_CAPTURE},
- { "fifo", required_argument, NULL, OPT_FIFO},
{ "remote-host", required_argument, NULL, OPT_REMOTE_HOST},
{ "remote-port", required_argument, NULL, OPT_REMOTE_PORT},
{ "remote-username", required_argument, NULL, OPT_REMOTE_USERNAME},
@@ -154,9 +143,6 @@ static struct option longopts[] = {
{ 0, 0, 0, 0}
};
-#define verbose_print(...) { if (verbose) printf(__VA_ARGS__); }
-#define errmsg_print(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
-
static char* local_interfaces_to_filter(unsigned int remote_port);
static void ssh_cleanup(ssh_session sshs, ssh_channel channel)
@@ -189,13 +175,13 @@ static ssh_session create_ssh_connection(const char* hostname, const unsigned in
return NULL;
if (ssh_options_set(sshs, SSH_OPTIONS_HOST, hostname)) {
- errmsg_print("Can't set the hostname: %s\n", hostname);
+ errmsg_print("Can't set the hostname: %s", hostname);
goto failure;
}
if (port != 0) {
if (ssh_options_set(sshs, SSH_OPTIONS_PORT, &port)) {
- errmsg_print("Can't set the port: %d\n", port);
+ errmsg_print("Can't set the port: %d", port);
goto failure;
}
}
@@ -204,15 +190,15 @@ static ssh_session create_ssh_connection(const char* hostname, const unsigned in
username = g_get_user_name();
if (ssh_options_set(sshs, SSH_OPTIONS_USER, username)) {
- errmsg_print("Can't set the username: %s\n", username);
+ errmsg_print("Can't set the username: %s", username);
goto failure;
}
- verbose_print("Opening ssh connection to %s@%s:%u\n", username, hostname, port);
+ verbose_print("Opening ssh connection to %s@%s:%u", username, hostname, port);
/* Connect to server */
if (ssh_connect(sshs) != SSH_OK) {
- errmsg_print("Error connecting to %s@%s:%u (%s)\n", username, hostname, port,
+ errmsg_print("Error connecting to %s@%s:%u (%s)", username, hostname, port,
ssh_get_error(sshs));
goto failure;
}
@@ -264,7 +250,7 @@ static ssh_session create_ssh_connection(const char* hostname, const unsigned in
verbose_print("failed\n");
}
- errmsg_print("Can't find a valid authentication. Disconnecting.\n");
+ errmsg_print("Can't find a valid authentication. Disconnecting.");
/* All authentication failed. Disconnect and return */
ssh_disconnect(sshs);
@@ -283,7 +269,7 @@ static void ssh_loop_read(ssh_channel channel, int fd)
do {
nbytes = ssh_channel_read(channel, buffer, SSH_READ_BLOCK_SIZE, 0);
if (write(fd, buffer, nbytes) != nbytes) {
- errmsg_print("ERROR reading: %s\n", g_strerror(errno));
+ errmsg_print("ERROR reading: %s", g_strerror(errno));
return;
}
} while(nbytes > 0);
@@ -375,7 +361,7 @@ static int ssh_open_remote_connection(const char* hostname, const unsigned int p
if (fd == -1) {
fd = open(fifo, O_WRONLY | O_CREAT, 0640);
if (fd == -1) {
- errmsg_print("Error creating output file: %s\n", g_strerror(errno));
+ errmsg_print("Error creating output file: %s", g_strerror(errno));
return EXIT_FAILURE;
}
}
@@ -445,12 +431,12 @@ static int list_interfaces(void)
static int list_dlts(const char *interface)
{
if (!interface) {
- printf("ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return EXIT_FAILURE;
}
if (g_strcmp0(interface, SSH_EXTCAP_INTERFACE)) {
- printf("ERROR: interface must be %s\n", SSH_EXTCAP_INTERFACE);
+ errmsg_print("ERROR: interface must be %s", SSH_EXTCAP_INTERFACE);
return EXIT_FAILURE;
}
@@ -531,12 +517,12 @@ static int list_config(char *interface, unsigned int remote_port)
char* ipfilter;
if (!interface) {
- g_fprintf(stderr, "ERROR: No interface specified.\n");
+ errmsg_print("ERROR: No interface specified.");
return EXIT_FAILURE;
}
if (g_strcmp0(interface, SSH_EXTCAP_INTERFACE)) {
- errmsg_print("ERROR: interface must be %s\n", SSH_EXTCAP_INTERFACE);
+ errmsg_print("ERROR: interface must be %s", SSH_EXTCAP_INTERFACE);
return EXIT_FAILURE;
}
@@ -732,7 +718,7 @@ int main(int argc, char **argv)
case OPT_REMOTE_PORT:
remote_port = (unsigned int)strtoul(optarg, NULL, 10);
if (remote_port > 65535 || remote_port == 0) {
- printf("Invalid port: %s\n", optarg);
+ errmsg_print("Invalid port: %s", optarg);
return EXIT_FAILURE;
}
break;
@@ -775,7 +761,7 @@ int main(int argc, char **argv)
remote_capture_bin = g_strdup(optarg);
break;
- case OPT_EXTCAP_FILTER:
+ case OPT_CAPTURE_FILTER:
if (extcap_filter)
g_free(extcap_filter);
extcap_filter = g_strdup(optarg);
@@ -793,17 +779,17 @@ int main(int argc, char **argv)
case ':':
/* missing option argument */
- printf("Option '%s' requires an argument\n", argv[optind - 1]);
+ errmsg_print("Option '%s' requires an argument", argv[optind - 1]);
break;
default:
- printf("Invalid option: %s\n", argv[optind - 1]);
+ errmsg_print("Invalid option: %s", argv[optind - 1]);
return EXIT_FAILURE;
}
}
if (optind != argc) {
- printf("Unexpected extra option: %s\n", argv[optind]);
+ errmsg_print("Unexpected extra option: %s", argv[optind]);
return EXIT_FAILURE;
}
@@ -820,7 +806,7 @@ int main(int argc, char **argv)
result = WSAStartup(MAKEWORD(1,1), &wsaData);
if (result != 0) {
if (verbose)
- errmsg_print("ERROR: WSAStartup failed with error: %d\n", result);
+ errmsg_print("ERROR: WSAStartup failed with error: %d", result);
return 1;
}
#endif /* _WIN32 */
@@ -829,11 +815,11 @@ int main(int argc, char **argv)
char* filter;
int ret = 0;
if (!fifo) {
- errmsg_print("ERROR: No FIFO or file specified\n");
+ errmsg_print("ERROR: No FIFO or file specified");
return 1;
}
if (g_strcmp0(interface, SSH_EXTCAP_INTERFACE)) {
- errmsg_print("ERROR: invalid interface\n");
+ errmsg_print("ERROR: invalid interface");
return 1;
}
if (!remote_host) {