summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorКоренберг Марк (ноутбук дома) <socketpair@gmail.com>2012-06-04 23:39:30 +0600
committerКоренберг Марк (ноутбук дома) <socketpair@gmail.com>2012-06-08 22:26:35 +0600
commitc1547d90d70016c04c35a3ad2ff42190eb4de18a (patch)
treeb1aec598b5fba09990f35f37f531b1551893fd0b
parent38fefc5c1b005c518d0d511c0921169b92faa86c (diff)
downloadlibnl-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.
-rw-r--r--python/netlink/route/address.py18
-rw-r--r--python/netlink/route/link.py16
-rw-r--r--python/netlink/route/links/vlan.py17
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