# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

# AF_NETLINK/NETLINK_XFRM support.

include <linux/net.h>
include <uapi/linux/netlink.h>
include <uapi/linux/in.h>
include <uapi/linux/xfrm.h>
include <uapi/linux/ipsec.h>

resource sock_nl_xfrm[sock_netlink]
type xfrm_req_id int32[13567:13575, opt]
type xfrm_policy_index int32[7236528:7236544, opt]
type xfrm_spi int32be[1234:1238]

socket$nl_xfrm(domain const[AF_NETLINK], type const[SOCK_RAW], proto const[NETLINK_XFRM]) sock_nl_xfrm

sendmsg$nl_xfrm(fd sock_nl_xfrm, msg ptr[in, msghdr_nl_xfrm], f flags[send_flags])

type msghdr_nl_xfrm msghdr_netlink[netlink_msg_xfrm]

type xfrm_msg[TYPE, PAYLOAD] netlink_msg[TYPE, PAYLOAD, xfrm_attrs]

netlink_msg_xfrm [
	newsa		xfrm_msg[XFRM_MSG_NEWSA, xfrm_usersa_info]
	updsa		xfrm_msg[XFRM_MSG_UPDSA, xfrm_usersa_info]
	delsa		xfrm_msg[XFRM_MSG_DELSA, xfrm_usersa_id]
	getsa		xfrm_msg[XFRM_MSG_GETSA, xfrm_usersa_id]
	newpolicy	xfrm_msg[XFRM_MSG_NEWPOLICY, xfrm_userpolicy_info]
	updpolicy	xfrm_msg[XFRM_MSG_UPDPOLICY, xfrm_userpolicy_info]
	delpolicy	xfrm_msg[XFRM_MSG_DELPOLICY, xfrm_userpolicy_id]
	getpolicy	xfrm_msg[XFRM_MSG_GETPOLICY, xfrm_userpolicy_id]
	migrate		xfrm_msg[XFRM_MSG_MIGRATE, xfrm_userpolicy_id]
	allocspi	xfrm_msg[XFRM_MSG_ALLOCSPI, xfrm_userspi_info]
	acquire		xfrm_msg[XFRM_MSG_ACQUIRE, xfrm_user_acquire]
	expire		xfrm_msg[XFRM_MSG_EXPIRE, xfrm_user_expire]
	polexpire	xfrm_msg[XFRM_MSG_POLEXPIRE, xfrm_user_polexpire]
	flushsa		xfrm_msg[XFRM_MSG_FLUSHSA, xfrm_usersa_flush]
	report		xfrm_msg[XFRM_MSG_REPORT, xfrm_user_report]
	flushpolicy	xfrm_msg[XFRM_MSG_FLUSHPOLICY, void]
	newae		xfrm_msg[XFRM_MSG_NEWAE, xfrm_aevent_id]
	getae		xfrm_msg[XFRM_MSG_GETAE, xfrm_aevent_id]
	getsadinfo	xfrm_msg[XFRM_MSG_GETSADINFO, const[0, int32]]
	newspdinfo	xfrm_msg[XFRM_MSG_NEWSPDINFO, int32]
	getspdinfo	xfrm_msg[XFRM_MSG_GETSPDINFO, int32]
] [varlen]

xfrm_usersa_info {
	sel		xfrm_selector
	id		xfrm_id
	saddr		xfrm_address
	lft		xfrm_lifetime_cfg
	curlft		xfrm_lifetime_cur
	stats		xfrm_stats
	seq		netlink_seq
	reqid		xfrm_req_id
	family		flags[xfrm_family, int16]
	mode		flags[xfrm_mode, int8]
	replay_window	int8
	flags		flags[xfrm_state, int8]
}

xfrm_usersa_id {
	daddr	xfrm_address
	spi	xfrm_spi
	family	flags[xfrm_family, int16]
	proto	flags[xfrm_proto, int8]
}

xfrm_userpolicy_id {
	sel	xfrm_selector
	index	xfrm_policy_index
	dir	flags[xfrm_policy_dir, int8]
}

xfrm_userspi_info {
	info	xfrm_usersa_info
	min	int32
	max	int32
}

xfrm_user_acquire {
	id	xfrm_id
	saddr	xfrm_address
	sel	xfrm_selector
	policy	xfrm_userpolicy_info
	aalgos	int32
	ealgos	int32
	calgo	int32
	seq	netlink_seq
}

xfrm_user_expire {
	state	xfrm_usersa_info
	hard	int8
}

xfrm_user_polexpire {
	pol	xfrm_userpolicy_info
	hard	int8
}

xfrm_usersa_flush {
	proto	flags[xfrm_proto, int8]
}

xfrm_user_report {
	proto	flags[xfrm_proto, int8]
	sel	xfrm_selector
}

xfrm_aevent_id {
	sa_id	xfrm_usersa_id
	saddr	xfrm_address
	flags	int32
	reqid	xfrm_req_id
}

