12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * All rights reserved.
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms, with or without
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * modification, are permitted provided that the following conditions
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * are met:
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    documentation and/or other materials provided with the distribution.
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 3. Neither the name of the project nor the names of its contributors
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    may be used to endorse or promote products derived from this software
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *    without specific prior written permission.
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * SUCH DAMAGE.
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* YIPS @(#)$Id: isakmp.h,v 1.10 2002/12/11 07:13:54 guy Exp $ */
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* refer to RFC 2408 */
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* must include <netinet/in.h> */
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#if !defined(_ISAKMP_H_)
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define _ISAKMP_H_
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef u_char cookie_t[8];
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef u_char msgid_t[4];
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projecttypedef struct { /* i_cookie + r_cookie */
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	cookie_t i_ck;
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	cookie_t r_ck;
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} isakmp_index;
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define INITIATOR       1
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define RESPONDER       2
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PORT_ISAKMP 500
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define GENERATE  1
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define VALIDATE  0
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Phase of oakley definition */
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/*
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project  0000 0000 0000 0000
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project       |    |||| ||||
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project       |    |||| ++++--> negosiation number in phase
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project       |    ++++-------> phase number
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project       +---------------> expire ?
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */
622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH1      0x0010
632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH2      0x0020
642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_EXPIRED  0x0100
652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NGP_0    0x0000
672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NGP_1    0x0001
682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NGP_2    0x0002
692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NGP_3    0x0003
702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NGP_4    0x0004
712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH1_N    (ISAKMP_PH1 | ISAKMP_NGP_0)  /* i.e. spawn */
732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH1_1    (ISAKMP_PH1 | ISAKMP_NGP_1)
742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH1_2    (ISAKMP_PH1 | ISAKMP_NGP_2)
752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH1_3    (ISAKMP_PH1 | ISAKMP_NGP_3)
762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH2_N    (ISAKMP_PH2 | ISAKMP_NGP_0)
772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH2_1    (ISAKMP_PH2 | ISAKMP_NGP_1)
782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH2_2    (ISAKMP_PH2 | ISAKMP_NGP_2)
792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_PH2_3    (ISAKMP_PH2 | ISAKMP_NGP_3)
802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_TIMER_DEFAULT     10 /* seconds */
822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_TRY_DEFAULT        3 /* times */
832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.1 ISAKMP Header Format
852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                          Initiator                            !
882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                            Cookie                             !
892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                          Responder                            !
912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                            Cookie                             !
922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !  Next Payload ! MjVer ! MnVer ! Exchange Type !     Flags     !
942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                          Message ID                           !
962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !                            Length                             !
982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project*/
1002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp {
1012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	cookie_t i_ck;		/* Initiator Cookie */
1022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	cookie_t r_ck;		/* Responder Cookie */
1032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t np;		/* Next Payload Type */
1042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t vers;
1052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_VERS_MAJOR	0xf0
1062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_VERS_MAJOR_SHIFT	4
1072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_VERS_MINOR	0x0f
1082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_VERS_MINOR_SHIFT	0
1092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t etype;		/* Exchange Type */
1102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t flags;		/* Flags */
1112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	msgid_t msgid;
1122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t len;		/* Length */
1132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Next Payload Type */
1162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_NONE   0 /* NONE*/
1172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_SA     1 /* Security Association */
1182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_P      2 /* Proposal */
1192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_T      3 /* Transform */
1202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_KE     4 /* Key Exchange */
1212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_ID     5 /* Identification */
1222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_CERT   6 /* Certificate */
1232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_CR     7 /* Certificate Request */
1242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_HASH   8 /* Hash */
1252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_SIG    9 /* Signature */
1262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_NONCE 10 /* Nonce */
1272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_N     11 /* Notification */
1282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_D     12 /* Delete */
1292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NPTYPE_VID   13 /* Vendor ID */
1302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_MAJOR_VERSION  1
1322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_MINOR_VERSION  0
1332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Exchange Type */
1352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_NONE   0 /* NONE */
1362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_BASE   1 /* Base */
1372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_IDENT  2 /* Identity Proteciton */
1382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_AUTH   3 /* Authentication Only */
1392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_AGG    4 /* Aggressive */
1402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_ETYPE_INF    5 /* Informational */
1412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Flags */
1432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_FLAG_E 0x01 /* Encryption Bit */
1442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_FLAG_C 0x02 /* Commit Bit */
1452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.2 Payload Generic Header
1472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
1482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        ! Next Payload  !   RESERVED    !         Payload Length        !
1502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project*/
1522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_gen {
1532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  np;       /* Next Payload */
1542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  reserved; /* RESERVED, unused, must set to 0 */
1552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t len;      /* Payload Length */
1562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.3 Data Attributes
1592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
1602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !A!       Attribute Type        !    AF=0  Attribute Length     !
1622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        !F!                             !    AF=1  Attribute Value      !
1632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        .                   AF=0  Attribute Value                       .
1652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        .                   AF=1  Not Transmitted                       .
1662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
1672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project*/
1682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_data {
1692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t type;     /* defined by DOI-spec, and Attribute Format */
1702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t lorv;     /* if f equal 1, Attribute Length */
1712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	                  /* if f equal 0, Attribute Value */
1722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* if f equal 1, Attribute Value */
1732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_GEN_TLV 0x0000
1752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_GEN_TV  0x8000
1762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* mask for type of attribute format */
1772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_GEN_MASK 0x8000
1782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.4 Security Association Payload */
1802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* MAY NOT be used, because of being defined in ipsec-doi. */
1812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/*
1822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	If the current payload is the last in the message,
1832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	then the value of the next payload field will be 0.
1842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	This field MUST NOT contain the
1852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	values for the Proposal or Transform payloads as they are considered
1862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	part of the security association negotiation.  For example, this
1872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	field would contain the value "10" (Nonce payload) in the first
1882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	message of a Base Exchange (see Section 4.4) and the value "0" in the
1892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	first message of an Identity Protect Exchange (see Section 4.5).
1902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	*/
1912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_sa {
1922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
1932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t doi; /* Domain of Interpretation */
1942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t sit; /* Situation */
1952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
1962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
1972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.5 Proposal Payload */
1982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/*
1992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	The value of the next payload field MUST only contain the value "2"
2002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	or "0".  If there are additional Proposal payloads in the message,
2012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	then this field will be 2.  If the current Proposal payload is the
2022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	last within the security association proposal, then this field will
2032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	be 0.
2042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	*/
2052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_p {
2062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t p_no;      /* Proposal # */
2082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t prot_id;   /* Protocol */
2092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t spi_size;  /* SPI Size */
2102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t num_t;     /* Number of Transforms */
2112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* SPI */
2122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.6 Transform Payload */
2152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/*
2162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	The value of the next payload field MUST only contain the value "3"
2172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	or "0".  If there are additional Transform payloads in the proposal,
2182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	then this field will be 3.  If the current Transform payload is the
2192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	last within the proposal, then this field will be 0.
2202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	*/
2212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_t {
2222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  t_no;     /* Transform # */
2242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  t_id;     /* Transform-Id */
2252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t reserved; /* RESERVED2 */
2262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* SA Attributes */
2272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.7 Key Exchange Payload */
2302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_ke {
2312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Key Exchange Data */
2332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.8 Identification Payload */
2362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* MUST NOT to be used, because of being defined in ipsec-doi. */
2372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_id {
2382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	union {
2402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		u_int8_t  id_type;   /* ID Type */
2412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		u_int32_t doi_data;  /* DOI Specific ID Data */
2422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	} d;
2432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Identification Data */
2442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.9 Certificate Payload */
2472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_cert {
2482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t encode; /* Cert Encoding */
2502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	char   cert;   /* Certificate Data */
2512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		/*
2522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		This field indicates the type of
2532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		certificate or certificate-related information contained in the
2542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		Certificate Data field.
2552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		*/
2562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* Certificate Type */
2592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_NONE   0
2602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_PKCS   1
2612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_PGP    2
2622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_DNS    3
2632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_SIGN   4
2642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_KE     5
2652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_KT     6
2662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_CRL    7
2672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_ARL    8
2682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_CERT_SPKI   9
2692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.10 Certificate Request Payload */
2712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_cr {
2722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t num_cert; /* # Cert. Types */
2742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/*
2752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	Certificate Types (variable length)
2762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	  -- Contains a list of the types of certificates requested,
2772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	  sorted in order of preference.  Each individual certificate
2782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	  type is 1 octet.  This field is NOT requiredo
2792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	*/
2802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* # Certificate Authorities (1 octet) */
2812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Certificate Authorities (variable length) */
2822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.11 Hash Payload */
2852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* may not be used, because of having only data. */
2862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_hash {
2872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Hash Data */
2892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.12 Signature Payload */
2922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* may not be used, because of having only data. */
2932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_sig {
2942949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
2952949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Signature Data */
2962949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
2972949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
2982949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.13 Nonce Payload */
2992949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* may not be used, because of having only data. */
3002949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_nonce {
3012949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
3022949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Nonce Data */
3032949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3042949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3052949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.14 Notification Payload */
3062949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_n {
3072949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
3082949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t doi;      /* Domain of Interpretation */
3092949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  prot_id;  /* Protocol-ID */
3102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  spi_size; /* SPI Size */
3112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t type;     /* Notify Message Type */
3122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* SPI */
3132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* Notification Data */
3142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.14.1 Notify Message Types */
3172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* NOTIFY MESSAGES - ERROR TYPES */
3182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_PAYLOAD_TYPE           1
3192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_DOI_NOT_SUPPORTED              2
3202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_SITUATION_NOT_SUPPORTED        3
3212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_COOKIE                 4
3222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_MAJOR_VERSION          5
3232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_MINOR_VERSION          6
3242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_EXCHANGE_TYPE          7
3252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_FLAGS                  8
3262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_MESSAGE_ID             9
3272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_PROTOCOL_ID            10
3282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_SPI                    11
3292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_TRANSFORM_ID           12
3302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_ATTRIBUTES_NOT_SUPPORTED       13
3312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_NO_PROPOSAL_CHOSEN             14
3322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_BAD_PROPOSAL_SYNTAX            15
3332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_PAYLOAD_MALFORMED              16
3342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_KEY_INFORMATION        17
3352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_ID_INFORMATION         18
3362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_CERT_ENCODING          19
3372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_CERTIFICATE            20
3382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_BAD_CERT_REQUEST_SYNTAX        21
3392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_CERT_AUTHORITY         22
3402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_HASH_INFORMATION       23
3412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_AUTHENTICATION_FAILED          24
3422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_INVALID_SIGNATURE              25
3432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_ADDRESS_NOTIFICATION           26
3442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* NOTIFY MESSAGES - STATUS TYPES */
3452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_NTYPE_CONNECTED                   16384
3462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* using only to log */
3472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define ISAKMP_LOG_RETRY_LIMIT_REACHED           65530
3482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 3.15 Delete Payload */
3502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_pl_d {
3512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_gen h;
3522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int32_t doi;      /* Domain of Interpretation */
3532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  prot_id;  /* Protocol-Id */
3542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int8_t  spi_size; /* SPI Size */
3552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	u_int16_t num_spi;  /* # of SPIs */
3562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	/* SPI(es) */
3572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_ph1tab {
3612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_ph1 *head;
3622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_ph1 *tail;
3632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	int len;
3642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstruct isakmp_ph2tab {
3672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_ph2 *head;
3682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	struct isakmp_ph2 *tail;
3692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	int len;
3702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project};
3712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define EXCHANGE_PROXY   1
3732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define EXCHANGE_MYSELF  0
3742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PFS_NEED	1
3762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#define PFS_NONEED	0
3772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
3782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif /* !defined(_ISAKMP_H_) */
379