mptcp: allow to use port and non-signal in set_flags
It's illegal to use both port and non-signal flags for adding address. But it's legal to use both of them for setting flags, which always uses non-signal flags, backup or fullmesh. This patch moves this non-signal flag with port check from mptcp_pm_parse_addr() to mptcp_nl_cmd_add_addr(). Do the check only when adding addresses, not setting flags or deleting addresses. Signed-off-by: Geliang Tang <geliang.tang@suse.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
660a38bf6f
Коммит
09f12c3ab7
|
@ -1174,14 +1174,8 @@ skip_family:
|
|||
if (tb[MPTCP_PM_ADDR_ATTR_FLAGS])
|
||||
entry->flags = nla_get_u32(tb[MPTCP_PM_ADDR_ATTR_FLAGS]);
|
||||
|
||||
if (tb[MPTCP_PM_ADDR_ATTR_PORT]) {
|
||||
if (!(entry->flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) {
|
||||
NL_SET_ERR_MSG_ATTR(info->extack, attr,
|
||||
"flags must have signal when using port");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (tb[MPTCP_PM_ADDR_ATTR_PORT])
|
||||
entry->addr.port = htons(nla_get_u16(tb[MPTCP_PM_ADDR_ATTR_PORT]));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1227,6 +1221,11 @@ static int mptcp_nl_cmd_add_addr(struct sk_buff *skb, struct genl_info *info)
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (addr.addr.port && !(addr.flags & MPTCP_PM_ADDR_FLAG_SIGNAL)) {
|
||||
GENL_SET_ERR_MSG(info, "flags must have signal when using port");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
entry = kmalloc(sizeof(*entry), GFP_KERNEL);
|
||||
if (!entry) {
|
||||
GENL_SET_ERR_MSG(info, "can't allocate addr");
|
||||
|
|
Загрузка…
Ссылка в новой задаче