summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJef Oliver <jef.oliver@intel.com>2016-09-01 00:27:09 (GMT)
committerThomas Haller <thaller@redhat.com>2016-09-24 11:51:29 (GMT)
commit1a4031d6db73ed0a6e850c5c7b3c1bc1405673ed (patch)
treecc60213999057badac2ea363b0cdfd0630d330e9 /include
parentab17f9803d08ee5c1b3e4618da170c8cb2da3eb5 (diff)
downloadlibnl-1a4031d6db73ed0a6e850c5c7b3c1bc1405673ed.zip
libnl-1a4031d6db73ed0a6e850c5c7b3c1bc1405673ed.tar.gz
libnl-1a4031d6db73ed0a6e850c5c7b3c1bc1405673ed.tar.bz2
lib/route: Support IFLA_BRIDGE_MODE
This patch adds support for hardware assisted bridge modes stored in IFLA_AF_SPEC[IFLA_BRIDGE_MODE]. This patch adds rtnl_link_[g/s]et_hwmode() functions, allowing for getting and setting the hardware mode for a bridged link. This patch adds the convenience functions for translating between integer and string names for hardware modes. This patch adds rtnl_link_bridge_set_self(), a function that stores flags in IFLA_AF_SPEC[IFLA_BRIDGE_FLAGS], an attribute that tells the kernel whether it should apply settings to the virtual bridge device or the hardware device itself. This requires hardware that supports the hardware flags. This patch adds bridge_fill_af(), a function to fill IFLA_AF_SPEC with AF_BRIDGE specific information. Signed-off-by: Jef Oliver <jef.oliver@intel.com> Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/netlink/route/link/bridge.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/netlink/route/link/bridge.h b/include/netlink/route/link/bridge.h
index b7b9ae9..f2e16e3 100644
--- a/include/netlink/route/link/bridge.h
+++ b/include/netlink/route/link/bridge.h
@@ -43,6 +43,11 @@ enum rtnl_link_bridge_flags {
RTNL_BRIDGE_LEARNING_SYNC = 0x0040,
};
+#define RTNL_BRIDGE_HWMODE_VEB BRIDGE_MODE_VEB
+#define RTNL_BRIDGE_HWMODE_VEPA BRIDGE_MODE_VEPA
+#define RTNL_BRIDGE_HWMODE_MAX BRIDGE_MODE_VEPA
+#define RTNL_BRIDGE_HWMODE_UNDEF BRIDGE_MODE_UNDEF
+
extern struct rtnl_link *rtnl_link_bridge_alloc(void);
extern int rtnl_link_is_bridge(struct rtnl_link *);
@@ -61,12 +66,20 @@ extern int rtnl_link_bridge_unset_flags(struct rtnl_link *, unsigned int);
extern int rtnl_link_bridge_set_flags(struct rtnl_link *, unsigned int);
extern int rtnl_link_bridge_get_flags(struct rtnl_link *);
+extern int rtnl_link_bridge_set_self(struct rtnl_link *);
+
+extern int rtnl_link_bridge_get_hwmode(struct rtnl_link *, uint16_t *);
+extern int rtnl_link_bridge_set_hwmode(struct rtnl_link *, uint16_t);
+
extern char * rtnl_link_bridge_flags2str(int, char *, size_t);
extern int rtnl_link_bridge_str2flags(const char *);
extern char * rtnl_link_bridge_portstate2str(int, char *, size_t);
extern int rtnl_link_bridge_str2portstate(const char *);
+extern char * rtnl_link_bridge_hwmode2str(uint16_t, char *, size_t);
+extern uint16_t rtnl_link_bridge_str2hwmode(const char *);
+
extern int rtnl_link_bridge_add(struct nl_sock *sk, const char *name);
extern int rtnl_link_bridge_pvid(struct rtnl_link *link);