// SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
/* Do not edit directly, auto-generated from: */
/*	Documentation/netlink/specs/fou.yaml */
/* YNL-GEN kernel source */
/* To regenerate run: tools/net/ynl/ynl-regen.sh */

#include <net/netlink.h>
#include <net/genetlink.h>

#include "fou_nl.h"

#include <uapi/linux/fou.h>

/* Global operation policy for fou */
const struct nla_policy fou_nl_policy[FOU_ATTR_IFINDEX + 1] = {
	[FOU_ATTR_PORT] = { .type = NLA_BE16, },
	[FOU_ATTR_AF] = { .type = NLA_U8, },
	[FOU_ATTR_IPPROTO] = NLA_POLICY_MIN(NLA_U8, 1),
	[FOU_ATTR_TYPE] = { .type = NLA_U8, },
	[FOU_ATTR_REMCSUM_NOPARTIAL] = { .type = NLA_FLAG, },
	[FOU_ATTR_LOCAL_V4] = { .type = NLA_U32, },
	[FOU_ATTR_LOCAL_V6] = NLA_POLICY_EXACT_LEN(16),
	[FOU_ATTR_PEER_V4] = { .type = NLA_U32, },
	[FOU_ATTR_PEER_V6] = NLA_POLICY_EXACT_LEN(16),
	[FOU_ATTR_PEER_PORT] = { .type = NLA_BE16, },
	[FOU_ATTR_IFINDEX] = { .type = NLA_S32, },
};

/* Ops table for fou */
const struct genl_small_ops fou_nl_ops[3] = {
	{
		.cmd		= FOU_CMD_ADD,
		.validate	= GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
		.doit		= fou_nl_add_doit,
		.flags		= GENL_ADMIN_PERM,
	},
	{
		.cmd		= FOU_CMD_DEL,
		.validate	= GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
		.doit		= fou_nl_del_doit,
		.flags		= GENL_ADMIN_PERM,
	},
	{
		.cmd		= FOU_CMD_GET,
		.validate	= GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
		.doit		= fou_nl_get_doit,
		.dumpit		= fou_nl_get_dumpit,
	},
};
