- route metric support (Natanael Copa)
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 7 Oct 2008 17:00:58 +0000 (17:00 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Tue, 7 Oct 2008 17:00:58 +0000 (17:00 -0000)
  Adds about 75b

include/usage.h
networking/libiproute/iproute.c

index fa7ac3bf7cbdda988f9cc405a6e6a129acdf780f..8f6013ede6f8ef4d1ea4591d6d0fa9654978330c 100644 (file)
        "                       [oif STRING]  [tos TOS]\n" \
        "iproute { add | del | change | append | replace | monitor } ROUTE\n" \
        "                       SELECTOR := [root PREFIX] [match PREFIX] [proto RTPROTO]\n" \
-       "                       ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]" \
+       "                       ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]\n" \
+       "                               [metric METRIC]" \
 
 #define iprule_trivial_usage \
        "{[list | add | del] RULE}"
index bdccad69ded3c07afd86aecabe500457fd13eee5..a7ec66c7f974ffe9321e6cb8bf5f2db730cf4f85 100644 (file)
@@ -291,7 +291,7 @@ static int iproute_modify(int cmd, unsigned flags, char **argv)
 {
        static const char keywords[] ALIGN1 =
                "src\0""via\0""mtu\0""lock\0""protocol\0"USE_FEATURE_IP_RULE("table\0")
-               "dev\0""oif\0""to\0";
+               "dev\0""oif\0""to\0""metric\0";
        enum {
                ARG_src,
                ARG_via,
@@ -300,7 +300,8 @@ static int iproute_modify(int cmd, unsigned flags, char **argv)
 USE_FEATURE_IP_RULE(ARG_table,)
                ARG_dev,
                ARG_oif,
-               ARG_to
+               ARG_to,
+               ARG_metric,
        };
        enum {
                gw_ok = 1 << 0,
@@ -387,6 +388,12 @@ USE_FEATURE_IP_RULE(ARG_table,)
                } else if (arg == ARG_dev || arg == ARG_oif) {
                        NEXT_ARG();
                        d = *argv;
+               } else if (arg == ARG_metric) {
+                       uint32_t metric;
+                       NEXT_ARG();
+                       if (get_u32(&metric, *argv, 0))
+                               invarg(*argv, "metric");
+                       addattr32(&req.n, sizeof(req), RTA_PRIORITY, metric);
                } else {
                        int type;
                        inet_prefix dst;