Skip to content

Commit 65b07b8

Browse files
Geliang Tangintel-lab-lkp
authored andcommitted
mptcp: add id parameter for get_addr
The address id is parsed both in mptcp_pm_nl_get_addr() and mptcp_userspace_pm_get_addr(), this makes the code somewhat repetitive. So this patch adds a new parameter 'id' for all get_addr() interfaces. The address id is only parsed in mptcp_pm_nl_get_addr_doit(), then pass it to both mptcp_pm_nl_get_addr() and mptcp_userspace_pm_get_addr(). Signed-off-by: Geliang Tang <[email protected]>
1 parent 38efebe commit 65b07b8

File tree

4 files changed

+20
-22
lines changed

4 files changed

+20
-22
lines changed

net/mptcp/pm.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -434,16 +434,24 @@ bool mptcp_pm_is_backup(struct mptcp_sock *msk, struct sock_common *skc)
434434
return mptcp_pm_nl_is_backup(msk, &skc_local);
435435
}
436436

437-
static int mptcp_pm_get_addr(struct genl_info *info)
437+
static int mptcp_pm_get_addr(u8 id, struct genl_info *info)
438438
{
439439
if (info->attrs[MPTCP_PM_ATTR_TOKEN])
440-
return mptcp_userspace_pm_get_addr(info);
441-
return mptcp_pm_nl_get_addr(info);
440+
return mptcp_userspace_pm_get_addr(id, info);
441+
return mptcp_pm_nl_get_addr(id, info);
442442
}
443443

444444
int mptcp_pm_nl_get_addr_doit(struct sk_buff *skb, struct genl_info *info)
445445
{
446-
return mptcp_pm_get_addr(info);
446+
struct nlattr *attr = info->attrs[MPTCP_PM_ENDPOINT_ADDR];
447+
struct mptcp_pm_addr_entry addr;
448+
int ret;
449+
450+
ret = mptcp_pm_parse_entry(attr, info, false, &addr);
451+
if (ret < 0)
452+
return ret;
453+
454+
return mptcp_pm_get_addr(addr.addr.id, info);
447455
}
448456

449457
static int mptcp_pm_dump_addr(struct sk_buff *msg, struct netlink_callback *cb)

net/mptcp/pm_netlink.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1762,19 +1762,14 @@ int mptcp_nl_fill_addr(struct sk_buff *skb,
17621762
return -EMSGSIZE;
17631763
}
17641764

1765-
int mptcp_pm_nl_get_addr(struct genl_info *info)
1765+
int mptcp_pm_nl_get_addr(u8 id, struct genl_info *info)
17661766
{
1767-
struct nlattr *attr = info->attrs[MPTCP_PM_ENDPOINT_ADDR];
17681767
struct pm_nl_pernet *pernet = genl_info_pm_nl(info);
1769-
struct mptcp_pm_addr_entry addr, *entry;
1768+
struct mptcp_pm_addr_entry *entry;
17701769
struct sk_buff *msg;
17711770
void *reply;
17721771
int ret;
17731772

1774-
ret = mptcp_pm_parse_entry(attr, info, false, &addr);
1775-
if (ret < 0)
1776-
return ret;
1777-
17781773
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
17791774
if (!msg)
17801775
return -ENOMEM;
@@ -1788,7 +1783,7 @@ int mptcp_pm_nl_get_addr(struct genl_info *info)
17881783
}
17891784

17901785
rcu_read_lock();
1791-
entry = __lookup_addr_by_id(pernet, addr.addr.id);
1786+
entry = __lookup_addr_by_id(pernet, id);
17921787
if (!entry) {
17931788
GENL_SET_ERR_MSG(info, "address not found");
17941789
ret = -EINVAL;

net/mptcp/pm_userspace.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -663,10 +663,9 @@ int mptcp_userspace_pm_dump_addr(struct sk_buff *msg,
663663
return ret;
664664
}
665665

666-
int mptcp_userspace_pm_get_addr(struct genl_info *info)
666+
int mptcp_userspace_pm_get_addr(u8 id, struct genl_info *info)
667667
{
668-
struct nlattr *attr = info->attrs[MPTCP_PM_ENDPOINT_ADDR];
669-
struct mptcp_pm_addr_entry addr, *entry;
668+
struct mptcp_pm_addr_entry *entry;
670669
struct mptcp_sock *msk;
671670
struct sk_buff *msg;
672671
int ret = -EINVAL;
@@ -679,10 +678,6 @@ int mptcp_userspace_pm_get_addr(struct genl_info *info)
679678

680679
sk = (struct sock *)msk;
681680

682-
ret = mptcp_pm_parse_entry(attr, info, false, &addr);
683-
if (ret < 0)
684-
goto out;
685-
686681
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
687682
if (!msg) {
688683
ret = -ENOMEM;
@@ -699,7 +694,7 @@ int mptcp_userspace_pm_get_addr(struct genl_info *info)
699694

700695
lock_sock(sk);
701696
spin_lock_bh(&msk->pm.lock);
702-
entry = mptcp_userspace_pm_lookup_addr_by_id(msk, addr.addr.id);
697+
entry = mptcp_userspace_pm_lookup_addr_by_id(msk, id);
703698
if (!entry) {
704699
GENL_SET_ERR_MSG(info, "address not found");
705700
ret = -EINVAL;

net/mptcp/protocol.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1131,8 +1131,8 @@ int mptcp_pm_nl_dump_addr(struct sk_buff *msg,
11311131
struct netlink_callback *cb);
11321132
int mptcp_userspace_pm_dump_addr(struct sk_buff *msg,
11331133
struct netlink_callback *cb);
1134-
int mptcp_pm_nl_get_addr(struct genl_info *info);
1135-
int mptcp_userspace_pm_get_addr(struct genl_info *info);
1134+
int mptcp_pm_nl_get_addr(u8 id, struct genl_info *info);
1135+
int mptcp_userspace_pm_get_addr(u8 id, struct genl_info *info);
11361136

11371137
static inline u8 subflow_get_local_id(const struct mptcp_subflow_context *subflow)
11381138
{

0 commit comments

Comments
 (0)