From: Stephen Hemminger Date: Fri, 12 Oct 2007 21:38:30 +0000 (-0700) Subject: remove support for IP multipath X-Git-Tag: v2.6.23-071016~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=550967eecf0c5fa5c306a57ff00407d4fa67c74f;p=thirdparty%2Fiproute2.git remove support for IP multipath IP multipath routing was so buggy that it was dropped from the current kernel. Signed-off-by: Stephen Hemminger --- diff --git a/ip/iproute.c b/ip/iproute.c index 77bdf83c4..d9fc44ba2 100644 --- a/ip/iproute.c +++ b/ip/iproute.c @@ -28,7 +28,6 @@ #include #include #include -#include #include "rt_names.h" #include "utils.h" @@ -68,7 +67,6 @@ static void usage(void) fprintf(stderr, "NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]\n"); fprintf(stderr, " [ table TABLE_ID ] [ proto RTPROTO ]\n"); fprintf(stderr, " [ scope SCOPE ] [ metric METRIC ]\n"); - fprintf(stderr, " [ mpath MP_ALGO ]\n"); 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"); @@ -112,14 +110,6 @@ static struct inet_prefix msrc; } filter; -static char *mp_alg_names[IP_MP_ALG_MAX+1] = { - [IP_MP_ALG_NONE] = "none", - [IP_MP_ALG_RR] = "rr", - [IP_MP_ALG_DRR] = "drr", - [IP_MP_ALG_RANDOM] = "random", - [IP_MP_ALG_WRANDOM] = "wrandom" -}; - static int flush_update(void) { if (rtnl_send(&rth, filter.flushb, filter.flushp) < 0) { @@ -361,14 +351,6 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg) fprintf(fp, "tos %s ", rtnl_dsfield_n2a(r->rtm_tos, b1, sizeof(b1))); } - if (tb[RTA_MP_ALGO]) { - __u32 mp_alg = *(__u32*) RTA_DATA(tb[RTA_MP_ALGO]); - if (mp_alg > IP_MP_ALG_NONE) { - fprintf(fp, "mpath %s ", - mp_alg < IP_MP_ALG_MAX ? mp_alg_names[mp_alg] : "unknown"); - } - } - if (tb[RTA_GATEWAY] && filter.rvia.bitlen != host_len) { fprintf(fp, "via %s ", format_host(r->rtm_family, @@ -906,18 +888,6 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv) strcmp(*argv, "oif") == 0) { NEXT_ARG(); d = *argv; - } else if (strcmp(*argv, "mpath") == 0 || - strcmp(*argv, "mp") == 0) { - int i; - __u32 mp_alg = IP_MP_ALG_NONE; - - NEXT_ARG(); - for (i = 1; i < ARRAY_SIZE(mp_alg_names); i++) - if (strcmp(*argv, mp_alg_names[i]) == 0) - mp_alg = i; - if (mp_alg == IP_MP_ALG_NONE) - invarg("\"mpath\" value is invalid\n", *argv); - addattr_l(&req.n, sizeof(req), RTA_MP_ALGO, &mp_alg, sizeof(mp_alg)); } else { int type; inet_prefix dst;