[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20210930113844.1829373-9-razor@blackwall.org>
Date: Thu, 30 Sep 2021 14:38:40 +0300
From: Nikolay Aleksandrov <razor@...ckwall.org>
To: netdev@...r.kernel.org
Cc: roopa@...dia.com, donaldsharp72@...il.com, dsahern@...il.com,
idosch@...sch.org, Nikolay Aleksandrov <nikolay@...dia.com>
Subject: [PATCH iproute2-next 08/12] ip: nexthop: factor out ipnh_get_id rtnl talk into a helper
From: Nikolay Aleksandrov <nikolay@...dia.com>
Factor out ipnh_get_id's rtnl talk portion into a separate helper which
will be reused later to retrieve nexthops for caching.
Signed-off-by: Nikolay Aleksandrov <nikolay@...dia.com>
---
ip/ipnexthop.c | 33 ++++++++++++++++++++-------------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/ip/ipnexthop.c b/ip/ipnexthop.c
index a589febca605..454c7416e30f 100644
--- a/ip/ipnexthop.c
+++ b/ip/ipnexthop.c
@@ -485,6 +485,25 @@ static void __print_nexthop_entry(FILE *fp, const char *jsobj,
close_json_object();
}
+static int __ipnh_get_id(struct rtnl_handle *rthp, __u32 nh_id,
+ struct nlmsghdr **answer)
+{
+ struct {
+ struct nlmsghdr n;
+ struct nhmsg nhm;
+ char buf[1024];
+ } req = {
+ .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct nhmsg)),
+ .n.nlmsg_flags = NLM_F_REQUEST,
+ .n.nlmsg_type = RTM_GETNEXTHOP,
+ .nhm.nh_family = preferred_family,
+ };
+
+ addattr32(&req.n, sizeof(req), NHA_ID, nh_id);
+
+ return rtnl_talk(rthp, &req.n, answer);
+}
+
int print_nexthop(struct nlmsghdr *n, void *arg)
{
struct nhmsg *nhm = NLMSG_DATA(n);
@@ -827,21 +846,9 @@ static int ipnh_modify(int cmd, unsigned int flags, int argc, char **argv)
static int ipnh_get_id(__u32 id)
{
- struct {
- struct nlmsghdr n;
- struct nhmsg nhm;
- char buf[1024];
- } req = {
- .n.nlmsg_len = NLMSG_LENGTH(sizeof(struct nhmsg)),
- .n.nlmsg_flags = NLM_F_REQUEST,
- .n.nlmsg_type = RTM_GETNEXTHOP,
- .nhm.nh_family = preferred_family,
- };
struct nlmsghdr *answer;
- addattr32(&req.n, sizeof(req), NHA_ID, id);
-
- if (rtnl_talk(&rth, &req.n, &answer) < 0)
+ if (__ipnh_get_id(&rth, id, &answer) < 0)
return -2;
new_json_obj(json);
--
2.31.1
Powered by blists - more mailing lists