xfrm_attrs [
	sa		nlattr[XFRMA_SA, xfrm_usersa_info]
	policy		nlattr[XFRMA_POLICY, xfrm_userpolicy_info]
	lastused	nlattr[XFRMA_LASTUSED, int64]
	algo_auth_trunc	nlattr[XFRMA_ALG_AUTH_TRUNC, xfrm_algo_auth]
	algo_aead	nlattr[XFRMA_ALG_AEAD, xfrm_algo_aead]
	algo_auth	nlattr[XFRMA_ALG_AUTH, xfrm_algo_hash]
	algo_crypt	nlattr[XFRMA_ALG_CRYPT, xfrm_algo_blkcipher]
	algo_comp	nlattr[XFRMA_ALG_COMP, xfrm_algo_compress]
	srcaddr		nlattr[XFRMA_SRCADDR, xfrm_address]
	coaddr		nlattr[XFRMA_COADDR, xfrm_address]
	extra_flags	nlattr[XFRMA_SA_EXTRA_FLAGS, int32]
	tfcpad		nlattr[XFRMA_TFCPAD, int32]
	replay_thresh	nlattr[XFRMA_REPLAY_THRESH, int32]
	etimer_thresh	nlattr[XFRMA_ETIMER_THRESH, int32]
	output_mark	nlattr[XFRMA_OUTPUT_MARK, int32]
	encap		nlattr[XFRMA_ENCAP, xfrm_encap_tmpl]
	offload		nlattr[XFRMA_OFFLOAD_DEV, xfrm_user_offload]
	sec_ctx		nlattr[XFRMA_SEC_CTX, xfrm_user_sec_ctx]
	lifetime_val	nlattr[XFRMA_LTIME_VAL, xfrm_lifetime_cur]
	tmpl		nlattr[XFRMA_TMPL, array[xfrm_user_tmpl]]
	replay_val	nlattr[XFRMA_REPLAY_VAL, xfrm_replay_state]
	replay_esn_val	nlattr[XFRMA_REPLAY_ESN_VAL, xfrm_replay_state_esn]
	policy_type	nlattr[XFRMA_POLICY_TYPE, xfrm_userpolicy_type]
	migrate		nlattr[XFRMA_MIGRATE, array[xfrm_user_migrate]]
	user_kmaddress	nlattr[XFRMA_KMADDRESS, xfrm_user_kmaddress]
	mark		nlattr[XFRMA_MARK, xfrm_mark]
	proto		nlattr[XFRMA_PROTO, flags[xfrm_proto, int8]]
	address_filter	nlattr[XFRMA_ADDRESS_FILTER, xfrm_address_filter]
	ipv4_hthresh	nlattr[XFRMA_SPD_IPV4_HTHRESH, xfrmu_spdhthresh4]
	ipv6_hthresh	nlattr[XFRMA_SPD_IPV6_HTHRESH, xfrmu_spdhthresh6]
] [varlen]

xfrm_encap_tmpl {
	encap_type	flags[xfrm_encap_type, int16]
	encap_sport	sock_port
	encap_dport	sock_port
	encap_oa	xfrm_address
}

xfrm_user_offload {
	ifindex	ifindex[opt]
	flags	flags[xfrm_offload_flags, int8]
}

xfrm_offload_flags = XFRM_OFFLOAD_IPV6, XFRM_OFFLOAD_INBOUND

xfrm_user_sec_ctx {
	len	len[parent, int16]
	exttype	const[XFRMA_SEC_CTX, int16]
	ctx_alg	flags[xfrm_sec_ctx_alg, int8]
	ctx_doi	int8
	ctx_len	len[payload, int16]
# TODO: what's this? looks intersting.
	payload	array[int8]
}

xfrm_sec_ctx_alg = XFRM_SC_ALG_SELINUX

xfrm_replay_state {
	oseq	netlink_seq
	seq	netlink_seq
	bitmap	int32
}

xfrm_replay_state_esn {
	bmp_len		len[bmp, int32]
	oseq		netlink_seq
	seq		netlink_seq
	oseq_hi		netlink_seq
	seq_hi		netlink_seq
	replay_window	int32
	bmp		array[int32]
}

xfrm_userpolicy_type {
	type		flags[xfrm_policy_types, int8]
	reserved1	const[0, int16]
	reserved2	const[0, int8]
}

xfrm_user_migrate {
	old_daddr	xfrm_address
	new_saddr	xfrm_address
	proto		flags[xfrm_proto, int8]
	mode		flags[xfrm_mode, int8]
	reserved	const[0, int16]
	reqid		xfrm_req_id
	old_family	flags[xfrm_family, int16]
	new_family	flags[xfrm_family, int16]
}

xfrm_user_kmaddress {
	local		xfrm_address
	remote		xfrm_address
	reserved	const[0, int32]
	family		flags[xfrm_family, int16]
}

xfrm_mark {
	v	int32[3475289:3475293]
	m	int32
}

xfrm_address_filter {
	saddr	xfrm_address
	daddr	xfrm_address
	family	flags[xfrm_family, int16]
	splen	int8
	dplen	int8
}

