svn commit: r210618 - projects/sv/sys/net

Attilio Rao attilio at FreeBSD.org
Thu Jul 29 17:01:06 UTC 2010


Author: attilio
Date: Thu Jul 29 17:01:06 2010
New Revision: 210618
URL: http://svn.freebsd.org/changeset/base/210618

Log:
  Make the debugging a conditional stub, introducing some convenience macros
  and improving the style in the surrounding lines.

Modified:
  projects/sv/sys/net/netdump_client.c

Modified: projects/sv/sys/net/netdump_client.c
==============================================================================
--- projects/sv/sys/net/netdump_client.c	Thu Jul 29 17:00:41 2010	(r210617)
+++ projects/sv/sys/net/netdump_client.c	Thu Jul 29 17:01:06 2010	(r210618)
@@ -85,9 +85,21 @@
 #include "opt_netdump.h"
 #include "opt_ddb.h"
 
-/* Verbosity, 0 - 2 */
-#ifndef NETDUMP_DEBUG
-#define NETDUMP_DEBUG 0
+#ifdef NETDUMP_DEBUG
+#ifdef	NETDDEBUG(f, ...)		printf((f), ## __VA_ARGS__)
+#define	NETDDEBUG_IF(i, f, ...)		if_printf((i), (f), ## __VA_ARGS__)
+#if NETDUMP_DEBUG > 1
+#ifdef	NETDDEBUGV(f, ...)		printf((f), ## __VA_ARGS__)
+#define	NETDDEBUGV_IF(i, f, ...)	if_printf((i), (f), ## __VA_ARGS__)
+#else
+#define	NETDDEBUGV(f, ...)
+#define	NETDDEBUGV_IF(i, f, ...)
+#endif
+#else
+#define	NETDDEBUG(f, ...)
+#define	NETDDEBUG_IF(i, f, ...)
+#define	NETDDEBUGV(f, ...)
+#define	NETDDEBUGV_IF(i, f, ...)
 #endif
 
 #define NETDUMP_PORT 20023      /* server udp port number for data */
