From d51650f7621361d56b24eba141dc3f06042c1836 Mon Sep 17 00:00:00 2001
From: George Neville-Neil <gnn@freebsd.org>
Date: Tue, 28 Feb 2017 20:27:27 +0000
Subject: [PATCH] First cut at making debug mode run time selectable

---
 gtests/net/packetdrill/checksum_test.c         | 2 ++
 gtests/net/packetdrill/config.c                | 6 ++++++
 gtests/net/packetdrill/logging.h               | 4 ++--
 gtests/net/packetdrill/packet_parser.c         | 4 ++--
 gtests/net/packetdrill/packet_parser_test.c    | 2 ++
 gtests/net/packetdrill/packet_socket_pcap.c    | 2 +-
 gtests/net/packetdrill/packet_to_string_test.c | 2 ++
 gtests/net/packetdrill/packetdrill.c           | 2 ++
 gtests/net/packetdrill/run_packet.c            | 2 +-
 gtests/net/packetdrill/run_system_call.c       | 4 ++--
 10 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/gtests/net/packetdrill/checksum_test.c b/gtests/net/packetdrill/checksum_test.c
index 14b9d7ea..fb802dbc 100644
--- a/gtests/net/packetdrill/checksum_test.c
+++ b/gtests/net/packetdrill/checksum_test.c
@@ -32,6 +32,8 @@
 #include "tcp.h"
 #include "udplite.h"
 
+int debug_logging=0;
+
 static void test_tcp_udp_v4_checksum(void)
 {
 	u8 data[] __aligned(4) = {
diff --git a/gtests/net/packetdrill/config.c b/gtests/net/packetdrill/config.c
index 480bde55..2c29cbc1 100644
--- a/gtests/net/packetdrill/config.c
+++ b/gtests/net/packetdrill/config.c
@@ -59,6 +59,7 @@ enum option_codes {
 	OPT_NON_FATAL,
 	OPT_DRY_RUN,
 	OPT_VERBOSE = 'v',	/* our only single-letter option */
+	OPT_DEBUG,
 };
 
 /* Specification of command line options for getopt_long(). */
@@ -87,6 +88,7 @@ struct option options[] = {
 	{ "non_fatal",		.has_arg = true,  NULL, OPT_NON_FATAL },
 	{ "dry_run",		.has_arg = false, NULL, OPT_DRY_RUN },
 	{ "verbose",		.has_arg = false, NULL, OPT_VERBOSE },
+	{ "debug",		.has_arg = false, NULL, OPT_DEBUG },
 	{ NULL },
 };
 
@@ -117,6 +119,7 @@ void show_usage(void)
 		"\t[--wire_server_dev=<eth_dev_name>]\n"
 		"\t[--dry_run]\n"
 		"\t[--verbose|-v]\n"
+		"\t[--debug]\n"
 		"\tscript_path ...\n");
 }
 
