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