Patchwork [iproute2,3/3] ip/ip6tunnel: fix update of tclass and flowlabel

login
register
mail settings
Submitter Nicolas Dichtel
Date Nov. 14, 2012, 3:29 p.m.
Message ID <1352906966-12932-3-git-send-email-nicolas.dichtel@6wind.com>
Download mbox | patch
Permalink /patch/198944/
State Accepted
Delegated to: stephen hemminger
Headers show

Comments

Nicolas Dichtel - Nov. 14, 2012, 3:29 p.m.
When tclass or flowlabel field were updated, we only performed an OR with the
new value. For example, it was not possible to reset tclass:
  ip -6 tunnel change ip6tnl2 tclass 0

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
 ip/ip6tunnel.c | 2 ++
 1 file changed, 2 insertions(+)
stephen hemminger - Nov. 16, 2012, 4:16 p.m.
On Wed, 14 Nov 2012 16:29:26 +0100
Nicolas Dichtel <nicolas.dichtel@6wind.com> wrote:

> When tclass or flowlabel field were updated, we only performed an OR with the
> new value. For example, it was not possible to reset tclass:
>   ip -6 tunnel change ip6tnl2 tclass 0
> 
> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
> ---
>  ip/ip6tunnel.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
> index 7aaac61..fcc9f33 100644
> --- a/ip/ip6tunnel.c
> +++ b/ip/ip6tunnel.c
> @@ -173,6 +173,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm *p)
>  			   matches(*argv, "dsfield") == 0) {
>  			__u8 uval;
>  			NEXT_ARG();
> +			p->flowinfo &= ~IP6_FLOWINFO_TCLASS;
>  			if (strcmp(*argv, "inherit") == 0)
>  				p->flags |= IP6_TNL_F_USE_ORIG_TCLASS;
>  			else {
> @@ -185,6 +186,7 @@ static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm *p)
>  			   strcmp(*argv, "fl") == 0) {
>  			__u32 uval;
>  			NEXT_ARG();
> +			p->flowinfo &= ~IP6_FLOWINFO_FLOWLABEL;
>  			if (strcmp(*argv, "inherit") == 0)
>  				p->flags |= IP6_TNL_F_USE_ORIG_FLOWLABEL;
>  			else {

All applied thanks.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/ip/ip6tunnel.c b/ip/ip6tunnel.c
index 7aaac61..fcc9f33 100644
--- a/ip/ip6tunnel.c
+++ b/ip/ip6tunnel.c
@@ -173,6 +173,7 @@  static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm *p)
 			   matches(*argv, "dsfield") == 0) {
 			__u8 uval;
 			NEXT_ARG();
+			p->flowinfo &= ~IP6_FLOWINFO_TCLASS;
 			if (strcmp(*argv, "inherit") == 0)
 				p->flags |= IP6_TNL_F_USE_ORIG_TCLASS;
 			else {
@@ -185,6 +186,7 @@  static int parse_args(int argc, char **argv, int cmd, struct ip6_tnl_parm *p)
 			   strcmp(*argv, "fl") == 0) {
 			__u32 uval;
 			NEXT_ARG();
+			p->flowinfo &= ~IP6_FLOWINFO_FLOWLABEL;
 			if (strcmp(*argv, "inherit") == 0)
 				p->flags |= IP6_TNL_F_USE_ORIG_FLOWLABEL;
 			else {