xref: /openbsd-src/sbin/iked/types.h (revision f36db9c4e75d6f4b6e40410c8005109158705028)
1*f36db9c4Syasuoka /*	$OpenBSD: types.h,v 1.55 2024/07/13 12:22:46 yasuoka Exp $	*/
245ae9d61Sreyk 
345ae9d61Sreyk /*
465c540d0Spatrick  * Copyright (c) 2019 Tobias Heider <tobias.heider@stusta.de>
5fcebd35dSreyk  * Copyright (c) 2010-2013 Reyk Floeter <reyk@openbsd.org>
645ae9d61Sreyk  *
745ae9d61Sreyk  * Permission to use, copy, modify, and distribute this software for any
845ae9d61Sreyk  * purpose with or without fee is hereby granted, provided that the above
945ae9d61Sreyk  * copyright notice and this permission notice appear in all copies.
1045ae9d61Sreyk  *
1145ae9d61Sreyk  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1245ae9d61Sreyk  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1345ae9d61Sreyk  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1445ae9d61Sreyk  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1545ae9d61Sreyk  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1645ae9d61Sreyk  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1745ae9d61Sreyk  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1845ae9d61Sreyk  */
1945ae9d61Sreyk 
20a3e464c5Sreyk #ifndef IKED_TYPES_H
21a3e464c5Sreyk #define IKED_TYPES_H
2245ae9d61Sreyk 
23ddb14f44Sreyk #ifndef IKED_USER
249bab3272Sreyk #define IKED_USER		"_iked"
25ddb14f44Sreyk #endif
2645ae9d61Sreyk 
2745ae9d61Sreyk #ifndef IKED_CONFIG
2845ae9d61Sreyk #define IKED_CONFIG		"/etc/iked.conf"
2945ae9d61Sreyk #endif
3072178c58Sreyk 
3145ae9d61Sreyk #define IKED_SOCKET		"/var/run/iked.sock"
3245ae9d61Sreyk 
3345ae9d61Sreyk #ifndef IKED_CA
348d7c6f4cSjsg #define IKED_CA			"/etc/iked/"
3545ae9d61Sreyk #endif
3672178c58Sreyk 
3745ae9d61Sreyk #define IKED_CA_DIR		"ca/"
3845ae9d61Sreyk #define IKED_CRL_DIR		"crls/"
3945ae9d61Sreyk #define IKED_CERT_DIR		"certs/"
409efaed12Sreyk #define IKED_PUBKEY_DIR		"pubkeys/"
4145ae9d61Sreyk #define IKED_PRIVKEY		IKED_CA "private/local.key"
4245ae9d61Sreyk #define IKED_PUBKEY		"local.pub"
4345ae9d61Sreyk 
4487148674Stobhe #define IKED_VENDOR_ID		"OpenIKED-"
45*f36db9c4Syasuoka #define IKED_NAS_ID		"OpenIKED"
4687148674Stobhe 
476d3b905bSmarkus #define IKED_OCSP_RESPCERT	"ocsp/responder.crt"
486d3b905bSmarkus 
4945ae9d61Sreyk #define IKED_OPT_VERBOSE	0x00000001
5045ae9d61Sreyk #define IKED_OPT_NOACTION	0x00000002
511ae9ce49Stobhe #define IKED_OPT_PASSIVE	0x00000004
5245ae9d61Sreyk 
5345ae9d61Sreyk #define IKED_IKE_PORT		500
5445ae9d61Sreyk #define IKED_NATT_PORT		4500
5545ae9d61Sreyk 
5645ae9d61Sreyk #define IKED_NONCE_MIN		16	/* XXX 128 bits */
5745ae9d61Sreyk #define IKED_NONCE_SIZE		32	/* XXX 256 bits */
5845ae9d61Sreyk 
59d4bcf9ebSreyk #define IKED_COOKIE_MIN		1	/* min 1 bytes */
60d4bcf9ebSreyk #define IKED_COOKIE_MAX		64	/* max 64 bytes */
61d4bcf9ebSreyk 
62c0b327e6Spatrick #define IKED_COOKIE2_MIN	8	/* min 8 bytes */
63c0b327e6Spatrick #define IKED_COOKIE2_MAX	64	/* max 64 bytes */
64c0b327e6Spatrick 
6578e2301dSgsoares #define IKED_ID_SIZE		1024	/* XXX should be dynamic */
6645ae9d61Sreyk #define IKED_PSK_SIZE		1024	/* XXX should be dynamic */
6745ae9d61Sreyk #define IKED_MSGBUF_MAX		8192
6845ae9d61Sreyk #define IKED_CFG_MAX		16	/* maximum CP attributes */
69fc3e0ec8Stobhe #define IKED_IPPROTO_MAX	16
7045ae9d61Sreyk #define IKED_TAG_SIZE		64
710927abadSmikeb #define IKED_CYCLE_BUFFERS	8	/* # of static buffers for mapping */
7245ae9d61Sreyk #define IKED_PASSWORD_SIZE	256	/* limited by most EAP types */
7345ae9d61Sreyk 
7438270304Sderaadt #define IKED_LIFETIME_BYTES	4294967296ULL	/* 4 GB */
75b0eeedd0Smikeb #define IKED_LIFETIME_SECONDS	10800	  	/* 3 hours */
76b0eeedd0Smikeb 
7745ae9d61Sreyk #define IKED_E			0x1000	/* Decrypted flag */
7845ae9d61Sreyk 
7945ae9d61Sreyk struct iked_constmap {
80d09d3a7dSreyk 	unsigned int	 cm_type;
8145ae9d61Sreyk 	const char	*cm_name;
8245ae9d61Sreyk 	const char	*cm_descr;
8345ae9d61Sreyk };
8445ae9d61Sreyk 
8545ae9d61Sreyk struct iked_transform {
86d09d3a7dSreyk 	uint8_t				 xform_type;
87d09d3a7dSreyk 	uint16_t			 xform_id;
88d09d3a7dSreyk 	uint16_t			 xform_length;
89d09d3a7dSreyk 	uint16_t			 xform_keylength;
90d09d3a7dSreyk 	unsigned int			 xform_score;
9145ae9d61Sreyk 	struct iked_constmap		*xform_map;
9245ae9d61Sreyk };
9345ae9d61Sreyk 
9445ae9d61Sreyk enum imsg_type {
9545ae9d61Sreyk 	IMSG_NONE,
9645ae9d61Sreyk 	IMSG_CTL_OK,
9745ae9d61Sreyk 	IMSG_CTL_FAIL,
9845ae9d61Sreyk 	IMSG_CTL_VERBOSE,
9945ae9d61Sreyk 	IMSG_CTL_NOTIFY,
10045ae9d61Sreyk 	IMSG_CTL_RELOAD,
10145ae9d61Sreyk 	IMSG_CTL_RESET,
102fc20f985Sreyk 	IMSG_CTL_COUPLE,
103fc20f985Sreyk 	IMSG_CTL_DECOUPLE,
104fc20f985Sreyk 	IMSG_CTL_ACTIVE,
105fc20f985Sreyk 	IMSG_CTL_PASSIVE,
1068c502e93Stobhe 	IMSG_CTL_RESET_ID,
107969a8793Stobhe 	IMSG_CTL_SHOW_SA,
108421819b6Stobhe 	IMSG_CTL_STATIC,
109e2015428Sreyk 	IMSG_COMPILE,
11045ae9d61Sreyk 	IMSG_UDP_SOCKET,
11145ae9d61Sreyk 	IMSG_PFKEY_SOCKET,
11245ae9d61Sreyk 	IMSG_IKE_MESSAGE,
11345ae9d61Sreyk 	IMSG_CFG_POLICY,
114fb5e93d4Smikeb 	IMSG_CFG_FLOW,
11545ae9d61Sreyk 	IMSG_CFG_USER,
116*f36db9c4Syasuoka 	IMSG_CFG_RADAUTH,
117*f36db9c4Syasuoka 	IMSG_CFG_RADACCT,
118*f36db9c4Syasuoka 	IMSG_CFG_RADSERVER,
119*f36db9c4Syasuoka 	IMSG_CFG_RADCFGMAP,
120*f36db9c4Syasuoka 	IMSG_CFG_RADDAE,
121*f36db9c4Syasuoka 	IMSG_CFG_RADDAECLIENT,
12245ae9d61Sreyk 	IMSG_CERTREQ,
12345ae9d61Sreyk 	IMSG_CERT,
12445ae9d61Sreyk 	IMSG_CERTVALID,
12545ae9d61Sreyk 	IMSG_CERTINVALID,
126055943a1Stobhe 	IMSG_SCERT,
127264f8b22Stobhe 	IMSG_IF_ADDADDR,
128264f8b22Stobhe 	IMSG_IF_DELADDR,
129264f8b22Stobhe 	IMSG_VROUTE_ADD,
130264f8b22Stobhe 	IMSG_VROUTE_DEL,
131264f8b22Stobhe 	IMSG_VROUTE_CLONE,
1329ef39cf4Stobhe 	IMSG_VDNS_ADD,
1339ef39cf4Stobhe 	IMSG_VDNS_DEL,
1346d3b905bSmarkus 	IMSG_OCSP_FD,
135c973c574Stobhe 	IMSG_OCSP_CFG,
136e8b444cdSreyk 	IMSG_AUTH,
137e8b444cdSreyk 	IMSG_PRIVKEY,
1386cf0fa19Stobhe 	IMSG_PUBKEY,
139b41cc0c8Stobhe 	IMSG_CTL_SHOW_CERTSTORE,
140a7dbf4aeStobhe 	IMSG_CTL_SHOW_STATS,
141a7dbf4aeStobhe 	IMSG_CTL_PROCFD,
1428e8f56e9Stobhe 	IMSG_CTL_PROCREADY,
14345ae9d61Sreyk };
14445ae9d61Sreyk 
145f2f2a684Sreyk enum privsep_procid {
14645ae9d61Sreyk 	PROC_PARENT = 0,
147ebfc3693Sreyk 	PROC_CONTROL,
14845ae9d61Sreyk 	PROC_CERT,
149ebfc3693Sreyk 	PROC_IKEV2,
15045ae9d61Sreyk 	PROC_MAX
15145ae9d61Sreyk };
15245ae9d61Sreyk 
15345ae9d61Sreyk enum flushmode {
15445ae9d61Sreyk 	RESET_RELOAD	= 0,
15545ae9d61Sreyk 	RESET_ALL,
15645ae9d61Sreyk 	RESET_CA,
15745ae9d61Sreyk 	RESET_POLICY,
15845ae9d61Sreyk 	RESET_SA,
159cd3f460fStobhe 	RESET_USER,
160*f36db9c4Syasuoka 	RESET_RADIUS,
16145ae9d61Sreyk };
16245ae9d61Sreyk 
163477ac106Sderaadt #ifndef nitems
164477ac106Sderaadt #define nitems(_a)   (sizeof((_a)) / sizeof((_a)[0]))
165477ac106Sderaadt #endif
166477ac106Sderaadt 
167a3e464c5Sreyk #endif /* IKED_TYPES_H */
168