]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
add quickack option to ip route
authorCong Wang <amwang@redhat.com>
Sat, 15 Jun 2013 01:39:19 +0000 (09:39 +0800)
committerStephen Hemminger <stephen@networkplumber.org>
Thu, 20 Jun 2013 15:35:21 +0000 (08:35 -0700)
This patch adds quickack option to enable/disable TCP quick ack
mode for per-route.

Cc: Stephen Hemminger <stephen@networkplumber.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Cong Wang <amwang@redhat.com>
include/linux/rtnetlink.h
ip/iproute.c
man/man8/ip-route.8.in

index 93370bd2c871e3912208529f34ae324cf872e5ef..248fdd3f6ad4a6445a0936439360a2e2856aa30a 100644 (file)
@@ -386,6 +386,8 @@ enum {
 #define RTAX_RTO_MIN RTAX_RTO_MIN
        RTAX_INITRWND,
 #define RTAX_INITRWND RTAX_INITRWND
+       RTAX_QUICKACK,
+#define RTAX_QUICKACK RTAX_QUICKACK
        __RTAX_MAX
 };
 
index adef7740872cb41df8214dd5ca595828030dbde7..46710b2b160563d9b449bf47308c909ca52e8604 100644 (file)
@@ -52,6 +52,7 @@ static const char *mx_names[RTAX_MAX+1] = {
        [RTAX_FEATURES] = "features",
        [RTAX_RTO_MIN]  = "rto_min",
        [RTAX_INITRWND] = "initrwnd",
+       [RTAX_QUICKACK] = "quickack",
 };
 static void usage(void) __attribute__((noreturn));
 
@@ -79,6 +80,7 @@ static void usage(void)
        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 ] [ initrwnd NUMBER ]\n");
+       fprintf(stderr, "           [ quickack BOOL ]\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");
@@ -86,6 +88,7 @@ static void usage(void)
        fprintf(stderr, "NHFLAGS := [ onlink | pervasive ]\n");
        fprintf(stderr, "RTPROTO := [ kernel | boot | static | NUMBER ]\n");
        fprintf(stderr, "TIME := NUMBER[s|ms]\n");
+       fprintf(stderr, "BOOL := [1|0]\n");
        exit(-1);
 }
 
@@ -885,6 +888,14 @@ static int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
                        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, "quickack") == 0) {
+                       unsigned quickack;
+                       NEXT_ARG();
+                       if (get_unsigned(&quickack, *argv, 0))
+                               invarg("\"quickack\" value is invalid\n", *argv);
+                       if (quickack != 1 && quickack != 0)
+                               invarg("\"quickack\" value should be 0 or 1\n", *argv);
+                       rta_addattr32(mxrta, sizeof(mxbuf), RTAX_QUICKACK, quickack);
                } else if (matches(*argv, "rttvar") == 0) {
                        unsigned win;
                        NEXT_ARG();
index 2c35a97303c4a09c51f4bbf2a11c86a764767496..01997fa0bb54da246265c2517c6796005fb20416 100644 (file)
@@ -111,6 +111,8 @@ replace " } "
 .IR NUMBER " ] [ "
 .B  initrwnd
 .IR NUMBER " ]"
+.B  quickack
+.IR BOOL " ]"
 
 .ti -8
 .IR TYPE " := [ "
@@ -400,6 +402,10 @@ the initial receive window size for connections to this destination.
 Actual window size is this value multiplied by the MSS of the connection.
 The default value is zero, meaning to use Slow Start value.
 
+.TP
+.BI quickack " BOOL " "(3.11+ only)"
+Enable or disable quick ack for connections to this destination.
+
 .TP
 .BI advmss " NUMBER " "(2.3.15+ only)"
 the MSS ('Maximal Segment Size') to advertise to these