diff options
Diffstat (limited to 'net/tipc/netlink.c')
| -rw-r--r-- | net/tipc/netlink.c | 39 | 
1 files changed, 23 insertions, 16 deletions
diff --git a/net/tipc/netlink.c b/net/tipc/netlink.c index d6165ad384c0..e53231bd23b4 100644 --- a/net/tipc/netlink.c +++ b/net/tipc/netlink.c @@ -102,7 +102,11 @@ const struct nla_policy tipc_nl_link_policy[TIPC_NLA_LINK_MAX + 1] = {  const struct nla_policy tipc_nl_node_policy[TIPC_NLA_NODE_MAX + 1] = {  	[TIPC_NLA_NODE_UNSPEC]		= { .type = NLA_UNSPEC },  	[TIPC_NLA_NODE_ADDR]		= { .type = NLA_U32 }, -	[TIPC_NLA_NODE_UP]		= { .type = NLA_FLAG } +	[TIPC_NLA_NODE_UP]		= { .type = NLA_FLAG }, +	[TIPC_NLA_NODE_ID]		= { .type = NLA_BINARY, +					    .len = TIPC_NODEID_LEN}, +	[TIPC_NLA_NODE_KEY]		= { .type = NLA_BINARY, +					    .len = TIPC_AEAD_KEY_SIZE_MAX},  };  /* Properties valid for media, bearer and link */ @@ -176,7 +180,8 @@ static const struct genl_ops tipc_genl_v2_ops[] = {  	},  	{  		.cmd	= TIPC_NL_PUBL_GET, -		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +		.validate = GENL_DONT_VALIDATE_STRICT | +			    GENL_DONT_VALIDATE_DUMP_STRICT,  		.dumpit	= tipc_nl_publ_dump,  	},  	{ @@ -239,7 +244,8 @@ static const struct genl_ops tipc_genl_v2_ops[] = {  	},  	{  		.cmd	= TIPC_NL_MON_PEER_GET, -		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +		.validate = GENL_DONT_VALIDATE_STRICT | +			    GENL_DONT_VALIDATE_DUMP_STRICT,  		.dumpit	= tipc_nl_node_dump_monitor_peer,  	},  	{ @@ -250,10 +256,23 @@ static const struct genl_ops tipc_genl_v2_ops[] = {  #ifdef CONFIG_TIPC_MEDIA_UDP  	{  		.cmd	= TIPC_NL_UDP_GET_REMOTEIP, -		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +		.validate = GENL_DONT_VALIDATE_STRICT | +			    GENL_DONT_VALIDATE_DUMP_STRICT,  		.dumpit	= tipc_udp_nl_dump_remoteip,  	},  #endif +#ifdef CONFIG_TIPC_CRYPTO +	{ +		.cmd	= TIPC_NL_KEY_SET, +		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +		.doit	= tipc_nl_node_set_key, +	}, +	{ +		.cmd	= TIPC_NL_KEY_FLUSH, +		.validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, +		.doit	= tipc_nl_node_flush_key, +	}, +#endif  };  struct genl_family tipc_genl_family __ro_after_init = { @@ -268,18 +287,6 @@ struct genl_family tipc_genl_family __ro_after_init = {  	.n_ops		= ARRAY_SIZE(tipc_genl_v2_ops),  }; -int tipc_nlmsg_parse(const struct nlmsghdr *nlh, struct nlattr ***attr) -{ -	u32 maxattr = tipc_genl_family.maxattr; - -	*attr = genl_family_attrbuf(&tipc_genl_family); -	if (!*attr) -		return -EOPNOTSUPP; - -	return nlmsg_parse_deprecated(nlh, GENL_HDRLEN, *attr, maxattr, -				      tipc_nl_policy, NULL); -} -  int __init tipc_netlink_start(void)  {  	int res;  |