From: Stephen Hemminger <shemminger@vyatta.com>
To: Andreas Henriksson <andreas@fatal.se>
Cc: netdev@vger.kernel.org, kaber@trash.net
Subject: Re: [PATCH] iproute2: drop equalize support.
Date: Fri, 27 Mar 2009 11:29:47 -0700 [thread overview]
Message-ID: <20090327112947.27a5ae7a@nehalam> (raw)
In-Reply-To: <20090314163735.GA9762@amd64.fatal.se>
On Sat, 14 Mar 2009 17:37:35 +0100
Andreas Henriksson <andreas@fatal.se> wrote:
> Hello Stephen and netdev people!
>
> Currently you can configure "equalize" and it looks all fine and dandy.
> The kernel has the interface defined, but apparently there's never actually
> been any implementation for it (only a never merged patch in the 2.4 era).
>
> I'm suggesting to drop the code to give any potential users of this feature
> the benefit of receiving a proper error message. I see it unlikely that
> this will be implemented in the near future, but if it ever happens
> reviving the iproute2 side should be as easy as git revert this patch.
>
> For more details see http://bugs.debian.org/149897
>
> Regards,
> Andreas Henriksson
>
>
> diff --git a/debian/rules b/debian/rules
> index 132455f..4d825ca 100755
> diff --git a/doc/ip-cref.tex b/doc/ip-cref.tex
> index bb4eb78..b333842 100644
> --- a/doc/ip-cref.tex
> +++ b/doc/ip-cref.tex
> @@ -1380,13 +1380,6 @@ database.
> even if it does not match any interface prefix. One application of this
> option may be found in~\cite{IP-TUNNELS}.
>
> -\item \verb|equalize|
> -
> ---- allow packet by packet randomization on multipath routes.
> -Without this modifier, the route will be frozen to one selected
> -nexthop, so that load splitting will only occur on per-flow base.
> -\verb|equalize| only works if the kernel is patched.
> -
>
> \end{itemize}
>
> diff --git a/ip/iproute.c b/ip/iproute.c
> index 6a2ea05..529159b 100644
> --- a/ip/iproute.c
> +++ b/ip/iproute.c
> @@ -67,9 +67,9 @@ 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, "INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...\n");
> + fprintf(stderr, "INFO_SPEC := NH OPTIONS [ nexthop NH ]...\n");
> fprintf(stderr, "NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS\n");
> - fprintf(stderr, "OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]\n");
> + fprintf(stderr, "OPTIONS := [ mtu NUMBER ] [ advmss NUMBER ]\n");
> fprintf(stderr, " [ rtt TIME ] [ rttvar TIME ]\n");
> fprintf(stderr, " [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]\n");
> fprintf(stderr, " [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]\n");
> @@ -78,7 +78,6 @@ static void usage(void)
> fprintf(stderr, " unreachable | prohibit | blackhole | nat ]\n");
> fprintf(stderr, "TABLE_ID := [ local | main | default | all | NUMBER ]\n");
> fprintf(stderr, "SCOPE := [ host | link | global | NUMBER ]\n");
> - fprintf(stderr, "FLAGS := [ equalize ]\n");
> fprintf(stderr, "MP_ALGO := { rr | drr | random | wrandom }\n");
> fprintf(stderr, "NHFLAGS := [ onlink | pervasive ]\n");
> fprintf(stderr, "RTPROTO := [ kernel | boot | static | NUMBER ]\n");
> @@ -387,8 +386,6 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
> fprintf(fp, "onlink ");
> if (r->rtm_flags & RTNH_F_PERVASIVE)
> fprintf(fp, "pervasive ");
> - if (r->rtm_flags & RTM_F_EQUALIZE)
> - fprintf(fp, "equalize ");
> if (r->rtm_flags & RTM_F_NOTIFY)
> fprintf(fp, "notify ");
>
> @@ -428,9 +425,7 @@ int print_route(const struct sockaddr_nl *who, struct nlmsghdr *n, void *arg)
> PRTFL(FAST, "fastroute");
> PRTFL(NOTIFY, "notify");
> PRTFL(TPROXY, "proxy");
> -#ifdef RTCF_EQUALIZE
> - PRTFL(EQUALIZE, "equalize");
> -#endif
> +
> if (flags)
> fprintf(fp, "%s%x> ", first ? "<" : "", flags);
> if (tb[RTA_CACHEINFO]) {
> @@ -859,9 +854,6 @@ int iproute_modify(int cmd, unsigned flags, int argc, char **argv)
> addattr32(&req.n, sizeof(req), RTA_FLOW, realm);
> } else if (strcmp(*argv, "onlink") == 0) {
> req.r.rtm_flags |= RTNH_F_ONLINK;
> - } else if (matches(*argv, "equalize") == 0 ||
> - strcmp(*argv, "eql") == 0) {
> - req.r.rtm_flags |= RTM_F_EQUALIZE;
> } else if (strcmp(*argv, "nexthop") == 0) {
> nhs_ok = 1;
> break;
> diff --git a/man/man8/ip.8 b/man/man8/ip.8
> index e948d03..e4a57ff 100644
> --- a/man/man8/ip.8
> +++ b/man/man8/ip.8
> @@ -163,7 +163,7 @@ replace " | " monitor " } "
> .IR METRIC " ]"
>
> .ti -8
> -.IR INFO_SPEC " := " "NH OPTIONS FLAGS" " ["
> +.IR INFO_SPEC " := " "NH OPTIONS" " ["
> .B nexthop
> .IR NH " ] ..."
>
> @@ -177,7 +177,7 @@ replace " | " monitor " } "
> .IR NUMBER " ] " NHFLAGS
>
> .ti -8
> -.IR OPTIONS " := " FLAGS " [ "
> +.IR OPTIONS " := [ "
> .B mtu
> .IR NUMBER " ] [ "
> .B advmss
> @@ -213,10 +213,6 @@ throw " | " unreachable " | " prohibit " | " blackhole " | " nat " ]"
> .IR NUMBER " ]"
>
> .ti -8
> -.IR FLAGS " := [ "
> -.BR equalize " ]"
> -
> -.ti -8
> .IR NHFLAGS " := [ "
> .BR onlink " | " pervasive " ]"
>
> @@ -1582,14 +1578,6 @@ to assign (or not to assign) protocol tags.
> pretend that the nexthop is directly attached to this link,
> even if it does not match any interface prefix.
>
> -.TP
> -.B equalize
> -allow packet by packet randomization on multipath routes.
> -Without this modifier, the route will be frozen to one selected
> -nexthop, so that load splitting will only occur on per-flow base.
> -.B equalize
> -only works if the kernel is patched.
> -
> .SS ip route delete - delete route
>
> .B ip route del
applied, i think this was part of the aborted effort at more complex
multipath support. If it ever returns, we can re-enable it.
next prev parent reply other threads:[~2009-03-27 18:30 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-14 16:37 [PATCH] iproute2: drop equalize support Andreas Henriksson
2009-03-27 18:29 ` Stephen Hemminger [this message]
2009-03-27 18:37 ` Patrick McHardy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090327112947.27a5ae7a@nehalam \
--to=shemminger@vyatta.com \
--cc=andreas@fatal.se \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).