1c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh/*	$NetBSD: strnames.c,v 1.7.6.1 2007/08/01 11:52:22 vanhu Exp $	*/
20a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
30a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/*	$KAME: strnames.c,v 1.25 2003/11/13 10:53:26 itojun 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#include "config.h"
350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/types.h>
370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/param.h>
380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <sys/socket.h>
390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <netinet/in.h>
410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include PATH_IPSEC_H
420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <netinet/in.h>
430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <stdio.h>
450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <stdlib.h>
460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID
470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include <resolv.h>
480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "var.h"
510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "misc.h"
520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "vmbuf.h"
530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "plog.h"
540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "isakmp_var.h"
560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "isakmp.h"
570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID
580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#  include "isakmp_xauth.h"
590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#  include "isakmp_unity.h"
600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#  include "isakmp_cfg.h"
610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "ipsec_doi.h"
630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "oakley.h"
640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "handler.h"
650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "pfkey.h"
660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "strnames.h"
670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "algorithm.h"
680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstruct ksmap {
700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int key;
710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	char *str;
720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	char *(*f) __P((int));
730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangnum2str(n)
770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int n;
780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	static char buf[20];
800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	snprintf(buf, sizeof(buf), "%d", n);
820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return buf;
840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* isakmp.h */
870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_state(t, d, s)
890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int t, d, s;
900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	switch (t) {
920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_AGG:
930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		switch (d) {
940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case INITIATOR:
950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "agg I msg1";
980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_ESTABLISHED:
990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "agg I msg2";
1000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case RESPONDER:
1040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
1060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "agg R msg1";
1070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		}
1110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		break;
1120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_BASE:
1130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		switch (d) {
1140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case INITIATOR:
1150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
1170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "base I msg1";
1180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG2SENT:
1190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "base I msg2";
1200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case RESPONDER:
1240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
1260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "base R msg1";
1270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_ESTABLISHED:
1280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "base R msg2";
1290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		}
1330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		break;
1340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_IDENT:
1350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		switch (d) {
1360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case INITIATOR:
1370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
1390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident I msg1";
1400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG2SENT:
1410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident I msg2";
1420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG3SENT:
1430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident I msg3";
1440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case RESPONDER:
1480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG1SENT:
1500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident R msg1";
1510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_MSG2SENT:
1520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident R msg2";
1530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE1ST_ESTABLISHED:
1540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "ident R msg3";
1550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		}
1590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		break;
1600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_QUICK:
1610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		switch (d) {
1620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case INITIATOR:
1630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE2ST_MSG1SENT:
1650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "quick I msg1";
1660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE2ST_ADDSA:
1670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "quick I msg2";
1680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		case RESPONDER:
1720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			switch (s) {
1730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE2ST_MSG1SENT:
1740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "quick R msg1";
1750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			case PHASE2ST_COMMIT:
1760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				return "quick R msg2";
1770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			default:
1780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang				break;
1790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			}
1800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		}
1810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		break;
1820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	default:
1830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_NONE:
1840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_AUTH:
1850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_INFO:
1860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_NEWGRP:
1870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case ISAKMP_ETYPE_ACKINFO:
1880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		break;
1890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	}
1900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	/*NOTREACHED*/
1910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return "???";
1930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
1940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
1950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_certtype[] = {
1960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_NONE,	"NONE",					NULL },
1970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_PKCS7,	"PKCS #7 wrapped X.509 certificate",	NULL },
1980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_PGP,	"PGP Certificate",			NULL },
1990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_DNS,	"DNS Signed Key",			NULL },
2000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_X509SIGN,	"X.509 Certificate Signature",		NULL },
2010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_X509KE,	"X.509 Certificate Key Exchange",	NULL },
2020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_KERBEROS,	"Kerberos Tokens",			NULL },
2030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_CRL,	"Certificate Revocation List (CRL)",	NULL },
2040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_ARL,	"Authority Revocation List (ARL)",	NULL },
2050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_SPKI,	"SPKI Certificate",			NULL },
2060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CERT_X509ATTR,	"X.509 Certificate Attribute",		NULL },
2070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
2080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
2100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_certtype(k)
2110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
2120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
2130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
2140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_certtype); i++)
2150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_certtype[i].key == k)
2160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_certtype[i].str;
2170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
2180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
2190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_etype[] = {
2210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_NONE,	"None",			NULL },
2220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_BASE,	"Base",			NULL },
2230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_IDENT,	"Identity Protection",	NULL },
2240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_AUTH,	"Authentication Only",	NULL },
2250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_AGG,	"Aggressive",		NULL },
2260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_INFO,	"Informational",	NULL },
2270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_CFG,	"Mode config",		NULL },
2280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_QUICK,	"Quick",		NULL },
2290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_NEWGRP,	"New Group",		NULL },
2300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_ETYPE_ACKINFO,	"Acknowledged Informational",	NULL },
2310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
2320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
2340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_etype(k)
2350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
2360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
2370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
2380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_etype); i++)
2390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_etype[i].key == k)
2400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_etype[i].str;
2410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
2420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
2430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_notify_msg[] = {
2450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_PAYLOAD_TYPE,	"INVALID-PAYLOAD-TYPE",		NULL },
2460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_DOI_NOT_SUPPORTED,	"DOI-NOT-SUPPORTED",		NULL },
2470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_SITUATION_NOT_SUPPORTED,	"SITUATION-NOT-SUPPORTED",	NULL },
2480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_COOKIE,		"INVALID-COOKIE",		NULL },
2490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_MAJOR_VERSION,	"INVALID-MAJOR-VERSION",	NULL },
2500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_MINOR_VERSION,	"INVALID-MINOR-VERSION",	NULL },
2510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_EXCHANGE_TYPE,	"INVALID-EXCHANGE-TYPE",	NULL },
2520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_FLAGS,		"INVALID-FLAGS",		NULL },
2530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_MESSAGE_ID,	"INVALID-MESSAGE-ID",		NULL },
2540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_PROTOCOL_ID,	"INVALID-PROTOCOL-ID",		NULL },
2550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_SPI,		"INVALID-SPI",			NULL },
2560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_TRANSFORM_ID,	"INVALID-TRANSFORM-ID",		NULL },
2570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_ATTRIBUTES_NOT_SUPPORTED, "ATTRIBUTES-NOT-SUPPORTED",	NULL },
2580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_NO_PROPOSAL_CHOSEN,	"NO-PROPOSAL-CHOSEN",		NULL },
2590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_BAD_PROPOSAL_SYNTAX,	"BAD-PROPOSAL-SYNTAX",		NULL },
2600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_PAYLOAD_MALFORMED,	"PAYLOAD-MALFORMED",		NULL },
2610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_KEY_INFORMATION,	"INVALID-KEY-INFORMATION",	NULL },
2620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_ID_INFORMATION,	"INVALID-ID-INFORMATION",	NULL },
2630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_CERT_ENCODING,	"INVALID-CERT-ENCODING",	NULL },
2640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_CERTIFICATE,	"INVALID-CERTIFICATE",		NULL },
2650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_BAD_CERT_REQUEST_SYNTAX,	"BAD-CERT-REQUEST-SYNTAX",	NULL },
2660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_CERT_AUTHORITY,	"INVALID-CERT-AUTHORITY",	NULL },
2670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_HASH_INFORMATION, "INVALID-HASH-INFORMATION",	NULL },
2680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_AUTHENTICATION_FAILED,	"AUTHENTICATION-FAILED",	NULL },
2690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INVALID_SIGNATURE,	"INVALID-SIGNATURE",		NULL },
2700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_ADDRESS_NOTIFICATION,	"ADDRESS-NOTIFICATION",		NULL },
2710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_NOTIFY_SA_LIFETIME,	"NOTIFY-SA-LIFETIME",		NULL },
2720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_CERTIFICATE_UNAVAILABLE,	"CERTIFICATE-UNAVAILABLE",	NULL },
2730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_UNSUPPORTED_EXCHANGE_TYPE, "UNSUPPORTED-EXCHANGE-TYPE",	NULL },
2740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_UNEQUAL_PAYLOAD_LENGTHS,	"UNEQUAL-PAYLOAD-LENGTHS",	NULL },
2750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_CONNECTED,		"CONNECTED",			NULL },
2760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_RESPONDER_LIFETIME,	"RESPONDER-LIFETIME",		NULL },
2770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_REPLAY_STATUS,		"REPLAY-STATUS",		NULL },
2780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_INITIAL_CONTACT,		"INITIAL-CONTACT",		NULL },
2790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID
2800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NTYPE_UNITY_HEARTBEAT,		"HEARTBEAT (Unity)",		NULL },
2810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
2820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_LOG_RETRY_LIMIT_REACHED,	"RETRY-LIMIT-REACHED",		NULL },
2830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
2840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
2860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_notify_msg(k)
2870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
2880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
2890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
2900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_notify_msg); i++)
2910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_notify_msg[i].key == k)
2920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_notify_msg[i].str;
2930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
2950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
2960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
2970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_nptype[] = {
2980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NONE,		"none",		NULL },
2990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_SA,		"sa",		NULL },
3000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_P,		"prop",		NULL },
3010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_T,		"trns",		NULL },
3020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_KE,		"ke",		NULL },
3030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_ID,		"id",		NULL },
3040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_CERT,		"cert",		NULL },
3050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_CR,		"cr",		NULL },
3060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_HASH,		"hash",		NULL },
3070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_SIG,		"sig",		NULL },
3080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NONCE,		"nonce",	NULL },
3090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_N,		"notify",	NULL },
3100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_D,		"delete",	NULL },
3110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_VID,		"vid",		NULL },
3120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_ATTR,		"attr",		NULL },
3130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_GSS,		"gss id",	NULL },
3140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NATD_RFC,	"nat-d",	NULL },
3150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NATOA_RFC,	"nat-oa",	NULL },
3160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NATD_DRAFT,	"nat-d",	NULL },
3170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_NATOA_DRAFT,	"nat-oa",	NULL },
3180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_NPTYPE_FRAG,		"ike frag",	NULL },
3190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
3200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
3210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
3220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_nptype(k)
3230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
3240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
3250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
3260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_nptype); i++)
3270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_nptype[i].key == k)
3280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_nptype[i].str;
3290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
3300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
3310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
3320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID
3330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* isakmp_cfg.h / isakmp_unity.h / isakmp_xauth.h */
3340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_cfg_type[] = {
3350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_ADDRESS,		"INTERNAL_IP4_ADDRESS",		NULL },
3360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_NETMASK,		"INTERNAL_IP4_NETMASK",		NULL },
3370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_DNS,		"INTERNAL_IP4_DNS",		NULL },
3380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_NBNS,		"INTERNAL_IP4_NBNS",		NULL },
3390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_ADDRESS_EXPIRY,	"INTERNAL_ADDRESS_EXPIRY",	NULL },
3400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_DHCP,		"INTERNAL_IP4_DHCP",		NULL },
3410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ APPLICATION_VERSION,		"APPLICATION_VERSION",		NULL },
3420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_ADDRESS,		"INTERNAL_IP6_ADDRESS",		NULL },
3430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_NETMASK,		"INTERNAL_IP6_NETMASK",		NULL },
3440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_DNS,		"INTERNAL_IP6_DNS",		NULL },
3450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_NBNS,		"INTERNAL_IP6_NBNS",		NULL },
3460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_DHCP,		"INTERNAL_IP6_DHCP",		NULL },
3470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP4_SUBNET,		"INTERNAL_IP4_SUBNET",		NULL },
3480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SUPPORTED_ATTRIBUTES,		"SUPPORTED_ATTRIBUTES",		NULL },
3490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ INTERNAL_IP6_SUBNET,		"INTERNAL_IP6_SUBNET",		NULL },
3500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_TYPE,			"XAUTH_TYPE",			NULL },
3510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_USER_NAME,		"XAUTH_USER_NAME",		NULL },
3520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_USER_PASSWORD,		"XAUTH_USER_PASSWORD",		NULL },
3530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_PASSCODE,		"XAUTH_PASSCODE",		NULL },
3540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_MESSAGE,		"XAUTH_MESSAGE",		NULL },
3550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_CHALLENGE,		"XAUTH_CHALLENGE",		NULL },
3560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_DOMAIN,			"XAUTH_DOMAIN",			NULL },
3570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_STATUS,			"XAUTH_STATUS",			NULL },
3580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_NEXT_PIN,		"XAUTH_NEXT_PIN",		NULL },
3590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ XAUTH_ANSWER,			"XAUTH_ANSWER",			NULL },
3600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_BANNER,			"UNITY_BANNER",			NULL },
3610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_SAVE_PASSWD,		"UNITY_SAVE_PASSWD",		NULL },
3620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_DEF_DOMAIN,		"UNITY_DEF_DOMAIN",		NULL },
3630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_SPLITDNS_NAME,		"UNITY_SPLITDNS_NAME",		NULL },
3640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_SPLIT_INCLUDE,		"UNITY_SPLIT_INCLUDE",		NULL },
3650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_NATT_PORT,		"UNITY_NATT_PORT",		NULL },
3660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_LOCAL_LAN,		"UNITY_LOCAL_LAN",		NULL },
3670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_PFS,			"UNITY_PFS",			NULL },
3680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_FW_TYPE,		"UNITY_FW_TYPE",		NULL },
3690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_BACKUP_SERVERS,		"UNITY_BACKUP_SERVERS",		NULL },
3700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ UNITY_DDNS_HOSTNAME,		"UNITY_DDNS_HOSTNAME",		NULL },
3710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
3720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
3730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
3740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_cfg_type(k)
3750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
3760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
3770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
3780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_cfg_type); i++)
3790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_cfg_type[i].key == k)
3800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_cfg_type[i].str;
3810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
3820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
3830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
3840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* isakmp_cfg.h / isakmp_unity.h / isakmp_xauth.h */
3850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_isakmp_cfg_ptype[] = {
3860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CFG_ACK,		"mode config ACK",		NULL },
3870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CFG_SET,		"mode config SET",		NULL },
3880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CFG_REQUEST,		"mode config REQUEST",		NULL },
3890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ ISAKMP_CFG_REPLY,		"mode config REPLY",		NULL },
3900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
3910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
3920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
3930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_isakmp_cfg_ptype(k)
3940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
3950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
3960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
3970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_isakmp_cfg_ptype); i++)
3980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_isakmp_cfg_ptype[i].key == k)
3990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_isakmp_cfg_ptype[i].str;
4000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
4010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
4020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
4040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* ipsec_doi.h */
4060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_proto[] = {
4070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_PROTO_ISAKMP,	"ISAKMP",	s_ipsecdoi_trns_isakmp },
4080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_PROTO_IPSEC_AH,	"AH",		s_ipsecdoi_trns_ah },
4090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_PROTO_IPSEC_ESP,	"ESP",		s_ipsecdoi_trns_esp },
4100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_PROTO_IPCOMP,	"IPCOMP",	s_ipsecdoi_trns_ipcomp },
4110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
4120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
4140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_proto(k)
4150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
4160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
4170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
4180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_proto); i++)
4190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_proto[i].key == k)
4200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_proto[i].str;
4210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
4220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
4230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_trns_isakmp[] = {
4250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_KEY_IKE,	"IKE", NULL },
4260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
4270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
4290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_trns_isakmp(k)
4300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
4310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
4320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
4330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_isakmp); i++)
4340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_trns_isakmp[i].key == k)
4350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_trns_isakmp[i].str;
4360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
4370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
4380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_trns_ah[] = {
4400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_MD5,	"MD5", NULL },
4410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_SHA,	"SHA", NULL },
4420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_DES,	"DES", NULL },
4430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_SHA256,	"SHA256", NULL },
4440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_SHA384,	"SHA384", NULL },
4450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_AH_SHA512,	"SHA512", NULL },
4460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
4470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
4490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_trns_ah(k)
4500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
4510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
4520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
4530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_ah); i++)
4540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_trns_ah[i].key == k)
4550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_trns_ah[i].str;
4560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
4570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
4580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_trns_esp[] = {
4600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_DES_IV64,	"DES_IV64",	NULL },
4610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_DES,		"DES",		NULL },
4620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_3DES,		"3DES",		NULL },
4630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_RC5,		"RC5",		NULL },
4640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_IDEA,		"IDEA",		NULL },
4650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_CAST,		"CAST",		NULL },
4660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_BLOWFISH,	"BLOWFISH",	NULL },
4670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_3IDEA,		"3IDEA",	NULL },
4680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_DES_IV32,	"DES_IV32",	NULL },
4690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_RC4,		"RC4",		NULL },
4700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_NULL,		"NULL",		NULL },
4710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_AES,		"AES",		NULL },
4720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_TWOFISH,		"TWOFISH",	NULL },
4730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ESP_CAMELLIA,	"CAMELLIA",	NULL },
4740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
4750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
4770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_trns_esp(k)
4780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
4790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
4800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
4810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_esp); i++)
4820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_trns_esp[i].key == k)
4830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_trns_esp[i].str;
4840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
4850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
4860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_trns_ipcomp[] = {
4880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_IPCOMP_OUI,		"OUI",		NULL},
4890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_IPCOMP_DEFLATE,	"DEFLATE",	NULL},
4900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_IPCOMP_LZS,		"LZS",		NULL},
4910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
4920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
4930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
4940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_trns_ipcomp(k)
4950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
4960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
4970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
4980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_ipcomp); i++)
4990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_trns_ipcomp[i].key == k)
5000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_trns_ipcomp[i].str;
5010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
5020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_trns(proto, trns)
5060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int proto, trns;
5070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
5080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
5090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_proto); i++)
5100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_proto[i].key == proto
5110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		 && name_ipsecdoi_proto[i].f)
5120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return (name_ipsecdoi_proto[i].f)(trns);
5130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(trns);
5140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_ipsec[] = {
5170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_SA_LD_TYPE,	"SA Life Type",		s_ipsecdoi_ltype },
5180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_SA_LD,		"SA Life Duration",	NULL },
5190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_GRP_DESC,	"Group Description",	NULL },
5200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE,	"Encryption Mode",	s_ipsecdoi_encmode },
5210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH,		"Authentication Algorithm", s_ipsecdoi_auth },
5220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_KEY_LENGTH,	"Key Length",		NULL },
5230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_KEY_ROUNDS,	"Key Rounds",		NULL },
5240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_COMP_DICT_SIZE,	"Compression Dictionary Size",	NULL },
5250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_COMP_PRIVALG,	"Compression Private Algorithm", NULL },
5260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
5270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_attr(k)
5300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
5310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
5320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
5330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_ipsec); i++)
5340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_ipsec[i].key == k)
5350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_ipsec[i].str;
5360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
5370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_ipsec_ltype[] = {
5400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_SA_LD_TYPE_SEC,	"seconds",	NULL },
5410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_SA_LD_TYPE_KB,	"kilobytes",	NULL },
5420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
5430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_ltype(k)
5460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
5470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
5480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
5490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_ipsec_ltype); i++)
5500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_ipsec_ltype[i].key == k)
5510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_ipsec_ltype[i].str;
5520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
5530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_ipsec_encmode[] = {
5560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_ANY,		"Any",		NULL },
5570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_TUNNEL,	"Tunnel",	NULL },
5580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_TRNS,		"Transport",	NULL },
5590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_RFC,	"UDP-Tunnel",	NULL },
5600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_UDPTRNS_RFC,	"UDP-Transport",	NULL },
5610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_DRAFT,	"UDP-Tunnel",	NULL },
5620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_ENC_MODE_UDPTRNS_DRAFT,	"UDP-Transport",	NULL },
5630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
5640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_encmode(k)
5670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
5680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
5690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
5700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_ipsec_encmode); i++)
5710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_ipsec_encmode[i].key == k)
5720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_ipsec_encmode[i].str;
5730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
5740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_ipsec_auth[] = {
5770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_HMAC_MD5,		"hmac-md5",	NULL },
5780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_HMAC_SHA1,		"hmac-sha",	NULL },
5790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_HMAC_SHA2_256,	"hmac-sha256",	NULL },
5800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_HMAC_SHA2_384,	"hmac-sha384",	NULL },
5810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_HMAC_SHA2_512,	"hmac-sha512",	NULL },
5820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_DES_MAC,		"des-mac",	NULL },
5830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ATTR_AUTH_KPDK,		"kpdk",		NULL },
5840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
5850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_auth(k)
5880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
5890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
5900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
5910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_ipsec_auth); i++)
5920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_ipsec_auth[i].key == k)
5930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_ipsec_auth[i].str;
5940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
5950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
5960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
5970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
5980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_attr_v(type, val)
5990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int type, val;
6000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
6010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
6020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_ipsec); i++)
6030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_ipsec[i].key == type
6040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		 && name_attr_ipsec[i].f)
6050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return (name_attr_ipsec[i].f)(val);
6060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(val);
6070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
6080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsecdoi_ident[] = {
6100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV4_ADDR,	"IPv4_address",	NULL },
6110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_FQDN,		"FQDN",		NULL },
6120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_USER_FQDN,	"User_FQDN",	NULL },
6130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV4_ADDR_SUBNET,	"IPv4_subnet",	NULL },
6140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV6_ADDR,	"IPv6_address",	NULL },
6150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV6_ADDR_SUBNET,	"IPv6_subnet",	NULL },
6160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV4_ADDR_RANGE,	"IPv4_address_range",	NULL },
6170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_IPV6_ADDR_RANGE,	"IPv6_address_range",	NULL },
6180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_DER_ASN1_DN,	"DER_ASN1_DN",	NULL },
6190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_DER_ASN1_GN,	"DER_ASN1_GN",	NULL },
6200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSECDOI_ID_KEY_ID,		"KEY_ID",	NULL },
6210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
6220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
6240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsecdoi_ident(k)
6250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
6260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
6270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
6280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsecdoi_ident); i++)
6290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsecdoi_ident[i].key == k)
6300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsecdoi_ident[i].str;
6310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
6320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
6330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* oakley.h */
6350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_oakley_attr[] = {
6360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG,		"Encryption Algorithm",	s_attr_isakmp_enc },
6370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG,		"Hash Algorithm",	s_attr_isakmp_hash },
6380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD,	"Authentication Method", s_oakley_attr_method },
6390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC,		"Group Description",	s_attr_isakmp_desc },
6400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_TYPE,		"Group Type",		s_attr_isakmp_group },
6410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_PI,		"Group Prime/Irreducible Polynomial",	NULL },
6420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_GEN_ONE,	"Group Generator One",	NULL },
6430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_GEN_TWO,	"Group Generator Two",	NULL },
6440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_CURVE_A,	"Group Curve A",	NULL },
6450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_CURVE_B,	"Group Curve B",	NULL },
6460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_SA_LD_TYPE,	"Life Type",		s_attr_isakmp_ltype },
6470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_SA_LD,		"Life Duration",	NULL },
6480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_PRF,		"PRF",			NULL },
6490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_KEY_LEN,		"Key Length",		NULL },
6500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_FIELD_SIZE,	"Field Size",		NULL },
6510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_ORDER,	"Group Order",		NULL },
6520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_BLOCK_SIZE,	"Block Size",		NULL },
6530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GSS_ID,		"GSS-API endpoint name",NULL },
6540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
6550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
6570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_oakley_attr(k)
6580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
6590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
6600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
6610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_oakley_attr); i++)
6620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_oakley_attr[i].key == k)
6630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_oakley_attr[i].str;
6640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
6650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
6660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_enc[] = {
6680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_DES,	"DES-CBC",		NULL },
6690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_IDEA,	"IDEA-CBC",		NULL },
6700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_BLOWFISH,	"Blowfish-CBC",		NULL },
6710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_RC5,	"RC5-R16-B64-CBC",	NULL },
6720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_3DES,	"3DES-CBC",		NULL },
6730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_CAST,	"CAST-CBC",		NULL },
6740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_ENC_ALG_AES,	"AES-CBC",		NULL },
6750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
6760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
6780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_attr_isakmp_enc(k)
6790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
6800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
6810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
6820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_enc); i++)
6830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_enc[i].key == k)
6840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_enc[i].str;
6850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
6860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
6870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_hash[] = {
6890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_MD5,	"MD5",		NULL },
6900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_SHA,	"SHA",		NULL },
6910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_TIGER,	"Tiger",	NULL },
6920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_SHA2_256,"SHA256",	NULL },
6930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_SHA2_384,"SHA384",	NULL },
6940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_HASH_ALG_SHA2_512,"SHA512",	NULL },
6950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
6960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
6970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
6980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_attr_isakmp_hash(k)
6990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
7000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
7010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
7020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_hash); i++)
7030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_hash[i].key == k)
7040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_hash[i].str;
7050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
7060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
7070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_method[] = {
7090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_PSKEY,		"pre-shared key",	NULL },
7100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_DSSSIG,		"DSS signatures",	NULL },
7110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_RSASIG,		"RSA signatures",	NULL },
7120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_RSAENC,		"Encryption with RSA",	NULL },
7130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_RSAREV,		"Revised encryption with RSA",	NULL },
7140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_EGENC,		"Encryption with El-Gamal",	NULL },
7150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_EGREV,		"Revised encryption with El-Gamal",	NULL },
7160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_GSSAPI
7170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_GSSAPI_KRB,		"GSS-API on Kerberos 5", NULL },
7180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
7190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef ENABLE_HYBRID
7200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_R,		"Hybrid DSS server",	NULL },
7210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_R,		"Hybrid RSA server",	NULL },
7220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_I,		"Hybrid DSS client",	NULL },
7230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_I,		"Hybrid RSA client",	NULL },
7240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_I,	"XAuth pskey client",	NULL },
7250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_R,	"XAuth pskey server",	NULL },
7260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_I,	"XAuth RSASIG client",	NULL },
7270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_R,	"XAuth RSASIG server",	NULL },
7280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
7290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
7300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
7320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_oakley_attr_method(k)
7330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
7340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
7350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
7360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_method); i++)
7370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_method[i].key == k)
7380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_method[i].str;
7390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
7400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
7410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_desc[] = {
7430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP768,		"768-bit MODP group",	NULL },
7440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP1024,	"1024-bit MODP group",	NULL },
7450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_EC2N155,		"EC2N group on GP[2^155]",	NULL },
7460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_EC2N185,		"EC2N group on GP[2^185]",	NULL },
7470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP1536,	"1536-bit MODP group",	NULL },
7480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP2048,	"2048-bit MODP group",	NULL },
7490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP3072,	"3072-bit MODP group",	NULL },
7500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP4096,	"4096-bit MODP group",	NULL },
7510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP6144,	"6144-bit MODP group",	NULL },
7520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_DESC_MODP8192,	"8192-bit MODP group",	NULL },
7530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
7540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
7560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_attr_isakmp_desc(k)
7570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
7580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
7590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
7600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_desc); i++)
7610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_desc[i].key == k)
7620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_desc[i].str;
7630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
7640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
7650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_group[] = {
7670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_TYPE_MODP,	"MODP",	NULL },
7680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_TYPE_ECP,	"ECP",	NULL },
7690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_GRP_TYPE_EC2N,	"EC2N",	NULL },
7700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
7710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
7730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_attr_isakmp_group(k)
7740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
7750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
7760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
7770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_group); i++)
7780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_group[i].key == k)
7790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_group[i].str;
7800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
7810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
7820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_attr_isakmp_ltype[] = {
7840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_SA_LD_TYPE_SEC,	"seconds",	NULL },
7850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ OAKLEY_ATTR_SA_LD_TYPE_KB,	"kilobytes",	NULL },
7860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
7870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
7890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_attr_isakmp_ltype(k)
7900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
7910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
7920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
7930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_attr_isakmp_ltype); i++)
7940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_attr_isakmp_ltype[i].key == k)
7950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_attr_isakmp_ltype[i].str;
7960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
7970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
7980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
7990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
8000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_oakley_attr_v(type, val)
8010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int type, val;
8020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
8030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
8040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_oakley_attr); i++)
8050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_oakley_attr[i].key == type
8060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		 && name_oakley_attr[i].f)
8070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return (name_oakley_attr[i].f)(val);
8080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(val);
8090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
8100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* netinet6/ipsec.h */
8120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_ipsec_level[] = {
8130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_LEVEL_USE,	"use",		NULL },
8140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_LEVEL_REQUIRE,	"require",	NULL },
8150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_LEVEL_UNIQUE,	"unique",	NULL },
8160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
8170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
8190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_ipsec_level(k)
8200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
8210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
8220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
8230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_ipsec_level); i++)
8240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_ipsec_level[i].key == k)
8250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_ipsec_level[i].str;
8260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
8270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
8280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_algclass[] = {
8300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_ipsec_enc,	"ipsec enc",	s_ipsecdoi_trns_esp },
8310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_ipsec_auth,	"ipsec auth",	s_ipsecdoi_trns_ah },
8320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_ipsec_comp,	"ipsec comp",	s_ipsecdoi_trns_ipcomp },
8330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_isakmp_enc,	"isakmp enc",	s_attr_isakmp_enc },
8340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_isakmp_hash,	"isakmp hash",	s_attr_isakmp_hash },
8350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_isakmp_dh,	"isakmp dh",	s_attr_isakmp_desc },
8360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ algclass_isakmp_ameth, "isakmp auth method",	s_oakley_attr_method },
8370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
8380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
8400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_algclass(k)
8410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
8420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
8430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
8440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_algclass); i++)
8450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_algclass[i].key == k)
8460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_algclass[i].str;
8470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
8480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
8490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
8510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_algtype(class, n)
8520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int class, n;
8530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
8540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
8550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_algclass); i++)
8560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_algclass[i].key == class
8570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		 && name_algclass[i].f)
8580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return (name_algclass[i].f)(n);
8590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(n);
8600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
8610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang/* pfkey.h */
8630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_pfkey_type[] = {
8640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_GETSPI,		"GETSPI",	NULL },
8650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_UPDATE,		"UPDATE",	NULL },
8660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_ADD,		"ADD",		NULL },
8670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_DELETE,		"DELETE",	NULL },
8680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_GET,		"GET",		NULL },
8690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_ACQUIRE,		"ACQUIRE",	NULL },
8700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_REGISTER,	"REGISTER",	NULL },
8710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_EXPIRE,		"EXPIRE",	NULL },
8720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_FLUSH,		"FLUSH",	NULL },
8730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_DUMP,		"DUMP",		NULL },
8740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_PROMISC,	"X_PROMISC",	NULL },
8750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_PCHANGE,	"X_PCHANGE",	NULL },
8760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDUPDATE,	"X_SPDUPDATE",	NULL },
8770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDADD,	"X_SPDADD",	NULL },
8780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDDELETE,	"X_SPDDELETE",	NULL },
8790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDGET,	"X_SPDGET",	NULL },
8800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDACQUIRE,	"X_SPDACQUIRE",	NULL },
8810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDDUMP,	"X_SPDDUMP",	NULL },
8820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDFLUSH,	"X_SPDFLUSH",	NULL },
8830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDSETIDX,	"X_SPDSETIDX",	NULL },
8840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDEXPIRE,	"X_SPDEXPIRE",	NULL },
8850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SPDDELETE2,	"X_SPDDELETE2",	NULL },
8860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef SADB_X_NAT_T_NEW_MAPPING
8870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_NAT_T_NEW_MAPPING, "X_NAT_T_NEW_MAPPING", NULL },
8880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
8890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef SADB_X_MIGRATE
8900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_MIGRATE,	"X_MIGRATE",	NULL },
8910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
8920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
8930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
8940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
8950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_pfkey_type(k)
8960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
8970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
8980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
8990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_pfkey_type); i++)
9000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_pfkey_type[i].key == k)
9010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_pfkey_type[i].str;
9020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
9030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
9040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_pfkey_satype[] = {
9060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_UNSPEC,	"UNSPEC",	NULL },
9070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_AH,	"AH",		NULL },
9080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_ESP,	"ESP",		NULL },
9090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_RSVP,	"RSVP",		NULL },
9100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_OSPFV2,	"OSPFV2",	NULL },
9110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_RIPV2,	"RIPV2",	NULL },
9120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_SATYPE_MIP,	"MIP",		NULL },
9130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ SADB_X_SATYPE_IPCOMP,	"IPCOMP",	NULL },
9140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
9150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
9170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_pfkey_satype(k)
9180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
9190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
9200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
9210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_pfkey_satype); i++)
9220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_pfkey_satype[i].key == k)
9230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_pfkey_satype[i].str;
9240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
9250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
9260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangstatic struct ksmap name_direction[] = {
9280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_DIR_INBOUND,	"in",	NULL },
9290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_DIR_OUTBOUND,	"out",	NULL },
9300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifdef HAVE_POLICY_FWD
9310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{ IPSEC_DIR_FWD,	"fwd",	NULL },
9320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif
9330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang};
9340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
9360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_direction(k)
9370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
9380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
9390a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int i;
9400a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	for (i = 0; i < ARRAYLEN(name_direction); i++)
9410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		if (name_direction[i].key == k)
9420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang			return name_direction[i].str;
9430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
9440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
9450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
9470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_proto(k)
9480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	int k;
9490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
9500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	switch (k) {
9510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case IPPROTO_ICMP:
9520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		return "icmp";
9530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case IPPROTO_TCP:
9540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		return "tcp";
9550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case IPPROTO_UDP:
9560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		return "udp";
9570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case IPPROTO_ICMPV6:
9580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		return "icmpv6";
9590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	case IPSEC_ULPROTO_ANY:
9600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang		return "any";
9610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	}
9620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang	return num2str(k);
9640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
9650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
9670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_doi(int k)
9680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
9690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  switch (k) {
9700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IPSEC_DOI:
9710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "ipsec_doi";
9720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    default:
9730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return num2str(k);
9740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  }
9750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
9760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
9770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
9780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_etype (int k)
9790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
9800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  switch (k) {
9810a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_NONE:
9820a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_none";
9830a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_BASE:
9840a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "base";
9850a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_IDENT:
9860a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "main";
9870a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_AUTH:
9880a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_auth";
9890a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_AGG:
9900a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "aggressive";
9910a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_INFO:
9920a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_info";
9930a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_QUICK:
9940a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_quick";
9950a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_NEWGRP:
9960a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_newgrp";
9970a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case ISAKMP_ETYPE_ACKINFO:
9980a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "_ackinfo";
9990a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    default:
10000a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return num2str(k);
10010a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  }
10020a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
10030a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
10040a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
10050a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_idtype (int k)
10060a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
10070a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  switch (k) {
10080a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IDTYPE_FQDN:
10090a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "fqdn";
10100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IDTYPE_USERFQDN:
10110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "user_fqdn";
10120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IDTYPE_KEYID:
10130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "keyid";
10140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IDTYPE_ADDRESS:
10150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "address";
10160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case IDTYPE_ASN1DN:
10170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "asn1dn";
10180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    default:
10190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return num2str(k);
10200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  }
10210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
10220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang
10230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangchar *
10240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangs_switch (int k)
10250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang{
10260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  switch (k) {
10270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case FALSE:
10280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "off";
10290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    case TRUE:
10300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return "on";
10310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang    default:
10320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang      return num2str(k);
10330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang  }
10340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}
1035