From: Rick Jones <[EMAIL PROTECTED]>
Date: Fri, 31 Aug 2007 11:11:37 -0700

> At the risk of showing my ignorance (what me worry about that?-) I 
> presume this is then an interface expecting to take-in jiffies?  That 
> means the user has to know the value of HZ which can be (IIRC) one of 
> three different values?

The iproute2 changes might look something like this:

--- ./include/linux/rtnetlink.h.orig    2007-08-31 11:55:30.000000000 -0700
+++ ./include/linux/rtnetlink.h 2007-08-31 11:52:22.000000000 -0700
@@ -351,6 +351,8 @@ enum
 #define RTAX_INITCWND RTAX_INITCWND
        RTAX_FEATURES,
 #define RTAX_FEATURES RTAX_FEATURES
+       RTAX_RTO_MIN,
+#define RTAX_RTO_MIN RTAX_RTO_MIN
        __RTAX_MAX
 };
 
--- ./ip/iproute.c.orig 2007-08-31 11:55:30.000000000 -0700
+++ ./ip/iproute.c      2007-08-31 11:53:29.000000000 -0700
@@ -51,6 +51,7 @@ static const char *mx_names[RTAX_MAX+1] 
        [RTAX_HOPLIMIT] = "hoplimit",
        [RTAX_INITCWND] = "initcwnd",
        [RTAX_FEATURES] = "features",
+       [RTAX_RTO_MIN]  = "rto_min",
 };
 static void usage(void) __attribute__((noreturn));
 
@@ -74,6 +75,7 @@ static void usage(void)
        fprintf(stderr, "           [ rtt NUMBER ] [ rttvar NUMBER ]\n");
        fprintf(stderr, "           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd 
NUMBER ]\n");
        fprintf(stderr, "           [ ssthresh NUMBER ] [ realms REALM ]\n");
+       fprintf(stderr, "           [ rto_min 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");
@@ -520,7 +522,8 @@ int print_route(const struct sockaddr_nl
                        if (mxlock & (1<<i))
                                fprintf(fp, " lock");
 
-                       if (i != RTAX_RTT && i != RTAX_RTTVAR)
+                       if (i != RTAX_RTT && i != RTAX_RTTVAR &&
+                           i != RTAX_RTO_MIN)
                                fprintf(fp, " %u", 
*(unsigned*)RTA_DATA(mxrta[i]));
                        else {
                                unsigned val = *(unsigned*)RTA_DATA(mxrta[i]);
@@ -528,7 +531,7 @@ int print_route(const struct sockaddr_nl
                                val *= 1000;
                                if (i == RTAX_RTT)
                                        val /= 8;
-                               else
+                               else if (i == RTAX_RTTVAR)
                                        val /= 4;
                                if (val >= hz)
                                        fprintf(fp, " %ums", val/hz);
@@ -803,6 +806,15 @@ int iproute_modify(int cmd, unsigned fla
                        if (get_unsigned(&rtt, *argv, 0))
                                invarg("\"rtt\" value is invalid\n", *argv);
                        rta_addattr32(mxrta, sizeof(mxbuf), RTAX_RTT, rtt);
+               } else if (strcmp(*argv, "rto_min") == 0) {
+                       unsigned rto_min;
+                       NEXT_ARG();
+                       mxlock |= (1<<RTAX_RTO_MIN);
+                       if (get_unsigned(&rto_min, *argv, 0))
+                               invarg("\"rto_min\" value is invalid\n",
+                                      *argv);
+                       rta_addattr32(mxrta, sizeof(mxbuf), RTAX_RTO_MIN,
+                                     rto_min);
                } else if (matches(*argv, "window") == 0) {
                        unsigned win;
                        NEXT_ARG();
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to