diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-03-23 15:57:57 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-03-23 15:57:57 +0100 |
commit | 02d12b89d48416971941a063e620f9055ac0b07c (patch) | |
tree | 4699568a639ac53129a92c1e684c0e1e7d668755 | |
parent | a32d4d0bb0c2d324d4c6a20df263348171ec5254 (diff) | |
download | vyos-1x-02d12b89d48416971941a063e620f9055ac0b07c.tar.gz vyos-1x-02d12b89d48416971941a063e620f9055ac0b07c.zip |
ifconfig: T2151: ensure interface is admin down when changing MAC address
-rw-r--r-- | python/vyos/ifconfig/interface.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index 37fa43bde..8fe0de921 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -309,6 +309,16 @@ class Interface(Control): >>> from vyos.ifconfig import Interface >>> Interface('eth0').set_mac('00:50:ab:cd:ef:01') """ + + # If MAC is unchanged, bail out early + if mac == self.get_mac(): + return None + + # MAC address can only be changed if interface is in 'down' state + prev_state = self.get_state() + if prev_state == 'up': + self.set_state('down') + self.set_interface('mac', mac) def set_vrf(self, vrf=''): |