1c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh/*	$NetBSD: ipsec_doi.h,v 1.9 2006/12/09 05:52:57 manu Exp $	*/
20a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
30a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* Id: ipsec_doi.h,v 1.15 2006/08/11 16:06:30 vanhu Exp */
40a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
50a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/*
60a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
70a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * All rights reserved.
80a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *
90a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Redistribution and use in source and binary forms, with or without
100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * modification, are permitted provided that the following conditions
110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * are met:
120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 1. Redistributions of source code must retain the above copyright
130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *    notice, this list of conditions and the following disclaimer.
140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 2. Redistributions in binary form must reproduce the above copyright
150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *    notice, this list of conditions and the following disclaimer in the
160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *    documentation and/or other materials provided with the distribution.
170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 3. Neither the name of the project nor the names of its contributors
180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *    may be used to endorse or promote products derived from this software
190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *    without specific prior written permission.
200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang *
210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * SUCH DAMAGE.
320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang */
330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifndef _IPSEC_DOI_H
350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define _IPSEC_DOI_H
360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* refered to RFC2407 */
380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSEC_DOI 1
400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.2 IPSEC Situation Definition */
420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_SIT_IDENTITY_ONLY           0x00000001
430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_SIT_SECRECY                 0x00000002
440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_SIT_INTEGRITY               0x00000004
450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.4.1 IPSEC Security Protocol Identifiers */
470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* 4.4.2 IPSEC ISAKMP Transform Values */
480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_PROTO_ISAKMP                        1
490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_KEY_IKE                             1
500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.4.1 IPSEC Security Protocol Identifiers */
520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_PROTO_IPSEC_AH                      2
530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* 4.4.3 IPSEC AH Transform Values */
540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_MD5                              2
550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_SHA                              3
560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_DES                              4
570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_SHA256                           5
580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_SHA384                           6
590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_AH_SHA512                           7
600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.4.1 IPSEC Security Protocol Identifiers */
620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_PROTO_IPSEC_ESP                     3
630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* 4.4.4 IPSEC ESP Transform Identifiers */
640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_DES_IV64				1
650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_DES				2
660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_3DES				3
670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_RC5				4
680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_IDEA				5
690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_CAST				6
700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_BLOWFISH				7
710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_3IDEA				8
720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_DES_IV32				9
730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_RC4				10
740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_NULL				11
750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_AES				12
760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_CAMELLIA				22
770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#if 1
780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* draft-ietf-ipsec-ciph-aes-cbc-00.txt */
790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_TWOFISH				253
800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#else
810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* SSH uses these value for now */
820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ESP_TWOFISH				250
830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.4.1 IPSEC Security Protocol Identifiers */
860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_PROTO_IPCOMP                        4
870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  /* 4.4.5 IPSEC IPCOMP Transform Identifiers */
880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_IPCOMP_OUI				1
890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_IPCOMP_DEFLATE			2
900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_IPCOMP_LZS				3
910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.5 IPSEC Security Association Attributes */
930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* NOTE: default value is not included in a packet. */
940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_SA_LD_TYPE              1 /* B */
950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_TYPE_DEFAULT      1
960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_TYPE_SEC          1
970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_TYPE_KB           2
980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_TYPE_MAX          3
990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_SA_LD                   2 /* V */
1000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_SEC_DEFAULT      28800 /* 8 hours */
1010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_SA_LD_KB_MAX  (~(1 << ((sizeof(int) << 3) - 1)))
1020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_GRP_DESC                3 /* B */
1030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_ENC_MODE                4 /* B */
1040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/* default value: host dependent */
1050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_ANY            0	/* NOTE:internal use */
1060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_TUNNEL         1
1070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_TRNS           2
1080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* NAT-T draft-ietf-ipsec-nat-t-ike-05 and later */
1100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_RFC	3
1110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_UDPTRNS_RFC	4
1120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* NAT-T up to draft-ietf-ipsec-nat-t-ike-04 */
1140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_DRAFT	61443
1150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_ENC_MODE_UDPTRNS_DRAFT		61444
1160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_AUTH                    5 /* B */
1180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/* 0 means not to use authentication. */
1190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_HMAC_MD5           1
1200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_HMAC_SHA1          2
1210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_DES_MAC            3
1220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_KPDK               4 /*RFC-1826(Key/Pad/Data/Key)*/
1230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_HMAC_SHA2_256      5
1240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_HMAC_SHA2_384      6
1250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_HMAC_SHA2_512      7
1260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define   IPSECDOI_ATTR_AUTH_NONE               254	/* NOTE:internal use */
1270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/*
1280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	 * When negotiating ESP without authentication, the Auth
1290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	 * Algorithm attribute MUST NOT be included in the proposal.
1300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	 * When negotiating ESP without confidentiality, the Auth
1310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	 * Algorithm attribute MUST be included in the proposal and
1320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	 * the ESP transform ID must be ESP_NULL.
1330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	*/
1340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_KEY_LENGTH              6 /* B */
1350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_KEY_ROUNDS              7 /* B */
1360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_COMP_DICT_SIZE          8 /* B */
1370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_COMP_PRIVALG            9 /* V */
1380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_SECCTX
1400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ATTR_SECCTX		     10 /* V */
1410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
1420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.6.1 Security Association Payload */
1440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct ipsecdoi_pl_sa {
1450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct isakmp_gen h;
1460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct ipsecdoi_sa_b {
1470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		u_int32_t doi; /* Domain of Interpretation */
1480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		u_int32_t sit; /* Situation */
1490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	} b;
1500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/* followed by Leveled Domain Identifier and so on. */
1510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} __attribute__((__packed__));
1520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct ipsecdoi_secrecy_h {
1540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	u_int16_t len;
1550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	u_int16_t reserved;
1560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/* followed by the value */
1570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} __attribute__((__packed__));
1580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* 4.6.2 Identification Payload Content */
1600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct ipsecdoi_pl_id {
1610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct isakmp_gen h;
1620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct ipsecdoi_id_b {
1630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		u_int8_t type;		/* ID Type */
1640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		u_int8_t proto_id;	/* Protocol ID */
1650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		u_int16_t port;		/* Port */
1660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	} b;
1670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/* followed by Identification Data */
1680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} __attribute__((__packed__));
1690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV4_ADDR                        1
1710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_FQDN                             2
1720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_USER_FQDN                        3
1730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV4_ADDR_SUBNET                 4
1740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV6_ADDR                        5
1750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV6_ADDR_SUBNET                 6
1760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV4_ADDR_RANGE                  7
1770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_IPV6_ADDR_RANGE                  8
1780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_DER_ASN1_DN                      9
1790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_DER_ASN1_GN                      10
1800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_ID_KEY_ID                           11
1810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* compressing doi type, it's internal use. */
1830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_UNDEFINED	0
1840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_FQDN		1
1850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_USERFQDN		2
1860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_KEYID		3
1870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_ADDRESS		4
1880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_ASN1DN		5
1890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDTYPE_SUBNET		6
1900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* qualifiers for KEYID (and maybe others) */
1920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDQUAL_UNSPEC		0
1930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDQUAL_FILE		1
1940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IDQUAL_TAG		2
1950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* The use for checking proposal payload. This is not exchange type. */
1970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_TYPE_PH1	0
1980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define IPSECDOI_TYPE_PH2	1
1990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct isakmpsa;
2010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct ipsecdoi_pl_sa;
2020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct saprop;
2030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct saproto;
2040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct satrns;
2050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct prop_pair;
2060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_checkph1proposal __P((vchar_t *, struct ph1handle *));
2080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_selectph2proposal __P((struct ph2handle *));
2090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_checkph2proposal __P((struct ph2handle *));
2100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern struct prop_pair **get_proppair __P((vchar_t *, int));
212c91307af2622f6625525f3c1f9c954376df950adChia-chi Yehextern vchar_t *get_sabyproppair __P((struct prop_pair *, struct ph1handle *));
2130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_updatespi __P((struct ph2handle *iph2));
2140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern vchar_t *get_sabysaprop __P((struct saprop *, vchar_t *));
2150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_chkcmpids( const vchar_t *, const vchar_t *, int );
2160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_checkid1 __P((struct ph1handle *));
2170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_setid1 __P((struct ph1handle *));
2180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int set_identifier __P((vchar_t **, int, vchar_t *));
2190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int set_identifier_qual __P((vchar_t **, int, vchar_t *, int));
2200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_setid2 __P((struct ph2handle *));
2210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern vchar_t *ipsecdoi_sockaddr2id __P((struct sockaddr *, u_int, u_int));
2220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_id2sockaddr __P((vchar_t *, struct sockaddr *,
2230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	u_int8_t *, u_int16_t *));
2240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern char *ipsecdoi_id2str __P((const vchar_t *));
2250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern vchar_t *ipsecdoi_sockrange2id __P((	struct sockaddr *,
2260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct sockaddr *, u_int));
2270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
228c91307af2622f6625525f3c1f9c954376df950adChia-chi Yehextern vchar_t *ipsecdoi_setph1proposal __P((struct isakmpsa *));
2290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_setph2proposal __P((struct ph2handle *));
2300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_transportmode __P((struct saprop *));
2310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_get_defaultlifetime __P((void));
2320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_checkalgtypes __P((int, int, int, int));
2330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipproto2doi __P((int));
2340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int doi2ipproto __P((int));
2350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_t2satrns __P((struct isakmp_pl_t *,
2370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	struct saprop *, struct saproto *, struct satrns *));
2380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int ipsecdoi_authalg2trnsid __P((int));
2390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int idtype2doi __P((int));
2400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangextern int doi2idtype __P((int));
2410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif /* _IPSEC_DOI_H */
244