@@ -643,20 +655,15 @@ netdump_pkt_in(struct ifnet *ifp, struct
 
 	/* Ethernet processing */
 
-	if (NETDUMP_DEBUG >= 2) {
-		if_printf(ifp, "Processing packet...\n");
-	}
+	NETDDEBUGV_IF("Processing packet...\n");
 
 	if ((m->m_flags & M_PKTHDR) == 0) {
-		if (NETDUMP_DEBUG)
-			if_printf(ifp, "discard frame w/o packet header\n");
+		NETDDEBUG_IF(ifp, "discard frame w/o packet header\n");
 		goto done;
 	}
 	if (m->m_len < ETHER_HDR_LEN) {
-		if (NETDUMP_DEBUG)
-			if_printf(ifp, "discard frome w/o leading ethernet "
-				  "header (len %u pkt len %u)\n", m->m_len,
-				  m->m_pkthdr.len);
+		NETDDEBUG_IF(ifp, "discard frome w/o leading ethernet "
+		    "header (len %u pkt len %u)\n", m->m_len, m->m_pkthdr.len);
 		goto done;
 	}
 	if (m->m_flags & M_HASFCS) {
@@ -667,9 +674,8 @@ netdump_pkt_in(struct ifnet *ifp, struct
 	m->m_pkthdr.header = eh;
 	etype = ntohs(eh->ether_type);
 	if ((ifp->if_nvlans && m_tag_locate(m, MTAG_VLAN, MTAG_VLAN_TAG, NULL))
-			|| etype == ETHERTYPE_VLAN) {
-		if (NETDUMP_DEBUG)
-			if_printf(ifp, "ignoring vlan packets\n");
+	    || etype == ETHERTYPE_VLAN) {
+		NETDDEBUG_IF(ifp, "ignoring vlan packets\n");
 		goto done;
 	}
 	/* XXX: Probably should check if we're the recipient MAC address */
@@ -684,9 +690,8 @@ netdump_pkt_in(struct ifnet *ifp, struct
 			nd_handle_ip(&m);
 			break;
 		default:
-			if (NETDUMP_DEBUG)
-				if_printf(ifp, "dropping unknown ethertype "
-					  "%hu\n", etype);
+			NETDDEBUG_IF(ifp, "dropping unknown ethertype %hu\n",
+			    etype);
 			break;
 	}
 
@@ -725,20 +730,16 @@ nd_handle_ip(struct mbuf **mb)
 
 	/* IP processing */
 
-	if (NETDUMP_DEBUG >= 2) {
-		printf("nd_handle_ip: Processing IP packet...\n");
-	}
+	NETDDEBUGV("nd_handle_ip: Processing IP packet...\n");
 
 	if (m->m_pkthdr.len < sizeof(struct ip)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: dropping packet too small for IP "
-					"header\n");
+		NETDDEBUG("nd_handle_ip: dropping packet too small for IP "
+		    "header\n");
 		return;
 	}
 	if (m->m_len < sizeof(struct ip) &&
-			(*mb = m = m_pullup(m, sizeof(struct ip))) == NULL) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: m_pullup failed\n");
+	    (*mb = m = m_pullup(m, sizeof(struct ip))) == NULL) {
+		NETDDEBUG("nd_handle_ip: m_pullup failed\n");
 		return;
 	}
 
@@ -746,23 +747,19 @@ nd_handle_ip(struct mbuf **mb)
 
 	/* IP version */
 	if (ip->ip_v != IPVERSION) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Bad IP version %d\n", ip->ip_v);
+		NETDDEBUG("nd_handle_ip: Bad IP version %d\n", ip->ip_v);
 		return;
 	}
 
 	/* Header length */
 	hlen = ip->ip_hl << 2;
 	if (hlen < sizeof(struct ip)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Bad IP header length (%hu)\n",
-					hlen);
+		NETDDEBUG("nd_handle_ip: Bad IP header length (%hu)\n", hlen);
 		return;
 	}
 	if (hlen > m->m_len) {
 		if ((*mb = m = m_pullup(m, hlen)) == NULL) {
-			if (NETDUMP_DEBUG)
-				printf("nd_handle_ip: m_pullup failed\n");
+			NETDDEBUG("nd_handle_ip: m_pullup failed\n");
 			return;
 		}
 		ip = mtod(m, struct ip *);
@@ -771,30 +768,24 @@ nd_handle_ip(struct mbuf **mb)
 	/* Checksum */
 	if (m->m_pkthdr.csum_flags & CSUM_IP_CHECKED) {
 		if (!(m->m_pkthdr.csum_flags & CSUM_IP_VALID)) {
-			if (NETDUMP_DEBUG)
-				printf("nd_handle_ip: Bad IP checksum\n");
+			NETDDEBUG("nd_handle_ip: Bad IP checksum\n");
 			return;
 		}
-	} else {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: HW didn't check IP cksum\n");
-	}
+	} else
+		NETDDEBUG("nd_handle_ip: HW didn't check IP cksum\n");
 
 	/* Convert fields to host byte order */
 	ip->ip_len = ntohs(ip->ip_len);
 	if (ip->ip_len < hlen) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: IP packet smaller (%hu) than "
-			       "header (%hu)\n", ip->ip_len, hlen);
+		NETDDEBUG("nd_handle_ip: IP packet smaller (%hu) than "
+		    "header (%hu)\n", ip->ip_len, hlen);
 		return;
 	}
 	ip->ip_off = ntohs(ip->ip_off);
 
 	if (m->m_pkthdr.len < ip->ip_len) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: IP packet bigger (%hu) than "
-			       "ethernet packet (%hu)\n", ip->ip_len,
-			       m->m_pkthdr.len);
+		NETDDEBUG("nd_handle_ip: IP packet bigger (%hu) than "
+		    "ethernet packet (%hu)\n", ip->ip_len, m->m_pkthdr.len);
 		return;
 	}
 	if (m->m_pkthdr.len > ip->ip_len) {
@@ -815,28 +806,24 @@ nd_handle_ip(struct mbuf **mb)
 
 	/* Check that the source is the server's IP */
 	if (ip->ip_src.s_addr != nd_server.s_addr) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Drop packet not from server\n");
+		NETDDEBUG("nd_handle_ip: Drop packet not from server\n");
 		return;
 	}
 
 	/* Check if the destination IP is ours */
 	if (ip->ip_dst.s_addr != nd_client.s_addr) {
-		if (NETDUMP_DEBUG >= 2)
-			printf("nd_handle_ip: Drop packet not to our IP\n");
+		NETDDEBUGV("nd_handle_ip: Drop packet not to our IP\n");
 		return;
 	}
 
 	if (ip->ip_p != IPPROTO_UDP) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Drop non-UDP packet\n");
