]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
Add initrwnd to iproute2
authorlaurent chavey <chavey@google.com>
Tue, 15 Dec 2009 13:05:15 +0000 (13:05 +0000)
committerStephen Hemminger <stephen.hemminger@vyatta.com>
Thu, 4 Mar 2010 00:19:47 +0000 (16:19 -0800)
Add initrwnd option parsing to iproute. This option uses the new
rtnetlink init_rcvwnd to set the TCP initial receive window size
advertised by passive and active TCP connections.

Signed-off-by: Laurent Chavey <chavey@google.com>
doc/ip-cref.tex
ip/iproute.c

index 7bb562e113b4a9aadca503491c3b9345721dcc75..056e3bf590cd301e4e5791778b9820d96856546c 100644 (file)
@@ -1336,6 +1336,13 @@ peers are allowed to send to us.
     MSS (``Maximal Segment Size'') for same connection. The default is
     zero, meaning to use the values specified in~\cite{RFC2414}.
 
++\item \verb|initrwnd NUMBER|
++--- [2.6.33+ only] Initial receive window size for connections to 
++    this destination. The actual window size is this value multiplied
++    by the MSS (''Maximal Segment Size'') of the connection. The default
++    value is zero, meaning to use Slow Start value.
 \item \verb|nexthop NEXTHOP|
 
 --- the nexthop of a multipath route. \verb|NEXTHOP| is a complex value
index 1d73ab8764ede2f1d94bee2e0558d7db99cf9a4a..8252e182ece197ae85e0107d726d39ba32c1b248 100644 (file)
@@ -46,6 +46,7 @@ static const char *mx_names[RTAX_MAX+1] = {
        [RTAX_INITCWND] = "initcwnd",
        [RTAX_FEATURES] = "features",
        [RTAX_RTO_MIN]  = "rto_min",
+       [RTAX_INITRWND] = "initrwnd",
 };
 static void usage(void) __attribute__((noreturn));
 
@@ -68,7 +69,7 @@ static void usage(void)
        fprintf(stderr, "           [ rtt TIME ] [ rttvar TIME ] [reordering NUMBER ]\n");
        fprintf(stderr, "           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
        fprintf(stderr, "           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
-       fprintf(stderr, "           [ rto_min TIME ] [ hoplimit NUMBER ] \n");
+       fprintf(stderr, "           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]\n");
        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");
@@ -844,6 +845,16 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
                        if (get_unsigned(&win, *argv, 0))
                                invarg("\"initcwnd\" value is invalid\n", *argv);
                        rta_addattr32(mxrta, sizeof(mxbuf), RTAX_INITCWND, win);
+               } else if (matches(*argv, "initrwnd") == 0) {
+                       unsigned win;
+                       NEXT_ARG();
+                       if (strcmp(*argv, "lock") == 0) {
+                               mxlock |= (1<<RTAX_INITRWND);
+                               NEXT_ARG();
+                       }
+                       if (get_unsigned(&win, *argv, 0))
+                               invarg("\"initrwnd\" value is invalid\n", *argv);
+                       rta_addattr32(mxrta, sizeof(mxbuf), RTAX_INITRWND, win);
                } else if (matches(*argv, "rttvar") == 0) {
                        unsigned win;
                        NEXT_ARG();