Red Hat Bugzilla – Bug 1487486
flowlabel for ip6gre can't be set as exptected with ip
Last modified: 2018-04-10 10:31:54 EDT
Description of problem: flowlabel for ip6gre can't be set as exptected with ip Version-Release number of selected component (if applicable): 4.11.0-28.el7a.x86_64 How reproducible: Always Steps to Reproduce: 1. set flowlabel for ip6gre as 0x33333 2. set flowlabel for ip6gre as 0x11111 Actual results: flowlabel is still 0x33333 even set 0x11111 Expected results: flowlabel is the value set Additional info: [root@hp-dl388g8-05 ip6gre]# uname -a Linux hp-dl388g8-05.rhts.eng.pek2.redhat.com 4.11.0-28.el7a.x86_64 #1 SMP Sat Aug 26 21:09:45 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux [root@hp-dl388g8-05 ip6gre]# ip link add ip6gre1 type ip6gre local 2000::1 remote 2001::1 [root@hp-dl388g8-05 ip6gre]# ip -d link sh ip6gre1 19: ip6gre1@NONE: <POINTOPOINT,NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/gre6 20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01 peer 20:01:00:00:00:00:00:00:00:00:00:00:00:00:00:01 promiscuity 0 ip6gre remote 2001::1 local 2000::1 hoplimit 64 encaplimit 4 flowlabel 0x00000 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 [root@hp-dl388g8-05 ip6gre]# ip link set ip6gre1 type ip6gre flowlabel 0x33333 [root@hp-dl388g8-05 ip6gre]# ip -d link sh ip6gre1 19: ip6gre1@NONE: <POINTOPOINT,NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/gre6 20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01 peer 20:01:00:00:00:00:00:00:00:00:00:00:00:00:00:01 promiscuity 0 ip6gre remote 2001::1 local 2000::1 hoplimit 64 encaplimit 4 flowlabel 0x33333 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 [root@hp-dl388g8-05 ip6gre]# ip link set ip6gre1 type ip6gre flowlabel 0x11111 [root@hp-dl388g8-05 ip6gre]# ip -d link sh ip6gre1 19: ip6gre1@NONE: <POINTOPOINT,NOARP> mtu 1448 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/gre6 20:00:00:00:00:00:00:00:00:00:00:00:00:00:00:01 peer 20:01:00:00:00:00:00:00:00:00:00:00:00:00:00:01 promiscuity 0 ip6gre remote 2001::1 local 2000::1 hoplimit 64 encaplimit 4 flowlabel 0x33333 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 <==== still 0x33333 even set as 0x11111
[root@hp-dl388g8-05 ip6gre]# ip -V ip utility, iproute2-ss170501 [root@hp-dl388g8-05 ip6gre]# rpm -q iproute iproute-4.11.0-1.el7a.x86_64
Fix sent upstream: https://marc.info/?l=linux-netdev&m=150427491715652&w=2
Since this issue is not a regression (it exists since introduction of GRE6 support in iproute2), I am rescheduling this ticket to RHEL7.5 (which will become the basis for Pegas1.1 later). Please let me know if there is an urgent need for the fix to land in Pegas1.0 still so we can try to get exception flag for it.
Upstream accepted my patch: commit e7fefb3214b5a1ed030cab9df513560c503a9851 Author: Phil Sutter <phil@nwl.cc> Date: Fri Sep 1 16:08:08 2017 +0200 link_gre6: Fix for changing tclass/flowlabel When trying to change tclass or flowlabel of a GREv6 tunnel which has the respective value set already, the code accidentally bitwise OR'ed the old and the new value, leading to unexpected results. Fix this by clearing the relevant bits of flowinfo variable prior to assigning the new value. Fixes: af89576d7a8c4 ("iproute2: GRE over IPv6 tunnel support.") Signed-off-by: Phil Sutter <phil@nwl.cc>
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2018:0815