[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210418120137.2605522-5-razor@blackwall.org>
Date: Sun, 18 Apr 2021 15:01:35 +0300
From: Nikolay Aleksandrov <razor@...ckwall.org>
To: netdev@...r.kernel.org
Cc: roopa@...dia.com, dsahern@...il.com,
Nikolay Aleksandrov <nikolay@...dia.com>
Subject: [PATCH iproute2-next 4/6] libnetlink: add bridge vlan dump request helper
From: Nikolay Aleksandrov <nikolay@...dia.com>
Add rtnl bridge vlan dump request helper which will be used to retrieve
bridge vlan information and options.
Signed-off-by: Nikolay Aleksandrov <nikolay@...dia.com>
---
include/libnetlink.h | 2 ++
lib/libnetlink.c | 19 +++++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/include/libnetlink.h b/include/libnetlink.h
index e8ed5d7fb495..da96c69b9ede 100644
--- a/include/libnetlink.h
+++ b/include/libnetlink.h
@@ -69,6 +69,8 @@ int rtnl_neightbldump_req(struct rtnl_handle *rth, int family)
__attribute__((warn_unused_result));
int rtnl_mdbdump_req(struct rtnl_handle *rth, int family)
__attribute__((warn_unused_result));
+int rtnl_brvlandump_req(struct rtnl_handle *rth, int family, __u32 dump_flags)
+ __attribute__((warn_unused_result));
int rtnl_netconfdump_req(struct rtnl_handle *rth, int family)
__attribute__((warn_unused_result));
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index 6885087b34f9..2f2cc1fe0a61 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -450,6 +450,25 @@ int rtnl_mdbdump_req(struct rtnl_handle *rth, int family)
return send(rth->fd, &req, sizeof(req), 0);
}
+int rtnl_brvlandump_req(struct rtnl_handle *rth, int family, __u32 dump_flags)
+{
+ struct {
+ struct nlmsghdr nlh;
+ struct br_vlan_msg bvm;
+ char buf[256];
+ } req = {
+ .nlh.nlmsg_len = NLMSG_LENGTH(sizeof(struct br_vlan_msg)),
+ .nlh.nlmsg_type = RTM_GETVLAN,
+ .nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST,
+ .nlh.nlmsg_seq = rth->dump = ++rth->seq,
+ .bvm.family = family,
+ };
+
+ addattr32(&req.nlh, sizeof(req), BRIDGE_VLANDB_DUMP_FLAGS, dump_flags);
+
+ return send(rth->fd, &req, sizeof(req), 0);
+}
+
int rtnl_netconfdump_req(struct rtnl_handle *rth, int family)
{
struct {
--
2.30.2
Powered by blists - more mailing lists