Flags properties description and implementation fixed
1. Address, Link and Vlan classes affected with same bug 2. Flags property are not designed as set class. Setting to property will not replace flags, just add flags to set. So, jist document that, and fixed obvious logick.
This commit is contained in:
parent
38fefc5c1b
commit
c1547d90d7
3 changed files with 42 additions and 9 deletions
|
@ -147,17 +147,29 @@ class Address(netlink.Object):
|
|||
@netlink.nlattr('address.flags', type=str, fmt=util.string)
|
||||
@property
|
||||
def flags(self):
|
||||
"""Flags"""
|
||||
"""Flags
|
||||
|
||||
Setting this property will *Not* reset flags to value you supply in
|
||||
|
||||
Examples:
|
||||
addr.flags = '+xxx' # add xxx flag
|
||||
addr.flags = 'xxx' # exactly the same
|
||||
addr.flags = '-xxx' # remove xxx flag
|
||||
addr.flags = [ '+xxx', '-yyy' ] # list operation
|
||||
"""
|
||||
flags = capi.rtnl_addr_get_flags(self._rtnl_addr)
|
||||
return capi.rtnl_addr_flags2str(flags, 256)[0].split(',')
|
||||
|
||||
def _set_flag(self, flag):
|
||||
if flag[0] == '-':
|
||||
if flag.startswith('-'):
|
||||
i = capi.rtnl_addr_str2flags(flag[1:])
|
||||
capi.rtnl_addr_unset_flags(self._rtnl_addr, i)
|
||||
else:
|
||||
elif flag.startswith('+'):
|
||||
i = capi.rtnl_addr_str2flags(flag[1:])
|
||||
capi.rtnl_addr_set_flags(self._rtnl_addr, i)
|
||||
else:
|
||||
i = capi.rtnl_addr_str2flags(flag)
|
||||
capi.rtnl_addr_set_flags(self._rtnl_addr, i)
|
||||
|
||||
@flags.setter
|
||||
def flags(self, value):
|
||||
|
|
|
@ -213,17 +213,27 @@ class Link(netlink.Object):
|
|||
@netlink.nlattr('link.flags', type=str, fmt=util.string)
|
||||
@property
|
||||
def flags(self):
|
||||
"""Flags"""
|
||||
"""Flags
|
||||
Setting this property will *Not* reset flags to value you supply in
|
||||
Examples:
|
||||
link.flags = '+xxx' # add xxx flag
|
||||
link.flags = 'xxx' # exactly the same
|
||||
link.flags = '-xxx' # remove xxx flag
|
||||
link.flags = [ '+xxx', '-yyy' ] # list operation
|
||||
"""
|
||||
flags = capi.rtnl_link_get_flags(self._rtnl_link)
|
||||
return capi.rtnl_link_flags2str(flags, 256)[0].split(',')
|
||||
|
||||
def _set_flag(self, flag):
|
||||
if flag[0] == '-':
|
||||
if flag.startswith('-'):
|
||||
i = capi.rtnl_link_str2flags(flag[1:])
|
||||
capi.rtnl_link_unset_flags(self._rtnl_link, i)
|
||||
else:
|
||||
elif flag.startswith('+'):
|
||||
i = capi.rtnl_link_str2flags(flag[1:])
|
||||
capi.rtnl_link_set_flags(self._rtnl_link, i)
|
||||
else:
|
||||
i = capi.rtnl_link_str2flags(flag)
|
||||
capi.rtnl_link_set_flags(self._rtnl_link, i)
|
||||
|
||||
@flags.setter
|
||||
def flags(self, value):
|
||||
|
|
|
@ -32,15 +32,26 @@ class VLANLink(object):
|
|||
@netlink.nlattr('link.vlan.flags', type=str)
|
||||
@property
|
||||
def flags(self):
|
||||
"""vlan flags"""
|
||||
""" VLAN flags
|
||||
Setting this property will *Not* reset flags to value you supply in
|
||||
Examples:
|
||||
link.flags = '+xxx' # add xxx flag
|
||||
link.flags = 'xxx' # exactly the same
|
||||
link.flags = '-xxx' # remove xxx flag
|
||||
link.flags = [ '+xxx', '-yyy' ] # list operation
|
||||
"""
|
||||
flags = capi.rtnl_link_vlan_get_flags(self._link)
|
||||
return capi.rtnl_link_vlan_flags2str(flags, 256)[0].split(',')
|
||||
|
||||
def _set_flag(self, flag):
|
||||
i = capi.rtnl_link_vlan_str2flags(flag[1:])
|
||||
if flag[0] == '-':
|
||||
if flag.startswith('-'):
|
||||
i = capi.rtnl_link_vlan_str2flags(flag[1:])
|
||||
capi.rtnl_link_vlan_unset_flags(self._link, i)
|
||||
elif flag.startswith('+'):
|
||||
i = capi.rtnl_link_vlan_str2flags(flag[1:])
|
||||
capi.rtnl_link_vlan_set_flags(self._link, i)
|
||||
else:
|
||||
i = capi.rtnl_link_vlan_str2flags(flag)
|
||||
capi.rtnl_link_vlan_set_flags(self._link, i)
|
||||
|
||||
@flags.setter
|
||||
|
|
Loading…
Add table
Reference in a new issue