summaryrefslogtreecommitdiff
path: root/python/netlink/route/links/bridge.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/netlink/route/links/bridge.py')
-rw-r--r--python/netlink/route/links/bridge.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/python/netlink/route/links/bridge.py b/python/netlink/route/links/bridge.py
index 09d9334c..549b0925 100644
--- a/python/netlink/route/links/bridge.py
+++ b/python/netlink/route/links/bridge.py
@@ -76,6 +76,41 @@ class BRIDGELink(object):
raise ValueError()
capi.rtnl_link_bridge_set_cost(self._link, int(cost))
+ @property
+ @netlink.nlattr(type=str)
+ def flags(self):
+ """ BRIDGE 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
+ """
+ self.bridge_assert_ext_info()
+ flags = capi.rtnl_link_bridge_get_flags(self._link)
+ return capi.rtnl_link_bridge_flags2str(flags, 256)[0].split(',')
+
+ def _set_flag(self, flag):
+ if flag.startswith('-'):
+ i = capi.rtnl_link_bridge_str2flags(flag[1:])
+ capi.rtnl_link_bridge_unset_flags(self._link, i)
+ elif flag.startswith('+'):
+ i = capi.rtnl_link_bridge_str2flags(flag[1:])
+ capi.rtnl_link_bridge_set_flags(self._link, i)
+ else:
+ i = capi.rtnl_link_bridge_str2flags(flag)
+ capi.rtnl_link_bridge_set_flags(self._link, i)
+
+ @flags.setter
+ def flags(self, value):
+ self.bridge_assert_ext_info()
+ if type(value) is list:
+ for flag in value:
+ self._set_flag(flag)
+ else:
+ self._set_flag(value)
+
def brief(self):
return 'bridge-has-ext-info {0}'.format(self._has_ext_info)