diff options
author | Коренберг Марк (ноутбук дома) <socketpair@gmail.com> | 2012-06-04 23:39:30 +0600 |
---|---|---|
committer | Коренберг Марк (ноутбук дома) <socketpair@gmail.com> | 2012-06-08 22:26:35 +0600 |
commit | c1547d90d70016c04c35a3ad2ff42190eb4de18a (patch) | |
tree | b1aec598b5fba09990f35f37f531b1551893fd0b /python | |
parent | 38fefc5c1b005c518d0d511c0921169b92faa86c (diff) | |
download | libnl-c1547d90d70016c04c35a3ad2ff42190eb4de18a.tar.gz |
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.
Diffstat (limited to 'python')
-rw-r--r-- | python/netlink/route/address.py | 18 | ||||
-rw-r--r-- | python/netlink/route/link.py | 16 | ||||
-rw-r--r-- | python/netlink/route/links/vlan.py | 17 |
3 files changed, 42 insertions, 9 deletions
diff --git a/python/netlink/route/address.py b/python/netlink/route/address.py index 8fab97d..a8da1ed 100644 --- a/python/netlink/route/address.py +++ b/python/netlink/route/address.py @@ -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): diff --git a/python/netlink/route/link.py b/python/netlink/route/link.py index 8c87971..b7a377a 100644 --- a/python/netlink/route/link.py +++ b/python/netlink/route/link.py @@ -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): diff --git a/python/netlink/route/links/vlan.py b/python/netlink/route/links/vlan.py index c9fe2a7..bb339d0 100644 --- a/python/netlink/route/links/vlan.py +++ b/python/netlink/route/links/vlan.py @@ -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 |