2007-07-13 17:49:44 +02:00
|
|
|
--- doc/ip-cref.tex
|
|
|
|
+++ doc/ip-cref.tex 2007/07/12 09:13:47
|
|
|
|
@@ -1322,7 +1322,11 @@
|
|
|
|
If it is not given, Linux uses the value selected with \verb|sysctl|
|
2007-01-16 00:17:45 +01:00
|
|
|
variable \verb|net/ipv4/tcp_reordering|.
|
|
|
|
|
|
|
|
+\item \verb|fragtimeout NUMBER|
|
2007-07-13 17:49:44 +02:00
|
|
|
|
2007-01-16 00:17:45 +01:00
|
|
|
+--- \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|
|
|
|
|
|
2007-07-13 17:49:44 +02:00
|
|
|
--- ip/iproute.c
|
|
|
|
+++ ip/iproute.c 2007/07/12 09:47:17
|
|
|
|
@@ -38,6 +38,14 @@
|
2007-01-16 00:17:45 +01:00
|
|
|
#define RTAX_RTTVAR RTAX_HOPS
|
|
|
|
#endif
|
2007-07-13 17:49:44 +02:00
|
|
|
|
2007-01-16 00:17:45 +01:00
|
|
|
+#ifndef RTAX_FRAG_TIMEOUT
|
2007-07-13 17:49:44 +02:00
|
|
|
+#define RTAX_FRAG_TIMEOUT (RTAX_FEATURES+1)
|
2007-01-16 00:17:45 +01:00
|
|
|
+#endif
|
2007-07-13 17:49:44 +02:00
|
|
|
+
|
2007-01-16 00:17:45 +01:00
|
|
|
+#if RTAX_MAX < RTAX_FRAG_TIMEOUT
|
|
|
|
+#undef RTAX_MAX
|
|
|
|
+#define RTAX_MAX RTAX_FRAG_TIMEOUT
|
|
|
|
+#endif
|
|
|
|
|
2007-07-13 17:49:44 +02:00
|
|
|
static const char *mx_names[RTAX_MAX+1] = {
|
|
|
|
[RTAX_MTU] = "mtu",
|
|
|
|
@@ -51,6 +59,7 @@
|
|
|
|
[RTAX_HOPLIMIT] = "hoplimit",
|
|
|
|
[RTAX_INITCWND] = "initcwnd",
|
|
|
|
[RTAX_FEATURES] = "features",
|
|
|
|
+ [RTAX_FRAG_TIMEOUT]="fragtimeout"
|
|
|
|
};
|
2007-01-16 00:17:45 +01:00
|
|
|
static void usage(void) __attribute__((noreturn));
|
|
|
|
|
2007-07-13 17:49:44 +02:00
|
|
|
@@ -71,9 +80,9 @@
|
2007-01-16 00:17:45 +01:00
|
|
|
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 NUMBER ] [ rttvar NUMBER ]\n");
|
|
|
|
+ fprintf(stderr, " [ rtt NUMBER ] [ rttvar NUMBER ] [ fragtimeout seconds]\n");
|
2007-07-13 17:49:44 +02:00
|
|
|
fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
|
|
|
|
- fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ]\n");
|
|
|
|
+ fprintf(stderr, " [ ssthresh NUMBER ] [ reordering NUMBER] [ realms REALM ]\n");
|
2007-01-16 00:17:45 +01:00
|
|
|
fprintf(stderr, "TYPE := [ unicast | local | broadcast | multicast | throw |\n");
|
|
|
|
fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
|
|
|
|
fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
|
2007-07-13 17:49:44 +02:00
|
|
|
@@ -789,6 +798,14 @@
|
2007-01-16 00:17:45 +01:00
|
|
|
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
|
2007-07-13 17:49:44 +02:00
|
|
|
} else if (strcmp(*argv, "rtt") == 0) {
|
|
|
|
unsigned rtt;
|
2007-01-16 00:17:45 +01:00
|
|
|
NEXT_ARG();
|
2007-07-13 17:49:44 +02:00
|
|
|
--- man/man8/ip.8
|
|
|
|
+++ man/man8/ip.8 2007/07/12 09:26:54
|
2007-01-16 00:17:45 +01:00
|
|
|
@@ -1095,6 +1095,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
|