+		NETDDEBUG("nd_handle_ip: Drop non-UDP packet\n");
 		return;
 	}
 
 	/* Let's not deal with fragments */
 	if (ip->ip_off & (IP_MF | IP_OFFMASK)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Drop fragmented packet\n");
+		NETDDEBUG("nd_handle_ip: Drop fragmented packet\n");
 		return;
 	}
 	/* UDP custom is to have packet length not include IP header */
@@ -847,26 +834,22 @@ nd_handle_ip(struct mbuf **mb)
 
 	/* Get IP and UDP headers together, along with the netdump packet */
 	if (m->m_pkthdr.len <
-			sizeof(struct udpiphdr) + sizeof(struct netdump_ack)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: Ignoring small packet\n");
+	    sizeof(struct udpiphdr) + sizeof(struct netdump_ack)) {
+		NETDDEBUG("nd_handle_ip: Ignoring small packet\n");
 		return;
 	}
 	if (m->m_len < sizeof(struct udpiphdr) + sizeof(struct netdump_ack) &&
-			(*mb = m = m_pullup(m, sizeof(struct udpiphdr) +
-				sizeof(struct netdump_ack))) == NULL) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_ip: m_pullup failed\n");
+	    (*mb = m = m_pullup(m, sizeof(struct udpiphdr) +
+	    sizeof(struct netdump_ack))) == NULL) {
+		NETDDEBUG("nd_handle_ip: m_pullup failed\n");
 		return;
 	}
 	udp = mtod(m, struct udpiphdr *);
 
-	if (NETDUMP_DEBUG >= 2)
-		printf("nd_handle_ip: Processing packet...");
+	NETDDEBUG("nd_handle_ip: Processing packet...");
 
 	if (ntohs(udp->ui_u.uh_dport) != NETDUMP_ACKPORT) {
-		if (NETDUMP_DEBUG)
-			printf("not on the netdump port.\n");
+		NETDDEBUG("not on the netdump port.\n");
 		return;
 	}
 
@@ -924,31 +907,27 @@ nd_handle_arp(struct mbuf **mb)
 	struct ether_addr dst;
 
 	if (m->m_len < sizeof(struct arphdr) && ((*mb = m = m_pullup(m,
-				sizeof(struct arphdr))) == NULL)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: runt packet: m_pullup failed\n");
+	    sizeof(struct arphdr))) == NULL)) {
+		NETDDEBUG("nd_handle_arp: runt packet: m_pullup failed\n");
 		return;
 	}
 	ah = mtod(m, struct arphdr *);
 
 	if (ntohs(ah->ar_hrd) != ARPHRD_ETHER) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: unknown hardware address fmt "
-			       "0x%2D)\n", (unsigned char *)&ah->ar_hrd, "");
+		NETDDEBUG("nd_handle_arp: unknown hardware address fmt "
+		    "0x%2D)\n", (unsigned char *)&ah->ar_hrd, "");
 		return;
 	}
 
 	if (ntohs(ah->ar_pro) != ETHERTYPE_IP) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: Drop ARP for unknown "
-					"protocol %d\n", ntohs(ah->ar_pro));
+		NETDDEBUG("nd_handle_arp: Drop ARP for unknown "
+		    "protocol %d\n", ntohs(ah->ar_pro));
 		return;
 	}
 
 	req_len = arphdr_len2(ifp->if_addrlen, sizeof(struct in_addr));
 	if (m->m_len < req_len && (*mb = m = m_pullup(m, req_len)) == NULL) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: runt packet: m_pullup failed\n");
+		NETDDEBUG("nd_handle_arp: runt packet: m_pullup failed\n");
 		return;
 	}
 	ah = mtod(m, struct arphdr *);
