[netfilter-cvslog] r3391 - in trunk/nfsim: core/ipv4 kernelenv kernelenv/include tools

rusty at netfilter.org rusty at netfilter.org
Wed Dec 15 10:01:24 CET 2004


Author: rusty at netfilter.org
Date: 2004-12-15 10:01:23 +0100 (Wed, 15 Dec 2004)
New Revision: 3391

Modified:
   trunk/nfsim/core/ipv4/ipv4.c
   trunk/nfsim/core/ipv4/ipv4.h
   trunk/nfsim/kernelenv/include/kernelenv.h
   trunk/nfsim/kernelenv/kernelenv.c
   trunk/nfsim/tools/gen_err.c
   trunk/nfsim/tools/gen_ip.c
   trunk/nfsim/tools/gen_ip.h
Log:
Fix TTL printing (it could be 255 or 254); turn dump_data into a generic dump_flags.


Modified: trunk/nfsim/core/ipv4/ipv4.c
===================================================================
--- trunk/nfsim/core/ipv4/ipv4.c	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/core/ipv4/ipv4.c	2004-12-15 09:01:23 UTC (rev 3391)
@@ -105,8 +105,10 @@
 {
 	if (!skb->dst &&
 	    ip_route_input(skb, skb->nh.iph->daddr, skb->nh.iph->saddr,
-	                        skb->nh.iph->tos, skb->dev))
+			   skb->nh.iph->tos, skb->dev)) {
+		kfree_skb(skb);
 		return -1;
+	}
 		
 	return dst_input(skb);
 }
@@ -682,7 +684,7 @@
 	return ptr;
 }
 
-static char *describe(char *ptr, int len, struct iphdr *iph, bool dump_data)
+static char *describe(char *ptr, int len, struct iphdr *iph, int dump_flags)
 {
 	/* the length of the packet reported by the ipv4 header */
 	int iplen;
@@ -710,7 +712,7 @@
 		ptr += sprintf(ptr, "DF ");
 	if (ntohs(iph->frag_off) & IP_MF)
 		ptr += sprintf(ptr, "MF ");
-	if (iph->ttl != 255)
+	if (dump_flags & __NFSIM_DUMP_TTL)
 		ptr += sprintf(ptr, "TTL=%i ", iph->ttl);
 
 	ptr += sprintf(ptr, "%u.%u.%u.%u %u.%u.%u.%u ",
@@ -755,7 +757,7 @@
 			ptr += sprintf(ptr, "CONTAINS ");
 			ptr = describe(ptr,
 				       iplen - sizeof(struct icmphdr),
-				       (struct iphdr *)(icmph + 1), dump_data);
+				       (struct iphdr *)(icmph + 1), dump_flags);
 		}
 		break;
 
@@ -860,7 +862,7 @@
 			goto out;
 		}
 
-		if (dump_data)
+		if (dump_flags & __NFSIM_DUMP_DATA)
 			ptr = print_data(ptr, (char *)tcph + tcph->doff*4,
 					 iplen - tcph->doff*4);
 		break;
@@ -881,6 +883,6 @@
 {
 	static char ipv4_pbuf[1024];
 
-	describe(ipv4_pbuf, skb->len, skb->nh.iph, skb->__dump_data);
+	describe(ipv4_pbuf, skb->len, skb->nh.iph, skb->__dump_flags);
 	return ipv4_pbuf;
 }

Modified: trunk/nfsim/core/ipv4/ipv4.h
===================================================================
--- trunk/nfsim/core/ipv4/ipv4.h	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/core/ipv4/ipv4.h	2004-12-15 09:01:23 UTC (rev 3391)
@@ -633,5 +633,7 @@
 
 inline unsigned short ip_compute_csum(unsigned char * buff, int len);
 
+#define __NFSIM_DUMP_TTL	0x01
+#define __NFSIM_DUMP_DATA	0x02
 
 #endif /* __HAVE_IPV4_H */

Modified: trunk/nfsim/kernelenv/include/kernelenv.h
===================================================================
--- trunk/nfsim/kernelenv/include/kernelenv.h	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/kernelenv/include/kernelenv.h	2004-12-15 09:01:23 UTC (rev 3391)
@@ -438,8 +438,8 @@
 				*end;
 
 
-	/* Do we dump data? */
-	int			__dump_data;
+	/* What fields to we print for this packet? */
+	int			__dump_flags;
 };
 
 struct skb_shared_info {

Modified: trunk/nfsim/kernelenv/kernelenv.c
===================================================================
--- trunk/nfsim/kernelenv/kernelenv.c	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/kernelenv/kernelenv.c	2004-12-15 09:01:23 UTC (rev 3391)
@@ -181,7 +181,7 @@
 	new->h.raw  = old->h.raw  + offset;
 	new->nh.raw = old->nh.raw + offset;
 
-	__copy(__dump_data);
+	__copy(__dump_flags);
 }
 
 #undef __copy

Modified: trunk/nfsim/tools/gen_err.c
===================================================================
--- trunk/nfsim/tools/gen_err.c	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/tools/gen_err.c	2004-12-15 09:01:23 UTC (rev 3391)
@@ -86,7 +86,7 @@
 	struct packet orig, packet;
 	int len = 28;
 	char *interface = NULL;