@@ -466,6 +469,9 @@ static void process_option(int opt, char *optarg, struct config *config,
 	case OPT_VERBOSE:
 		config->verbose = true;
 		break;
+	case OPT_DEBUG:
+		debug_logging = true;
+		break;
 	default:
 		show_usage();
 		exit(EXIT_FAILURE);
diff --git a/gtests/net/packetdrill/logging.h b/gtests/net/packetdrill/logging.h
index 2544c59c..53a2c601 100644
--- a/gtests/net/packetdrill/logging.h
+++ b/gtests/net/packetdrill/logging.h
@@ -28,11 +28,11 @@
 #include "types.h"
 
 /* Enable this to get debug logging. */
-#define DEBUG_LOGGING 0
+extern int debug_logging;
 
 /* Use a gcc variadic macro to conditionally compile debug printing. */
 #define DEBUGP(...)				\
-	if (DEBUG_LOGGING) {			\
+	if (debug_logging) {			\
 		fprintf(stdout,  __VA_ARGS__);	\
 		fflush(stdout);			\
 	}
diff --git a/gtests/net/packetdrill/packet_parser.c b/gtests/net/packetdrill/packet_parser.c
index 6599777d..056b1e0e 100644
--- a/gtests/net/packetdrill/packet_parser.c
+++ b/gtests/net/packetdrill/packet_parser.c
@@ -232,7 +232,7 @@ static int parse_ipv4(struct packet *packet, u8 *header_start, u8 *packet_end,
 	p += ip_header_bytes;
 	assert(p <= packet_end);
 
-	if (DEBUG_LOGGING) {
+	if (debug_logging) {
 		char src_string[ADDR_STR_LEN];
 		char dst_string[ADDR_STR_LEN];
 		struct ip_address src_ip, dst_ip;
@@ -304,7 +304,7 @@ static int parse_ipv6(struct packet *packet, u8 *header_start, u8 *packet_end,
 	p += ip_header_bytes;
 	assert(p <= packet_end);
 
-	if (DEBUG_LOGGING) {
+	if (debug_logging) {
 		char src_string[ADDR_STR_LEN];
 		char dst_string[ADDR_STR_LEN];
 		struct ip_address src_ip, dst_ip;
diff --git a/gtests/net/packetdrill/packet_parser_test.c b/gtests/net/packetdrill/packet_parser_test.c
index 6eb6b0bd..07ef9592 100644
--- a/gtests/net/packetdrill/packet_parser_test.c
+++ b/gtests/net/packetdrill/packet_parser_test.c
@@ -29,6 +29,8 @@
 #include <stdlib.h>
 #include <string.h>
 
+int debug_logging=0;
+
 static void test_parse_sctp_ipv4_packet(void)
 {
 	/* A SCTP/IPv4 packet. */
diff --git a/gtests/net/packetdrill/packet_socket_pcap.c b/gtests/net/packetdrill/packet_socket_pcap.c
index 27d51f73..1e2bd210 100644
--- a/gtests/net/packetdrill/packet_socket_pcap.c
+++ b/gtests/net/packetdrill/packet_socket_pcap.c
@@ -303,7 +303,7 @@ int packet_socket_receive(struct packet_socket *psock,
 	DEBUGP("pcap_next_ex: caplen:%u len:%u offset:%d\n",
 	       pkt_header->caplen, pkt_header->len, psock->pcap_offset);
 
-	if (DEBUG_LOGGING) {
+	if (debug_logging) {
 		/* Dump a hex dump of packet sniffed by pcap. */
 		char *hex = NULL;
 		hex_dump(pkt_data, pkt_header->caplen, &hex);
diff --git a/gtests/net/packetdrill/packet_to_string_test.c b/gtests/net/packetdrill/packet_to_string_test.c
index 965395ba..560aa24d 100644
--- a/gtests/net/packetdrill/packet_to_string_test.c
+++ b/gtests/net/packetdrill/packet_to_string_test.c
@@ -31,6 +31,8 @@
 #include "packet_parser.h"
 #include "logging.h"
 
+int debug_logging=0;
+
 static void test_sctp_ipv4_packet_to_string(void)
 {
 	/* An IPv4/SCTP packet. */
diff --git a/gtests/net/packetdrill/packetdrill.c b/gtests/net/packetdrill/packetdrill.c
index aef05c71..574bf0b4 100644
--- a/gtests/net/packetdrill/packetdrill.c
+++ b/gtests/net/packetdrill/packetdrill.c
@@ -41,6 +41,8 @@
 #include "system.h"
 #include "wire_server.h"
 
+int debug_logging=0;
+
 static void run_init_scripts(struct config *config)
 {
 	char *cp1, *cp2, *scripts, *error;
diff --git a/gtests/net/packetdrill/run_packet.c b/gtests/net/packetdrill/run_packet.c
index f03a4db2..30638f1a 100644
--- a/gtests/net/packetdrill/run_packet.c
+++ b/gtests/net/packetdrill/run_packet.c
@@ -328,7 +328,7 @@ static struct socket *handle_listen_for_script_packet(
 		socket->live.remote_isn = ntohl(packet->tcp->seq);
 	}
 
-	if (DEBUG_LOGGING) {
+	if (debug_logging) {
 		char local_string[ADDR_STR_LEN];
 		char remote_string[ADDR_STR_LEN];
 		DEBUGP("live: local: %s.%d\n",
diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c
index 1ec42605..6972d661 100644
--- a/gtests/net/packetdrill/run_system_call.c
+++ b/gtests/net/packetdrill/run_system_call.c
@@ -1841,7 +1841,7 @@ static int run_syscall_accept(struct state *state,
 	}
 
 	for (socket = state->sockets; socket != NULL; socket = socket->next) {
-		if (DEBUG_LOGGING) {
+		if (debug_logging) {
 			char remote_string[ADDR_STR_LEN];
 			DEBUGP("socket state=%d script addr: %s:%d\n",
 			       socket->state,
@@ -1886,7 +1886,7 @@ static int run_syscall_accept(struct state *state,
 	socket->live.fd			= live_accepted_fd;
 	socket->script.fd		= script_accepted_fd;
 
-	if (DEBUG_LOGGING) {
+	if (debug_logging) {
 		char local_string[ADDR_STR_LEN];
 		char remote_string[ADDR_STR_LEN];
 		DEBUGP("live: local: %s.%d\n",
-- 
GitLab