Skip to content

Commit

Permalink
ndb.objects.interface: strict check on rename
Browse files Browse the repository at this point in the history
Control `alt_ifname_list` after rename. Ignore the old interface
name in `alt_ifname_list`.

Bug-Url: #1178
  • Loading branch information
svinota committed Feb 21, 2024
1 parent fc899cb commit 99678bb
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions pyroute2/ndb/objects/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -979,7 +979,7 @@ def make_req(self, prime):
return req

@check_auth('obj:modify')
def apply_altnames(self, alt_ifname_setup):
def apply_altnames(self, alt_ifname_setup, old_ifname=None):
alt_ifname_remove = set(self['alt_ifname_list']) - alt_ifname_setup
alt_ifname_add = alt_ifname_setup - set(self['alt_ifname_list'])
for ifname in alt_ifname_remove:
Expand All @@ -992,10 +992,9 @@ def apply_altnames(self, alt_ifname_setup):
)
self.load_from_system()
self.load_sql(set_state=False)
if (
'ifname' not in self.changed
and set(self['alt_ifname_list']) != alt_ifname_setup
):
if old_ifname is not None and old_ifname in self['alt_ifname_list']:
alt_ifname_setup.add(old_ifname)
if set(self['alt_ifname_list']) != alt_ifname_setup:
raise Exception('could not setup alt ifnames')

@check_auth('obj:modify')
Expand All @@ -1007,6 +1006,7 @@ def apply(self, rollback=False, req_filter=None, mode='apply'):
setns = self.state.get() == 'setns'
remove = self.state.get() == 'remove'
alt_ifname_setup = set(self['alt_ifname_list'])
old_ifname = self['ifname'] if 'ifname' in self.changed else None
if 'alt_ifname_list' in self.changed:
self.changed.remove('alt_ifname_list')
try:
Expand All @@ -1018,7 +1018,7 @@ def apply(self, rollback=False, req_filter=None, mode='apply'):
if spec:
self.state.set('system')
if not remove:
self.apply_altnames(alt_ifname_setup)
self.apply_altnames(alt_ifname_setup, old_ifname)

except NetlinkError as e:
if (
Expand Down

0 comments on commit 99678bb

Please sign in to comment.