From patchwork Wed Nov 14 15:29:26 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Dichtel X-Patchwork-Id: 198944 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 4AEBD2C007A for ; Thu, 15 Nov 2012 02:28:45 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964804Ab2KNP2j (ORCPT ); Wed, 14 Nov 2012 10:28:39 -0500 Received: from 33.106-14-84.ripe.coltfrance.com ([84.14.106.33]:34810 "EHLO proxy.6wind.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932713Ab2KNP2i (ORCPT ); Wed, 14 Nov 2012 10:28:38 -0500 Received: from schnaps.dev.6wind.com (unknown [10.16.0.249]) by proxy.6wind.com (Postfix) with ESMTPS id EFC1A5A3E1; Wed, 14 Nov 2012 16:28:36 +0100 (CET) Received: from root by schnaps.dev.6wind.com with local (Exim 4.80) (envelope-from ) id 1TYeuD-0003Nf-TQ; Wed, 14 Nov 2012 16:29:33 +0100 From: Nicolas Dichtel To: shemminger@vyatta.com Cc: netdev@vger.kernel.org, Nicolas Dichtel Subject: [PATCH iproute2 3/3] ip/ip6tunnel: fix update of tclass and flowlabel Date: Wed, 14 Nov 2012 16:29:26 +0100 Message-Id: <1352906966-12932-3-git-send-email-nicolas.dichtel@6wind.com> X-Mailer: git-send-email 1.7.12 In-Reply-To: <1352906966-12932-1-git-send-email-nicolas.dichtel@6wind.com> References: <1352906966-12932-1-git-send-email-nicolas.dichtel@6wind.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- 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 {