@@ -960,8 +939,7 @@ nd_handle_arp(struct mbuf **mb)
 	myaddr = nd_client;
 
 	if (!bcmp(ar_sha(ah), enaddr, ifp->if_addrlen)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: ignoring ARP from myself\n");
+		NETDDEBUG("nd_handle_arp: ignoring ARP from myself\n");
 		return;
 	}
 
@@ -973,9 +951,8 @@ nd_handle_arp(struct mbuf **mb)
 	}
 
 	if (!bcmp(ar_sha(ah), ifp->if_broadcastaddr, ifp->if_addrlen)) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: ignoring ARP from broadcast "
-					"address\n");
+		NETDDEBUG("nd_handle_arp: ignoring ARP from broadcast "
+		    "address\n");
 		return;
 	}
 
@@ -983,30 +960,26 @@ nd_handle_arp(struct mbuf **mb)
 		if (isaddr.s_addr != nd_server.s_addr) {
 			char buf[INET_ADDRSTRLEN];
 			inet_ntoa_r(isaddr, buf);
-			if (NETDUMP_DEBUG)
-				printf("nd_handle_arp: ignoring ARP reply from "
-				       "%s (not netdump server)\n", buf);
+			NETDDEBUG("nd_handle_arp: ignoring ARP reply from "
+			    "%s (not netdump server)\n", buf);
 			return;
 		}
 		bcopy(ar_sha(ah), nd_server_mac.octet,
 				min(ah->ar_hln, ETHER_ADDR_LEN));
 		have_server_mac = 1;
-		if (NETDUMP_DEBUG)
-			printf("\nnd_handle_arp: Got server MAC address %6D\n",
-					nd_server_mac.octet, ":");
+		NETDDEBUG("\nnd_handle_arp: Got server MAC address %6D\n",
+		    nd_server_mac.octet, ":");
 		return;
 	}
 
 	if (op != ARPOP_REQUEST) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: Ignoring non-request/non-reply "
-					"ARP\n");
+		NETDDEBUG("nd_handle_arp: Ignoring non-request/non-reply "
+		    "ARP\n");
 		return;
 	}
 
 	if (itaddr.s_addr != nd_client.s_addr) {
-		if (NETDUMP_DEBUG)
-			printf("nd_handle_arp: ignoring ARP not to our IP\n");
+		NETDDEBUG("nd_handle_arp: ignoring ARP not to our IP\n");
 		return;
 	}
 
@@ -1052,9 +1025,8 @@ netdump_dumper(void *priv, void *virtual
 
 	(void)priv;
 
-	if (NETDUMP_DEBUG >= 2)
-		printf("netdump_dumper(%p, %p, %"PRIxPTR", %"PRIx64", %zu)\n", priv, virtual,
-				physical, (uint64_t)offset, length);
+	NETDDEBUGV("netdump_dumper(%p, %p, %"PRIxPTR", %"PRIx64", %zu)\n",
+	    priv, virtual, physical, (uint64_t)offset, length);
 
 	if (length > sizeof(buf))
 		return ENOSPC;
@@ -1438,18 +1410,17 @@ netdump_modevent(module_t mod, int type,
 
 		netdump_config_defaults();
 
-		if (NETDUMP_DEBUG) {
-			if (!nd_nic) {
-				printf("netdump: Warning: No default interface "
-						"found. Manual configuration "
-						"required.\n");
-			} else {
-				char buf[INET_ADDRSTRLEN];
-				inet_ntoa_r(nd_client, buf);
-				printf("netdump: Using interface %s; client IP "
-						"%s\n", nd_nic->if_xname, buf);
-			}
+#ifdef NETDUMP_DEBUG
+		if (!nd_nic)
+			printf("netdump: Warning: No default interface "
+			    "found. Manual configuration required.\n");
+		else {
+			char buf[INET_ADDRSTRLEN];
+			inet_ntoa_r(nd_client, buf);
+			printf("netdump: Using interface %s; client IP "
+			    "%s\n", nd_nic->if_xname, buf);
 		}
+#endif
 
 		printf("netdump initialized\n");
 		break;


More information about the svn-src-projects mailing list