-	bool dump_data;
+	int dump_flags = 0;
 
 	if (argc > 1 && strncmp(argv[1], "IF=", 3) == 0) {
 		interface = argv[1] + 3;
@@ -100,13 +100,13 @@
 		argv++;
 	}
 
-	if (!parse_packet(&orig, argc-3, argv+3, &dump_data))
+	if (!parse_packet(&orig, argc-3, argv+3, &dump_flags))
 		return false;
 
 	if (!create_icmp(&packet, &orig, len, argv[1], argv[2], argv[3]))
 		return false;
 
-	return send_packet(&packet, interface, dump_data);
+	return send_packet(&packet, interface, dump_flags);
 }
 
 static void gen_err_help(int argc, char **argv)

Modified: trunk/nfsim/tools/gen_ip.c
===================================================================
--- trunk/nfsim/tools/gen_ip.c	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/tools/gen_ip.c	2004-12-15 09:01:23 UTC (rev 3391)
@@ -360,7 +360,7 @@
 
 /* SRCPT DSTPT FLAGS [SEQ=] [ACK=] [WIN=] [OPT=] [DATA] */
 static int
-parse_tcp(struct packet *packet, int datalen, char *args[], bool *dump_data)
+parse_tcp(struct packet *packet, int datalen, char *args[], int *dump_flags)
 {
 	int spt, dpt, window = 0;
 	u_int16_t tcplen = sizeof(packet->u.tcph) + datalen;
@@ -418,12 +418,11 @@
 		packet->u.tcph.doff = sizeof(struct tcphdr) / 4;
 	}
 
-	*dump_data = false;
 	if (args[3] && strcmp(args[3], "DATA") == 0) {
 		/* Remaining args are  DATA for packet. */
 		char *data, **arg;
 
-		*dump_data = true;
+		*dump_flags |= __NFSIM_DUMP_DATA;
 		data = (void *)&packet->u.tcph + packet->u.tcph.doff * 4;
 		for (arg = args+4; *arg; arg++) {
 			data = copy_printable(data, *arg);
@@ -479,7 +478,7 @@
 }
 
 bool send_packet(const struct packet *packet, const char *interface,
-		 bool dump_data)
+		 int dump_flags)
 {
 	struct sk_buff *skb;
 	int len;
@@ -499,7 +498,7 @@
 
 	skb->protocol = skb->mac.ethernet->h_proto;
 
-	skb->__dump_data = dump_data;
+	skb->__dump_flags = dump_flags;
 
 	if (interface) {
 		struct net_device *dev;
@@ -600,7 +599,7 @@
 
 /* SRCIP DSTIP DATALEN PROTOCOL ... */
 bool parse_packet(struct packet *packet, int argc, char *argv[],
-		  bool *dump_data)
+		  int *dump_flags)
 {
 	int tos = 0, mf = 0, df = 0, ttl = 255, len, datalen;
 	u_int16_t fragoff = 0, fraglen = 0;
@@ -672,6 +671,7 @@
 				argv[1]+4);
 			return false;
 		}
+		*dump_flags |= __NFSIM_DUMP_TTL;
 		argc--;
 		argv++;
 	}
@@ -687,7 +687,7 @@
 		len = parse_icmp(packet, datalen, argv + 5);
 		break;
 	case IPPROTO_TCP:
-		len = parse_tcp(packet, datalen, argv + 5, dump_data);
+		len = parse_tcp(packet, datalen, argv + 5, dump_flags);
 		break;
 	case IPPROTO_UDP:
 		len = parse_udp(packet, datalen, argv + 5);
@@ -725,7 +725,7 @@
 static bool gen_ip(int argc, char *argv[])
 {
 	struct packet packet;
-	bool dump_data;
+	int dump_flags = 0;
 	char *interface = NULL;
 
 	if (argc > 5 && strncmp(argv[1], "IF=", 3) == 0) {
@@ -734,10 +734,10 @@
 		argv++;
 	}
 
-	if (!parse_packet(&packet, argc, argv, &dump_data))
+	if (!parse_packet(&packet, argc, argv, &dump_flags))
 		return false;
 
-	return send_packet(&packet, interface, dump_data);
+	return send_packet(&packet, interface, dump_flags);
 }
 
 static void init(void)

Modified: trunk/nfsim/tools/gen_ip.h
===================================================================
--- trunk/nfsim/tools/gen_ip.h	2004-12-15 08:59:21 UTC (rev 3390)
+++ trunk/nfsim/tools/gen_ip.h	2004-12-15 09:01:23 UTC (rev 3391)
@@ -18,11 +18,11 @@
 
 /* Fill in packet, given arguments. */
 bool parse_packet(struct packet *packet, int argc, char *argv[],
-		  bool *dump_data);
+		  int *dump_flags);
 
 /* Send filled in packet. */
 bool send_packet(const struct packet *packet, const char *interface,
-		 bool dump_data);
+		 int dump_flags);
 
 /* Convert string to number in this range: -1 for fail. */
 int string_to_number(const char *s, int min, int max);




More information about the netfilter-cvslog mailing list