netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] iproute2: drop equalize support.
@ 2009-03-14 16:37 Andreas Henriksson
  2009-03-27 18:29 ` Stephen Hemminger
  0 siblings, 1 reply; 3+ messages in thread
From: Andreas Henriksson @ 2009-03-14 16:37 UTC (permalink / raw)
  To: shemminger; +Cc: netdev, kaber

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] iproute2: drop equalize support.
  2009-03-14 16:37 [PATCH] iproute2: drop equalize support Andreas Henriksson
@ 2009-03-27 18:29 ` Stephen Hemminger
  2009-03-27 18:37   ` Patrick McHardy
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Hemminger @ 2009-03-27 18:29 UTC (permalink / raw)
  To: Andreas Henriksson; +Cc: netdev, kaber

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.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] iproute2: drop equalize support.
  2009-03-27 18:29 ` Stephen Hemminger
@ 2009-03-27 18:37   ` Patrick McHardy
  0 siblings, 0 replies; 3+ messages in thread
From: Patrick McHardy @ 2009-03-27 18:37 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Andreas Henriksson, netdev

Stephen Hemminger wrote:
> applied, i think this was part of the aborted effort at more complex
> multipath support. If it ever returns, we can re-enable it.

Its actually a lot older than that, it used to be an external patch
in the 2.4 era for per-packet multipath routing. I don't think
anyone will miss it :)



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-03-27 18:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-14 16:37 [PATCH] iproute2: drop equalize support Andreas Henriksson
2009-03-27 18:29 ` Stephen Hemminger
2009-03-27 18:37   ` Patrick McHardy

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).