Bug 1893938 - ignore mac of vrf interface
Summary: ignore mac of vrf interface
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: nmstate
Version: 8.4
Hardware: Unspecified
OS: Unspecified
medium
medium
Target Milestone: rc
: 8.4
Assignee: Gris Ge
QA Contact: Mingyu Shi
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-11-03 03:18 UTC by Mingyu Shi
Modified: 2021-11-09 20:13 UTC (History)
5 users (show)

Fixed In Version: nmstate-1.1.0-0.6.alpha6.el8
Doc Type: No Doc Update
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-11-09 17:42:37 UTC
Type: Bug
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github nmstate nmstate pull 1650 0 None open vrf: Ignore MAC and accept_all_mac_addresses=false 2021-06-23 07:00:58 UTC
Red Hat Product Errata RHBA-2021:4157 0 None None None 2021-11-09 17:42:47 UTC

Description Mingyu Shi 2020-11-03 03:18:59 UTC
Description of problem:
nmstate cannot create a vrf with mac or change the mac of an existed vrf device. Though we can use 'ip link add vrf0 address $mac' to create a vrf with specific mac address, we cannot change it once it was created.
Consider such a scenario: user created a vrf(vrf0), in order to use it next time, e.g. rebooting, saved it by running 'nmstatectl show vrf0 > backup.yml'. Next time user tries to recovery this vrf environment, it will fail if he runs 'nmstatectl set backup.yml' directly as in the transaction it contains a mac address.

Version-Release number of selected component (if applicable):
nmstate-0.4.1-1.el8.noarch

How reproducible:
100%

Steps to Reproduce:
echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  mac-address: 72:B3:5C:B1:68:92
  vrf:
    route-table-id: 101" | nmstatectl set - #cannot create with mac

echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  vrf:
    route-table-id: 101" | nmstatectl set -
nmstatectl show vrf1 # can see a random mac

echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  mac-address: 72:B3:5C:B1:68:92
  vrf:
    route-table-id: 101" | nmstatectl set - #cannot change the mac

Actual results:
Traceback (most recent call last):
  File "/usr/bin/nmstatectl", line 11, in <module>
    load_entry_point('nmstate==0.4.1', 'console_scripts', 'nmstatectl')()
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 70, in main
    return args.func(args)
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 269, in apply
    args.save_to_disk,
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 309, in apply_state
    save_to_disk=save_to_disk,
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 71, in apply
    _apply_ifaces_state(plugins, net_state, verify_change, save_to_disk)
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 115, in _apply_ifaces_state
    _verify_change(plugins, net_state)
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 120, in _verify_change
    net_state.verify(current_state)
  File "/usr/lib/python3.6/site-packages/libnmstate/net_state.py", line 63, in verify
    self._ifaces.verify(current_state.get(Interface.KEY))
  File "/usr/lib/python3.6/site-packages/libnmstate/ifaces/ifaces.py", line 443, in verify
    cur_iface.state_for_verify(),
libnmstate.error.NmstateVerificationError: 
desired
=======
---
name: vrf1
type: vrf
state: up
mac-address: 72:B3:5C:B1:68:92
vrf:
  route-table-id: 101

current
=======
---
name: vrf1
type: vrf
state: up
ipv4:
  enabled: false
ipv6:
  enabled: false
lldp:
  enabled: false
mac-address: 16:72:99:B7:5D:1A
mtu: 65536
vrf:
  port: []
  route-table-id: 101

difference
==========
--- desired
+++ current
@@ -2,6 +2,14 @@
 name: vrf1
 type: vrf
 state: up
-mac-address: 72:B3:5C:B1:68:92
+ipv4:
+  enabled: false
+ipv6:
+  enabled: false
+lldp:
+  enabled: false
+mac-address: 16:72:99:B7:5D:1A
+mtu: 65536
 vrf:
+  port: []
   route-table-id: 101


Expected results:
Ignore the mac address of vrf

Additional info:

Comment 1 Gris Ge 2021-06-08 14:52:24 UTC
Instead of ignoring, we should support changing MAC address of vrf because `ip vrf exec <vrf_name> command` will need this MAC address.

Comment 2 Gris Ge 2021-06-22 14:40:46 UTC
Just checked. RHEL 8 kernel does not support changing VRF MAC address yet.
So let's ignore it.

Comment 3 Gris Ge 2021-06-23 07:03:13 UTC
Please do pre-verify via ` dnf copr enable packit/nmstate-nmstate-1650 `

Comment 6 Mingyu Shi 2021-07-06 03:44:04 UTC
Verified with versions:
nmstate-1.1.0-0.6.alpha6.el8.noarch
nispor-1.1.1-1.el8.x86_64
NetworkManager-1.32.0-1.el8.x86_64

Comment 8 errata-xmlrpc 2021-11-09 17:42:37 UTC
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 (nmstate bug fix and enhancement update), 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/RHBA-2021:4157


Note You need to log in before you can comment on or make changes to this bug.