naccyde / rpms / iproute

Forked from rpms/iproute 10 months ago
Clone

Blame SOURCES/0016-link_gre6-Fix-for-changing-tclass-flowlabel.patch

be97f7
From 449517f7769dde4905564ce17e126bfd4e1f7147 Mon Sep 17 00:00:00 2001
be97f7
From: Phil Sutter <psutter@redhat.com>
be97f7
Date: Fri, 6 Oct 2017 17:27:09 +0200
be97f7
Subject: [PATCH] link_gre6: Fix for changing tclass/flowlabel
be97f7
be97f7
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1487486
be97f7
Upstream Status: iproute2.git commit e7fefb3214b5a
be97f7
be97f7
commit e7fefb3214b5a1ed030cab9df513560c503a9851
be97f7
Author: Phil Sutter <phil@nwl.cc>
be97f7
Date:   Fri Sep 1 16:08:08 2017 +0200
be97f7
be97f7
    link_gre6: Fix for changing tclass/flowlabel
be97f7
be97f7
    When trying to change tclass or flowlabel of a GREv6 tunnel which has
be97f7
    the respective value set already, the code accidentally bitwise OR'ed
be97f7
    the old and the new value, leading to unexpected results. Fix this by
be97f7
    clearing the relevant bits of flowinfo variable prior to assigning the
be97f7
    new value.
be97f7
be97f7
    Fixes: af89576d7a8c4 ("iproute2: GRE over IPv6 tunnel support.")
be97f7
    Signed-off-by: Phil Sutter <phil@nwl.cc>
be97f7
---
be97f7
 ip/link_gre6.c | 2 ++
be97f7
 1 file changed, 2 insertions(+)
be97f7
be97f7
diff --git a/ip/link_gre6.c b/ip/link_gre6.c
be97f7
index 76416b2..fe3ab64 100644
be97f7
--- a/ip/link_gre6.c
be97f7
+++ b/ip/link_gre6.c
be97f7
@@ -282,6 +282,7 @@ get_failed:
be97f7
 			else {
be97f7
 				if (get_u8(&uval, *argv, 16))
be97f7
 					invarg("invalid TClass", *argv);
be97f7
+				flowinfo &= ~IP6_FLOWINFO_TCLASS;
be97f7
 				flowinfo |= htonl((__u32)uval << 20) & IP6_FLOWINFO_TCLASS;
be97f7
 				flags &= ~IP6_TNL_F_USE_ORIG_TCLASS;
be97f7
 			}
be97f7
@@ -297,6 +298,7 @@ get_failed:
be97f7
 					invarg("invalid Flowlabel", *argv);
be97f7
 				if (uval > 0xFFFFF)
be97f7
 					invarg("invalid Flowlabel", *argv);
be97f7
+				flowinfo &= ~IP6_FLOWINFO_FLOWLABEL;
be97f7
 				flowinfo |= htonl(uval) & IP6_FLOWINFO_FLOWLABEL;
be97f7
 				flags &= ~IP6_TNL_F_USE_ORIG_FLOWLABEL;
be97f7
 			}
be97f7
-- 
be97f7
1.8.3.1
be97f7