xfrmu_spdhthresh4 {
	lbits	int8[0:32]
	rbits	int8[0:32]
}

xfrmu_spdhthresh6 {
	lbits	int8[0:128]
	rbits	int8[0:128]
}

xfrm_selector {
	daddr		xfrm_address
	saddr		xfrm_address
	dport		sock_port
	dport_mask	int16be[opt]
	sport		sock_port
	sport_mask	int16be[opt]
	family		flags[xfrm_family, int16]
	prefixlen_d	flags[xfrm_prefixlens, int8]
	prefixlen_s	flags[xfrm_prefixlens, int8]
	proto		flags[ipv6_types, int8]
	ifindex		ifindex[opt]
	user		uid
}

xfrm_lifetime_cfg {
	soft_byte_limit			int64
	hard_byte_limit			int64
	soft_packet_limit		int64
	hard_packet_limit		int64
	soft_add_expires_seconds	int64
	hard_add_expires_seconds	int64
	soft_use_expires_seconds	int64
	hard_use_expires_seconds	int64
}

xfrm_lifetime_cur {
	bytes		int64
	packets		int64
	add_time	int64
	use_time	int64
}

xfrm_stats {
	replay_window		int32
	replay			int32
	integrity_failed	int32
}

xfrm_algo_hash {
	alg_name	alg_hash_name
	alg_key_len	bitsize[alg_key, int32]
	alg_key		array[int8]
}

xfrm_algo_blkcipher {
	alg_name	alg_blkcipher_name
	alg_key_len	bitsize[alg_key, int32]
	alg_key		array[int8]
}

xfrm_algo_compress {
	alg_name	alg_compress_name
	alg_key_len	bitsize[alg_key, int32]
	alg_key		array[int8]
}

xfrm_algo_auth {
	alg_name	alg_hash_name
	alg_key_len	bitsize[alg_key, int32]
	alg_icv_len	flags[xfrm_algo_truncbits, int32]
	alg_key		array[int8]
}

xfrm_algo_aead {
	alg_name	alg_aead_name
	alg_key_len	bitsize[alg_key, int32]
	alg_icv_len	flags[xfrm_algo_truncbits, int32]
	alg_key		array[int8]
}

xfrm_algo_truncbits = 0, 64, 96, 128, 160, 192, 256, 384, 512

xfrm_id {
	daddr	xfrm_address
	spi	xfrm_spi
	proto	flags[xfrm_proto, int8]
}

xfrm_address [
	in	ipv4_addr
	in6	ipv6_addr
]

xfrm_filter {
	info	xfrm_userpolicy_info
	tmpl	xfrm_user_tmpl
}

xfrm_userpolicy_info {
	sel		xfrm_selector
	lft		xfrm_lifetime_cfg
	curlft		xfrm_lifetime_cur
	priority	int32
	index		xfrm_policy_index
	dir		flags[xfrm_policy_dir, int8]
	action		flags[xfrm_policy_actions, int8]
	flags		flags[xfrm_policy_flags, int8]
	share		flags[xfrm_policy_shares, int8]
}

xfrm_user_tmpl {
	id		xfrm_id
	family		flags[xfrm_family, int16]
	saddr		xfrm_address
	reqid		xfrm_req_id
	mode		flags[xfrm_mode, int8]
	share		flags[xfrm_policy_shares, int8]
	optional	int8
	aalgos		int32
	ealgos		int32
	calgos		int32
}

xfrm_mode = XFRM_MODE_TRANSPORT, XFRM_MODE_TUNNEL, XFRM_MODE_ROUTEOPTIMIZATION, XFRM_MODE_IN_TRIGGER, XFRM_MODE_BEET
xfrm_state = XFRM_STATE_NOECN, XFRM_STATE_DECAP_DSCP, XFRM_STATE_NOPMTUDISC, XFRM_STATE_WILDRECV, XFRM_STATE_ICMP, XFRM_STATE_AF_UNSPEC, XFRM_STATE_ALIGN4, XFRM_STATE_ESN
xfrm_family = AF_INET, AF_INET6
xfrm_proto = IPPROTO_AH, IPPROTO_ESP, IPPROTO_COMP, IPPROTO_DSTOPTS, IPPROTO_ROUTING, IPSEC_PROTO_ANY
xfrm_policy_types = XFRM_POLICY_TYPE_MAIN, XFRM_POLICY_TYPE_SUB
xfrm_policy_actions = XFRM_POLICY_ALLOW, XFRM_POLICY_BLOCK
xfrm_policy_flags = XFRM_POLICY_LOCALOK, XFRM_POLICY_ICMP
xfrm_policy_shares = XFRM_SHARE_ANY, XFRM_SHARE_SESSION, XFRM_SHARE_USER, XFRM_SHARE_UNIQUE
xfrm_policy_dir = XFRM_POLICY_IN, XFRM_POLICY_OUT, XFRM_POLICY_FWD
xfrm_prefixlens = 32, 128
xfrm_encap_type = -3, -2, -1, 0, 1, 2, 3
