File iproute2-2.6.25-fragtimeout.diff of Package iproute2

--- doc/ip-cref.tex
+++ doc/ip-cref.tex	2008/05/13 08:23:52
@@ -1315,7 +1315,11 @@
     If it is not given, Linux uses the value selected with \verb|sysctl|
     variable \verb|net/ipv4/tcp_reordering|.
 
+\item \verb|fragtimeout NUMBER|
 
+--- \threeonly How many seconds to wait before expiring IP fragments
+    from the destination of this route. If not specified Linux uses
+    the \verb|sysctl| variable \verb|net/ipv4/ip_frag_timeout|.
 
 \item \verb|nexthop NEXTHOP|
 
--- ip/iproute.c
+++ ip/iproute.c	2008/05/13 08:28:32
@@ -37,6 +37,14 @@
 #define RTAX_RTTVAR RTAX_HOPS
 #endif
 
+#ifndef RTAX_FRAG_TIMEOUT
+#define RTAX_FRAG_TIMEOUT (RTAX_FEATURES+1)
+#endif
+
+#if RTAX_MAX < RTAX_FRAG_TIMEOUT
+#undef RTAX_MAX
+#define RTAX_MAX RTAX_FRAG_TIMEOUT
+#endif
 
 static const char *mx_names[RTAX_MAX+1] = {
 	[RTAX_MTU]	= "mtu",
@@ -51,6 +59,7 @@
 	[RTAX_INITCWND] = "initcwnd",
 	[RTAX_FEATURES] = "features",
 	[RTAX_RTO_MIN]	= "rto_min",
+	[RTAX_FRAG_TIMEOUT]="fragtimeout"
 };
 static void usage(void) __attribute__((noreturn));
 
@@ -70,9 +79,9 @@
 	fprintf(stderr, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
 	fprintf(stderr, "NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
 	fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
-	fprintf(stderr, "           [ rtt TIME ] [ rttvar TIME ]\n");
+	fprintf(stderr, "           [ rtt TIME ] [ rttvar TIME ] [ fragtimeout seconds ]\n");
 	fprintf(stderr, "           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
-	fprintf(stderr, "           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
+	fprintf(stderr, "           [ ssthresh NUMBER ] [ reordering NUMBER ] [ realms REALM ]\n");
 	fprintf(stderr, "           [ rto_min TIME ]\n");
 	fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
 	fprintf(stderr, "          unreachable | prohibit | blackhole | nat ]\n");
@@ -780,6 +789,14 @@
 				invarg("\"reordering\" value is invalid\n", *argv);
 			rta_addattr32(mxrta, sizeof(mxbuf), RTAX_REORDERING, reord);
 #endif
+#ifdef RTAX_FRAG_TIMEOUT
+		} else if (strcmp(*argv, "fragtimeout") == 0) {
+			unsigned timeout;
+			NEXT_ARG();
+			if (get_unsigned(&timeout, *argv, 0))
+				invarg("\"timeout\" value is invalid\n", *argv);
+			rta_addattr32(mxrta, sizeof(mxbuf), RTAX_FRAG_TIMEOUT, timeout);
+#endif
 		} else if (strcmp(*argv, "rtt") == 0) {
 			unsigned rtt;
 			NEXT_ARG();
--- man/man8/ip.8
+++ man/man8/ip.8	2008/05/13 08:25:08
@@ -1487,6 +1487,14 @@
 .BR "net/ipv4/tcp_reordering" .
 
 .TP
+.BI fragtimeout " NUMBER " "(SuSE extension currently)"
+Fragment timeout in seconds for IP fragments arriving from this distination.
+If it is not given, Linux uses the value selected with
+.B sysctl
+variable
+.BR "net/ipv4/ipfrag_timeout" .
+
+.TP
 .BI nexthop " NEXTHOP"
 the nexthop of a multipath route.
 .I NEXTHOP
openSUSE Build Service is sponsored by