[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