Annotation of embedaddon/ipsec-tools/src/racoon/strnames.c, revision 1.1
1.1 ! misho 1: /* $NetBSD: strnames.c,v 1.9 2008/07/14 05:40:13 tteras Exp $ */
! 2:
! 3: /* $KAME: strnames.c,v 1.25 2003/11/13 10:53:26 itojun Exp $ */
! 4:
! 5: /*
! 6: * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
! 7: * All rights reserved.
! 8: *
! 9: * Redistribution and use in source and binary forms, with or without
! 10: * modification, are permitted provided that the following conditions
! 11: * are met:
! 12: * 1. Redistributions of source code must retain the above copyright
! 13: * notice, this list of conditions and the following disclaimer.
! 14: * 2. Redistributions in binary form must reproduce the above copyright
! 15: * notice, this list of conditions and the following disclaimer in the
! 16: * documentation and/or other materials provided with the distribution.
! 17: * 3. Neither the name of the project nor the names of its contributors
! 18: * may be used to endorse or promote products derived from this software
! 19: * without specific prior written permission.
! 20: *
! 21: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 31: * SUCH DAMAGE.
! 32: */
! 33:
! 34: #include "config.h"
! 35:
! 36: #include <sys/types.h>
! 37: #include <sys/param.h>
! 38: #include <sys/socket.h>
! 39:
! 40: #include <netinet/in.h>
! 41: #include PATH_IPSEC_H
! 42: #include <netinet/in.h>
! 43:
! 44: #include <stdio.h>
! 45: #include <stdlib.h>
! 46: #ifdef ENABLE_HYBRID
! 47: #include <resolv.h>
! 48: #endif
! 49:
! 50: #include "var.h"
! 51: #include "misc.h"
! 52: #include "vmbuf.h"
! 53: #include "plog.h"
! 54:
! 55: #include "isakmp_var.h"
! 56: #include "isakmp.h"
! 57: #ifdef ENABLE_HYBRID
! 58: # include "isakmp_xauth.h"
! 59: # include "isakmp_unity.h"
! 60: # include "isakmp_cfg.h"
! 61: #endif
! 62: #include "ipsec_doi.h"
! 63: #include "oakley.h"
! 64: #include "handler.h"
! 65: #include "pfkey.h"
! 66: #include "strnames.h"
! 67: #include "algorithm.h"
! 68:
! 69: struct ksmap {
! 70: int key;
! 71: char *str;
! 72: char *(*f) __P((int));
! 73: };
! 74:
! 75: char *
! 76: num2str(n)
! 77: int n;
! 78: {
! 79: static char buf[20];
! 80:
! 81: snprintf(buf, sizeof(buf), "%d", n);
! 82:
! 83: return buf;
! 84: }
! 85:
! 86: /* isakmp.h */
! 87: char *
! 88: s_isakmp_state(t, d, s)
! 89: int t, d, s;
! 90: {
! 91: switch (t) {
! 92: case ISAKMP_ETYPE_AGG:
! 93: switch (d) {
! 94: case INITIATOR:
! 95: switch (s) {
! 96: case PHASE1ST_MSG1SENT:
! 97: return "agg I msg1";
! 98: case PHASE1ST_ESTABLISHED:
! 99: return "agg I msg2";
! 100: default:
! 101: break;
! 102: }
! 103: case RESPONDER:
! 104: switch (s) {
! 105: case PHASE1ST_MSG1SENT:
! 106: return "agg R msg1";
! 107: default:
! 108: break;
! 109: }
! 110: }
! 111: break;
! 112: case ISAKMP_ETYPE_BASE:
! 113: switch (d) {
! 114: case INITIATOR:
! 115: switch (s) {
! 116: case PHASE1ST_MSG1SENT:
! 117: return "base I msg1";
! 118: case PHASE1ST_MSG2SENT:
! 119: return "base I msg2";
! 120: default:
! 121: break;
! 122: }
! 123: case RESPONDER:
! 124: switch (s) {
! 125: case PHASE1ST_MSG1SENT:
! 126: return "base R msg1";
! 127: case PHASE1ST_ESTABLISHED:
! 128: return "base R msg2";
! 129: default:
! 130: break;
! 131: }
! 132: }
! 133: break;
! 134: case ISAKMP_ETYPE_IDENT:
! 135: switch (d) {
! 136: case INITIATOR:
! 137: switch (s) {
! 138: case PHASE1ST_MSG1SENT:
! 139: return "ident I msg1";
! 140: case PHASE1ST_MSG2SENT:
! 141: return "ident I msg2";
! 142: case PHASE1ST_MSG3SENT:
! 143: return "ident I msg3";
! 144: default:
! 145: break;
! 146: }
! 147: case RESPONDER:
! 148: switch (s) {
! 149: case PHASE1ST_MSG1SENT:
! 150: return "ident R msg1";
! 151: case PHASE1ST_MSG2SENT:
! 152: return "ident R msg2";
! 153: case PHASE1ST_ESTABLISHED:
! 154: return "ident R msg3";
! 155: default:
! 156: break;
! 157: }
! 158: }
! 159: break;
! 160: case ISAKMP_ETYPE_QUICK:
! 161: switch (d) {
! 162: case INITIATOR:
! 163: switch (s) {
! 164: case PHASE2ST_MSG1SENT:
! 165: return "quick I msg1";
! 166: case PHASE2ST_ADDSA:
! 167: return "quick I msg2";
! 168: default:
! 169: break;
! 170: }
! 171: case RESPONDER:
! 172: switch (s) {
! 173: case PHASE2ST_MSG1SENT:
! 174: return "quick R msg1";
! 175: case PHASE2ST_COMMIT:
! 176: return "quick R msg2";
! 177: default:
! 178: break;
! 179: }
! 180: }
! 181: break;
! 182: default:
! 183: case ISAKMP_ETYPE_NONE:
! 184: case ISAKMP_ETYPE_AUTH:
! 185: case ISAKMP_ETYPE_INFO:
! 186: case ISAKMP_ETYPE_NEWGRP:
! 187: case ISAKMP_ETYPE_ACKINFO:
! 188: break;
! 189: }
! 190: /*NOTREACHED*/
! 191:
! 192: return "???";
! 193: }
! 194:
! 195: static struct ksmap name_isakmp_certtype[] = {
! 196: { ISAKMP_CERT_NONE, "NONE", NULL },
! 197: { ISAKMP_CERT_PKCS7, "PKCS #7 wrapped X.509 certificate", NULL },
! 198: { ISAKMP_CERT_PGP, "PGP Certificate", NULL },
! 199: { ISAKMP_CERT_DNS, "DNS Signed Key", NULL },
! 200: { ISAKMP_CERT_X509SIGN, "X.509 Certificate Signature", NULL },
! 201: { ISAKMP_CERT_X509KE, "X.509 Certificate Key Exchange", NULL },
! 202: { ISAKMP_CERT_KERBEROS, "Kerberos Tokens", NULL },
! 203: { ISAKMP_CERT_CRL, "Certificate Revocation List (CRL)", NULL },
! 204: { ISAKMP_CERT_ARL, "Authority Revocation List (ARL)", NULL },
! 205: { ISAKMP_CERT_SPKI, "SPKI Certificate", NULL },
! 206: { ISAKMP_CERT_X509ATTR, "X.509 Certificate Attribute", NULL },
! 207: };
! 208:
! 209: char *
! 210: s_isakmp_certtype(k)
! 211: int k;
! 212: {
! 213: int i;
! 214: for (i = 0; i < ARRAYLEN(name_isakmp_certtype); i++)
! 215: if (name_isakmp_certtype[i].key == k)
! 216: return name_isakmp_certtype[i].str;
! 217: return num2str(k);
! 218: }
! 219:
! 220: static struct ksmap name_isakmp_etype[] = {
! 221: { ISAKMP_ETYPE_NONE, "None", NULL },
! 222: { ISAKMP_ETYPE_BASE, "Base", NULL },
! 223: { ISAKMP_ETYPE_IDENT, "Identity Protection", NULL },
! 224: { ISAKMP_ETYPE_AUTH, "Authentication Only", NULL },
! 225: { ISAKMP_ETYPE_AGG, "Aggressive", NULL },
! 226: { ISAKMP_ETYPE_INFO, "Informational", NULL },
! 227: { ISAKMP_ETYPE_CFG, "Mode config", NULL },
! 228: { ISAKMP_ETYPE_QUICK, "Quick", NULL },
! 229: { ISAKMP_ETYPE_NEWGRP, "New Group", NULL },
! 230: { ISAKMP_ETYPE_ACKINFO, "Acknowledged Informational", NULL },
! 231: };
! 232:
! 233: char *
! 234: s_isakmp_etype(k)
! 235: int k;
! 236: {
! 237: int i;
! 238: for (i = 0; i < ARRAYLEN(name_isakmp_etype); i++)
! 239: if (name_isakmp_etype[i].key == k)
! 240: return name_isakmp_etype[i].str;
! 241: return num2str(k);
! 242: }
! 243:
! 244: static struct ksmap name_isakmp_notify_msg[] = {
! 245: { ISAKMP_NTYPE_INVALID_PAYLOAD_TYPE, "INVALID-PAYLOAD-TYPE", NULL },
! 246: { ISAKMP_NTYPE_DOI_NOT_SUPPORTED, "DOI-NOT-SUPPORTED", NULL },
! 247: { ISAKMP_NTYPE_SITUATION_NOT_SUPPORTED, "SITUATION-NOT-SUPPORTED", NULL },
! 248: { ISAKMP_NTYPE_INVALID_COOKIE, "INVALID-COOKIE", NULL },
! 249: { ISAKMP_NTYPE_INVALID_MAJOR_VERSION, "INVALID-MAJOR-VERSION", NULL },
! 250: { ISAKMP_NTYPE_INVALID_MINOR_VERSION, "INVALID-MINOR-VERSION", NULL },
! 251: { ISAKMP_NTYPE_INVALID_EXCHANGE_TYPE, "INVALID-EXCHANGE-TYPE", NULL },
! 252: { ISAKMP_NTYPE_INVALID_FLAGS, "INVALID-FLAGS", NULL },
! 253: { ISAKMP_NTYPE_INVALID_MESSAGE_ID, "INVALID-MESSAGE-ID", NULL },
! 254: { ISAKMP_NTYPE_INVALID_PROTOCOL_ID, "INVALID-PROTOCOL-ID", NULL },
! 255: { ISAKMP_NTYPE_INVALID_SPI, "INVALID-SPI", NULL },
! 256: { ISAKMP_NTYPE_INVALID_TRANSFORM_ID, "INVALID-TRANSFORM-ID", NULL },
! 257: { ISAKMP_NTYPE_ATTRIBUTES_NOT_SUPPORTED, "ATTRIBUTES-NOT-SUPPORTED", NULL },
! 258: { ISAKMP_NTYPE_NO_PROPOSAL_CHOSEN, "NO-PROPOSAL-CHOSEN", NULL },
! 259: { ISAKMP_NTYPE_BAD_PROPOSAL_SYNTAX, "BAD-PROPOSAL-SYNTAX", NULL },
! 260: { ISAKMP_NTYPE_PAYLOAD_MALFORMED, "PAYLOAD-MALFORMED", NULL },
! 261: { ISAKMP_NTYPE_INVALID_KEY_INFORMATION, "INVALID-KEY-INFORMATION", NULL },
! 262: { ISAKMP_NTYPE_INVALID_ID_INFORMATION, "INVALID-ID-INFORMATION", NULL },
! 263: { ISAKMP_NTYPE_INVALID_CERT_ENCODING, "INVALID-CERT-ENCODING", NULL },
! 264: { ISAKMP_NTYPE_INVALID_CERTIFICATE, "INVALID-CERTIFICATE", NULL },
! 265: { ISAKMP_NTYPE_BAD_CERT_REQUEST_SYNTAX, "BAD-CERT-REQUEST-SYNTAX", NULL },
! 266: { ISAKMP_NTYPE_INVALID_CERT_AUTHORITY, "INVALID-CERT-AUTHORITY", NULL },
! 267: { ISAKMP_NTYPE_INVALID_HASH_INFORMATION, "INVALID-HASH-INFORMATION", NULL },
! 268: { ISAKMP_NTYPE_AUTHENTICATION_FAILED, "AUTHENTICATION-FAILED", NULL },
! 269: { ISAKMP_NTYPE_INVALID_SIGNATURE, "INVALID-SIGNATURE", NULL },
! 270: { ISAKMP_NTYPE_ADDRESS_NOTIFICATION, "ADDRESS-NOTIFICATION", NULL },
! 271: { ISAKMP_NTYPE_NOTIFY_SA_LIFETIME, "NOTIFY-SA-LIFETIME", NULL },
! 272: { ISAKMP_NTYPE_CERTIFICATE_UNAVAILABLE, "CERTIFICATE-UNAVAILABLE", NULL },
! 273: { ISAKMP_NTYPE_UNSUPPORTED_EXCHANGE_TYPE, "UNSUPPORTED-EXCHANGE-TYPE", NULL },
! 274: { ISAKMP_NTYPE_UNEQUAL_PAYLOAD_LENGTHS, "UNEQUAL-PAYLOAD-LENGTHS", NULL },
! 275: { ISAKMP_NTYPE_CONNECTED, "CONNECTED", NULL },
! 276: { ISAKMP_NTYPE_RESPONDER_LIFETIME, "RESPONDER-LIFETIME", NULL },
! 277: { ISAKMP_NTYPE_REPLAY_STATUS, "REPLAY-STATUS", NULL },
! 278: { ISAKMP_NTYPE_INITIAL_CONTACT, "INITIAL-CONTACT", NULL },
! 279: { ISAKMP_NTYPE_R_U_THERE, "R-U-THERE", NULL },
! 280: { ISAKMP_NTYPE_R_U_THERE_ACK, "R-U-THERE-ACK", NULL },
! 281: #ifdef ENABLE_HYBRID
! 282: { ISAKMP_NTYPE_UNITY_HEARTBEAT, "HEARTBEAT (Unity)", NULL },
! 283: #endif
! 284: { ISAKMP_LOG_RETRY_LIMIT_REACHED, "RETRY-LIMIT-REACHED", NULL },
! 285: };
! 286:
! 287: char *
! 288: s_isakmp_notify_msg(k)
! 289: int k;
! 290: {
! 291: int i;
! 292: for (i = 0; i < ARRAYLEN(name_isakmp_notify_msg); i++)
! 293: if (name_isakmp_notify_msg[i].key == k)
! 294: return name_isakmp_notify_msg[i].str;
! 295:
! 296: return num2str(k);
! 297: }
! 298:
! 299: static struct ksmap name_isakmp_nptype[] = {
! 300: { ISAKMP_NPTYPE_NONE, "none", NULL },
! 301: { ISAKMP_NPTYPE_SA, "sa", NULL },
! 302: { ISAKMP_NPTYPE_P, "prop", NULL },
! 303: { ISAKMP_NPTYPE_T, "trns", NULL },
! 304: { ISAKMP_NPTYPE_KE, "ke", NULL },
! 305: { ISAKMP_NPTYPE_ID, "id", NULL },
! 306: { ISAKMP_NPTYPE_CERT, "cert", NULL },
! 307: { ISAKMP_NPTYPE_CR, "cr", NULL },
! 308: { ISAKMP_NPTYPE_HASH, "hash", NULL },
! 309: { ISAKMP_NPTYPE_SIG, "sig", NULL },
! 310: { ISAKMP_NPTYPE_NONCE, "nonce", NULL },
! 311: { ISAKMP_NPTYPE_N, "notify", NULL },
! 312: { ISAKMP_NPTYPE_D, "delete", NULL },
! 313: { ISAKMP_NPTYPE_VID, "vid", NULL },
! 314: { ISAKMP_NPTYPE_ATTR, "attr", NULL },
! 315: { ISAKMP_NPTYPE_GSS, "gss id", NULL },
! 316: { ISAKMP_NPTYPE_NATD_RFC, "nat-d", NULL },
! 317: { ISAKMP_NPTYPE_NATOA_RFC, "nat-oa", NULL },
! 318: { ISAKMP_NPTYPE_NATD_DRAFT, "nat-d", NULL },
! 319: { ISAKMP_NPTYPE_NATOA_DRAFT, "nat-oa", NULL },
! 320: { ISAKMP_NPTYPE_FRAG, "ike frag", NULL },
! 321: };
! 322:
! 323: char *
! 324: s_isakmp_nptype(k)
! 325: int k;
! 326: {
! 327: int i;
! 328: for (i = 0; i < ARRAYLEN(name_isakmp_nptype); i++)
! 329: if (name_isakmp_nptype[i].key == k)
! 330: return name_isakmp_nptype[i].str;
! 331: return num2str(k);
! 332: }
! 333:
! 334: #ifdef ENABLE_HYBRID
! 335: /* isakmp_cfg.h / isakmp_unity.h / isakmp_xauth.h */
! 336: static struct ksmap name_isakmp_cfg_type[] = {
! 337: { INTERNAL_IP4_ADDRESS, "INTERNAL_IP4_ADDRESS", NULL },
! 338: { INTERNAL_IP4_NETMASK, "INTERNAL_IP4_NETMASK", NULL },
! 339: { INTERNAL_IP4_DNS, "INTERNAL_IP4_DNS", NULL },
! 340: { INTERNAL_IP4_NBNS, "INTERNAL_IP4_NBNS", NULL },
! 341: { INTERNAL_ADDRESS_EXPIRY, "INTERNAL_ADDRESS_EXPIRY", NULL },
! 342: { INTERNAL_IP4_DHCP, "INTERNAL_IP4_DHCP", NULL },
! 343: { APPLICATION_VERSION, "APPLICATION_VERSION", NULL },
! 344: { INTERNAL_IP6_ADDRESS, "INTERNAL_IP6_ADDRESS", NULL },
! 345: { INTERNAL_IP6_NETMASK, "INTERNAL_IP6_NETMASK", NULL },
! 346: { INTERNAL_IP6_DNS, "INTERNAL_IP6_DNS", NULL },
! 347: { INTERNAL_IP6_NBNS, "INTERNAL_IP6_NBNS", NULL },
! 348: { INTERNAL_IP6_DHCP, "INTERNAL_IP6_DHCP", NULL },
! 349: { INTERNAL_IP4_SUBNET, "INTERNAL_IP4_SUBNET", NULL },
! 350: { SUPPORTED_ATTRIBUTES, "SUPPORTED_ATTRIBUTES", NULL },
! 351: { INTERNAL_IP6_SUBNET, "INTERNAL_IP6_SUBNET", NULL },
! 352: { XAUTH_TYPE, "XAUTH_TYPE", NULL },
! 353: { XAUTH_USER_NAME, "XAUTH_USER_NAME", NULL },
! 354: { XAUTH_USER_PASSWORD, "XAUTH_USER_PASSWORD", NULL },
! 355: { XAUTH_PASSCODE, "XAUTH_PASSCODE", NULL },
! 356: { XAUTH_MESSAGE, "XAUTH_MESSAGE", NULL },
! 357: { XAUTH_CHALLENGE, "XAUTH_CHALLENGE", NULL },
! 358: { XAUTH_DOMAIN, "XAUTH_DOMAIN", NULL },
! 359: { XAUTH_STATUS, "XAUTH_STATUS", NULL },
! 360: { XAUTH_NEXT_PIN, "XAUTH_NEXT_PIN", NULL },
! 361: { XAUTH_ANSWER, "XAUTH_ANSWER", NULL },
! 362: { UNITY_BANNER, "UNITY_BANNER", NULL },
! 363: { UNITY_SAVE_PASSWD, "UNITY_SAVE_PASSWD", NULL },
! 364: { UNITY_DEF_DOMAIN, "UNITY_DEF_DOMAIN", NULL },
! 365: { UNITY_SPLITDNS_NAME, "UNITY_SPLITDNS_NAME", NULL },
! 366: { UNITY_SPLIT_INCLUDE, "UNITY_SPLIT_INCLUDE", NULL },
! 367: { UNITY_NATT_PORT, "UNITY_NATT_PORT", NULL },
! 368: { UNITY_LOCAL_LAN, "UNITY_LOCAL_LAN", NULL },
! 369: { UNITY_PFS, "UNITY_PFS", NULL },
! 370: { UNITY_FW_TYPE, "UNITY_FW_TYPE", NULL },
! 371: { UNITY_BACKUP_SERVERS, "UNITY_BACKUP_SERVERS", NULL },
! 372: { UNITY_DDNS_HOSTNAME, "UNITY_DDNS_HOSTNAME", NULL },
! 373: };
! 374:
! 375: char *
! 376: s_isakmp_cfg_type(k)
! 377: int k;
! 378: {
! 379: int i;
! 380: for (i = 0; i < ARRAYLEN(name_isakmp_cfg_type); i++)
! 381: if (name_isakmp_cfg_type[i].key == k)
! 382: return name_isakmp_cfg_type[i].str;
! 383: return num2str(k);
! 384: }
! 385:
! 386: /* isakmp_cfg.h / isakmp_unity.h / isakmp_xauth.h */
! 387: static struct ksmap name_isakmp_cfg_ptype[] = {
! 388: { ISAKMP_CFG_ACK, "mode config ACK", NULL },
! 389: { ISAKMP_CFG_SET, "mode config SET", NULL },
! 390: { ISAKMP_CFG_REQUEST, "mode config REQUEST", NULL },
! 391: { ISAKMP_CFG_REPLY, "mode config REPLY", NULL },
! 392: };
! 393:
! 394: char *
! 395: s_isakmp_cfg_ptype(k)
! 396: int k;
! 397: {
! 398: int i;
! 399: for (i = 0; i < ARRAYLEN(name_isakmp_cfg_ptype); i++)
! 400: if (name_isakmp_cfg_ptype[i].key == k)
! 401: return name_isakmp_cfg_ptype[i].str;
! 402: return num2str(k);
! 403: }
! 404:
! 405: #endif
! 406:
! 407: /* ipsec_doi.h */
! 408: static struct ksmap name_ipsecdoi_proto[] = {
! 409: { IPSECDOI_PROTO_ISAKMP, "ISAKMP", s_ipsecdoi_trns_isakmp },
! 410: { IPSECDOI_PROTO_IPSEC_AH, "AH", s_ipsecdoi_trns_ah },
! 411: { IPSECDOI_PROTO_IPSEC_ESP, "ESP", s_ipsecdoi_trns_esp },
! 412: { IPSECDOI_PROTO_IPCOMP, "IPCOMP", s_ipsecdoi_trns_ipcomp },
! 413: };
! 414:
! 415: char *
! 416: s_ipsecdoi_proto(k)
! 417: int k;
! 418: {
! 419: int i;
! 420: for (i = 0; i < ARRAYLEN(name_ipsecdoi_proto); i++)
! 421: if (name_ipsecdoi_proto[i].key == k)
! 422: return name_ipsecdoi_proto[i].str;
! 423: return num2str(k);
! 424: }
! 425:
! 426: static struct ksmap name_ipsecdoi_trns_isakmp[] = {
! 427: { IPSECDOI_KEY_IKE, "IKE", NULL },
! 428: };
! 429:
! 430: char *
! 431: s_ipsecdoi_trns_isakmp(k)
! 432: int k;
! 433: {
! 434: int i;
! 435: for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_isakmp); i++)
! 436: if (name_ipsecdoi_trns_isakmp[i].key == k)
! 437: return name_ipsecdoi_trns_isakmp[i].str;
! 438: return num2str(k);
! 439: }
! 440:
! 441: static struct ksmap name_ipsecdoi_trns_ah[] = {
! 442: { IPSECDOI_AH_MD5, "MD5", NULL },
! 443: { IPSECDOI_AH_SHA, "SHA", NULL },
! 444: { IPSECDOI_AH_DES, "DES", NULL },
! 445: { IPSECDOI_AH_SHA256, "SHA256", NULL },
! 446: { IPSECDOI_AH_SHA384, "SHA384", NULL },
! 447: { IPSECDOI_AH_SHA512, "SHA512", NULL },
! 448: };
! 449:
! 450: char *
! 451: s_ipsecdoi_trns_ah(k)
! 452: int k;
! 453: {
! 454: int i;
! 455: for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_ah); i++)
! 456: if (name_ipsecdoi_trns_ah[i].key == k)
! 457: return name_ipsecdoi_trns_ah[i].str;
! 458: return num2str(k);
! 459: }
! 460:
! 461: static struct ksmap name_ipsecdoi_trns_esp[] = {
! 462: { IPSECDOI_ESP_DES_IV64, "DES_IV64", NULL },
! 463: { IPSECDOI_ESP_DES, "DES", NULL },
! 464: { IPSECDOI_ESP_3DES, "3DES", NULL },
! 465: { IPSECDOI_ESP_RC5, "RC5", NULL },
! 466: { IPSECDOI_ESP_IDEA, "IDEA", NULL },
! 467: { IPSECDOI_ESP_CAST, "CAST", NULL },
! 468: { IPSECDOI_ESP_BLOWFISH, "BLOWFISH", NULL },
! 469: { IPSECDOI_ESP_3IDEA, "3IDEA", NULL },
! 470: { IPSECDOI_ESP_DES_IV32, "DES_IV32", NULL },
! 471: { IPSECDOI_ESP_RC4, "RC4", NULL },
! 472: { IPSECDOI_ESP_NULL, "NULL", NULL },
! 473: { IPSECDOI_ESP_AES, "AES", NULL },
! 474: { IPSECDOI_ESP_TWOFISH, "TWOFISH", NULL },
! 475: { IPSECDOI_ESP_CAMELLIA, "CAMELLIA", NULL },
! 476: };
! 477:
! 478: char *
! 479: s_ipsecdoi_trns_esp(k)
! 480: int k;
! 481: {
! 482: int i;
! 483: for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_esp); i++)
! 484: if (name_ipsecdoi_trns_esp[i].key == k)
! 485: return name_ipsecdoi_trns_esp[i].str;
! 486: return num2str(k);
! 487: }
! 488:
! 489: static struct ksmap name_ipsecdoi_trns_ipcomp[] = {
! 490: { IPSECDOI_IPCOMP_OUI, "OUI", NULL},
! 491: { IPSECDOI_IPCOMP_DEFLATE, "DEFLATE", NULL},
! 492: { IPSECDOI_IPCOMP_LZS, "LZS", NULL},
! 493: };
! 494:
! 495: char *
! 496: s_ipsecdoi_trns_ipcomp(k)
! 497: int k;
! 498: {
! 499: int i;
! 500: for (i = 0; i < ARRAYLEN(name_ipsecdoi_trns_ipcomp); i++)
! 501: if (name_ipsecdoi_trns_ipcomp[i].key == k)
! 502: return name_ipsecdoi_trns_ipcomp[i].str;
! 503: return num2str(k);
! 504: }
! 505:
! 506: char *
! 507: s_ipsecdoi_trns(proto, trns)
! 508: int proto, trns;
! 509: {
! 510: int i;
! 511: for (i = 0; i < ARRAYLEN(name_ipsecdoi_proto); i++)
! 512: if (name_ipsecdoi_proto[i].key == proto
! 513: && name_ipsecdoi_proto[i].f)
! 514: return (name_ipsecdoi_proto[i].f)(trns);
! 515: return num2str(trns);
! 516: }
! 517:
! 518: static struct ksmap name_attr_ipsec[] = {
! 519: { IPSECDOI_ATTR_SA_LD_TYPE, "SA Life Type", s_ipsecdoi_ltype },
! 520: { IPSECDOI_ATTR_SA_LD, "SA Life Duration", NULL },
! 521: { IPSECDOI_ATTR_GRP_DESC, "Group Description", NULL },
! 522: { IPSECDOI_ATTR_ENC_MODE, "Encryption Mode", s_ipsecdoi_encmode },
! 523: { IPSECDOI_ATTR_AUTH, "Authentication Algorithm", s_ipsecdoi_auth },
! 524: { IPSECDOI_ATTR_KEY_LENGTH, "Key Length", NULL },
! 525: { IPSECDOI_ATTR_KEY_ROUNDS, "Key Rounds", NULL },
! 526: { IPSECDOI_ATTR_COMP_DICT_SIZE, "Compression Dictionary Size", NULL },
! 527: { IPSECDOI_ATTR_COMP_PRIVALG, "Compression Private Algorithm", NULL },
! 528: };
! 529:
! 530: char *
! 531: s_ipsecdoi_attr(k)
! 532: int k;
! 533: {
! 534: int i;
! 535: for (i = 0; i < ARRAYLEN(name_attr_ipsec); i++)
! 536: if (name_attr_ipsec[i].key == k)
! 537: return name_attr_ipsec[i].str;
! 538: return num2str(k);
! 539: }
! 540:
! 541: static struct ksmap name_attr_ipsec_ltype[] = {
! 542: { IPSECDOI_ATTR_SA_LD_TYPE_SEC, "seconds", NULL },
! 543: { IPSECDOI_ATTR_SA_LD_TYPE_KB, "kilobytes", NULL },
! 544: };
! 545:
! 546: char *
! 547: s_ipsecdoi_ltype(k)
! 548: int k;
! 549: {
! 550: int i;
! 551: for (i = 0; i < ARRAYLEN(name_attr_ipsec_ltype); i++)
! 552: if (name_attr_ipsec_ltype[i].key == k)
! 553: return name_attr_ipsec_ltype[i].str;
! 554: return num2str(k);
! 555: }
! 556:
! 557: static struct ksmap name_attr_ipsec_encmode[] = {
! 558: { IPSECDOI_ATTR_ENC_MODE_ANY, "Any", NULL },
! 559: { IPSECDOI_ATTR_ENC_MODE_TUNNEL, "Tunnel", NULL },
! 560: { IPSECDOI_ATTR_ENC_MODE_TRNS, "Transport", NULL },
! 561: { IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_RFC, "UDP-Tunnel", NULL },
! 562: { IPSECDOI_ATTR_ENC_MODE_UDPTRNS_RFC, "UDP-Transport", NULL },
! 563: { IPSECDOI_ATTR_ENC_MODE_UDPTUNNEL_DRAFT, "UDP-Tunnel", NULL },
! 564: { IPSECDOI_ATTR_ENC_MODE_UDPTRNS_DRAFT, "UDP-Transport", NULL },
! 565: };
! 566:
! 567: char *
! 568: s_ipsecdoi_encmode(k)
! 569: int k;
! 570: {
! 571: int i;
! 572: for (i = 0; i < ARRAYLEN(name_attr_ipsec_encmode); i++)
! 573: if (name_attr_ipsec_encmode[i].key == k)
! 574: return name_attr_ipsec_encmode[i].str;
! 575: return num2str(k);
! 576: }
! 577:
! 578: static struct ksmap name_attr_ipsec_auth[] = {
! 579: { IPSECDOI_ATTR_AUTH_HMAC_MD5, "hmac-md5", NULL },
! 580: { IPSECDOI_ATTR_AUTH_HMAC_SHA1, "hmac-sha", NULL },
! 581: { IPSECDOI_ATTR_AUTH_HMAC_SHA2_256, "hmac-sha256", NULL },
! 582: { IPSECDOI_ATTR_AUTH_HMAC_SHA2_384, "hmac-sha384", NULL },
! 583: { IPSECDOI_ATTR_AUTH_HMAC_SHA2_512, "hmac-sha512", NULL },
! 584: { IPSECDOI_ATTR_AUTH_DES_MAC, "des-mac", NULL },
! 585: { IPSECDOI_ATTR_AUTH_KPDK, "kpdk", NULL },
! 586: };
! 587:
! 588: char *
! 589: s_ipsecdoi_auth(k)
! 590: int k;
! 591: {
! 592: int i;
! 593: for (i = 0; i < ARRAYLEN(name_attr_ipsec_auth); i++)
! 594: if (name_attr_ipsec_auth[i].key == k)
! 595: return name_attr_ipsec_auth[i].str;
! 596: return num2str(k);
! 597: }
! 598:
! 599: char *
! 600: s_ipsecdoi_attr_v(type, val)
! 601: int type, val;
! 602: {
! 603: int i;
! 604: for (i = 0; i < ARRAYLEN(name_attr_ipsec); i++)
! 605: if (name_attr_ipsec[i].key == type
! 606: && name_attr_ipsec[i].f)
! 607: return (name_attr_ipsec[i].f)(val);
! 608: return num2str(val);
! 609: }
! 610:
! 611: static struct ksmap name_ipsecdoi_ident[] = {
! 612: { IPSECDOI_ID_IPV4_ADDR, "IPv4_address", NULL },
! 613: { IPSECDOI_ID_FQDN, "FQDN", NULL },
! 614: { IPSECDOI_ID_USER_FQDN, "User_FQDN", NULL },
! 615: { IPSECDOI_ID_IPV4_ADDR_SUBNET, "IPv4_subnet", NULL },
! 616: { IPSECDOI_ID_IPV6_ADDR, "IPv6_address", NULL },
! 617: { IPSECDOI_ID_IPV6_ADDR_SUBNET, "IPv6_subnet", NULL },
! 618: { IPSECDOI_ID_IPV4_ADDR_RANGE, "IPv4_address_range", NULL },
! 619: { IPSECDOI_ID_IPV6_ADDR_RANGE, "IPv6_address_range", NULL },
! 620: { IPSECDOI_ID_DER_ASN1_DN, "DER_ASN1_DN", NULL },
! 621: { IPSECDOI_ID_DER_ASN1_GN, "DER_ASN1_GN", NULL },
! 622: { IPSECDOI_ID_KEY_ID, "KEY_ID", NULL },
! 623: };
! 624:
! 625: char *
! 626: s_ipsecdoi_ident(k)
! 627: int k;
! 628: {
! 629: int i;
! 630: for (i = 0; i < ARRAYLEN(name_ipsecdoi_ident); i++)
! 631: if (name_ipsecdoi_ident[i].key == k)
! 632: return name_ipsecdoi_ident[i].str;
! 633: return num2str(k);
! 634: }
! 635:
! 636: /* oakley.h */
! 637: static struct ksmap name_oakley_attr[] = {
! 638: { OAKLEY_ATTR_ENC_ALG, "Encryption Algorithm", s_attr_isakmp_enc },
! 639: { OAKLEY_ATTR_HASH_ALG, "Hash Algorithm", s_attr_isakmp_hash },
! 640: { OAKLEY_ATTR_AUTH_METHOD, "Authentication Method", s_oakley_attr_method },
! 641: { OAKLEY_ATTR_GRP_DESC, "Group Description", s_attr_isakmp_desc },
! 642: { OAKLEY_ATTR_GRP_TYPE, "Group Type", s_attr_isakmp_group },
! 643: { OAKLEY_ATTR_GRP_PI, "Group Prime/Irreducible Polynomial", NULL },
! 644: { OAKLEY_ATTR_GRP_GEN_ONE, "Group Generator One", NULL },
! 645: { OAKLEY_ATTR_GRP_GEN_TWO, "Group Generator Two", NULL },
! 646: { OAKLEY_ATTR_GRP_CURVE_A, "Group Curve A", NULL },
! 647: { OAKLEY_ATTR_GRP_CURVE_B, "Group Curve B", NULL },
! 648: { OAKLEY_ATTR_SA_LD_TYPE, "Life Type", s_attr_isakmp_ltype },
! 649: { OAKLEY_ATTR_SA_LD, "Life Duration", NULL },
! 650: { OAKLEY_ATTR_PRF, "PRF", NULL },
! 651: { OAKLEY_ATTR_KEY_LEN, "Key Length", NULL },
! 652: { OAKLEY_ATTR_FIELD_SIZE, "Field Size", NULL },
! 653: { OAKLEY_ATTR_GRP_ORDER, "Group Order", NULL },
! 654: { OAKLEY_ATTR_BLOCK_SIZE, "Block Size", NULL },
! 655: { OAKLEY_ATTR_GSS_ID, "GSS-API endpoint name",NULL },
! 656: };
! 657:
! 658: char *
! 659: s_oakley_attr(k)
! 660: int k;
! 661: {
! 662: int i;
! 663: for (i = 0; i < ARRAYLEN(name_oakley_attr); i++)
! 664: if (name_oakley_attr[i].key == k)
! 665: return name_oakley_attr[i].str;
! 666: return num2str(k);
! 667: }
! 668:
! 669: static struct ksmap name_attr_isakmp_enc[] = {
! 670: { OAKLEY_ATTR_ENC_ALG_DES, "DES-CBC", NULL },
! 671: { OAKLEY_ATTR_ENC_ALG_IDEA, "IDEA-CBC", NULL },
! 672: { OAKLEY_ATTR_ENC_ALG_BLOWFISH, "Blowfish-CBC", NULL },
! 673: { OAKLEY_ATTR_ENC_ALG_RC5, "RC5-R16-B64-CBC", NULL },
! 674: { OAKLEY_ATTR_ENC_ALG_3DES, "3DES-CBC", NULL },
! 675: { OAKLEY_ATTR_ENC_ALG_CAST, "CAST-CBC", NULL },
! 676: { OAKLEY_ATTR_ENC_ALG_AES, "AES-CBC", NULL },
! 677: };
! 678:
! 679: char *
! 680: s_attr_isakmp_enc(k)
! 681: int k;
! 682: {
! 683: int i;
! 684: for (i = 0; i < ARRAYLEN(name_attr_isakmp_enc); i++)
! 685: if (name_attr_isakmp_enc[i].key == k)
! 686: return name_attr_isakmp_enc[i].str;
! 687: return num2str(k);
! 688: }
! 689:
! 690: static struct ksmap name_attr_isakmp_hash[] = {
! 691: { OAKLEY_ATTR_HASH_ALG_MD5, "MD5", NULL },
! 692: { OAKLEY_ATTR_HASH_ALG_SHA, "SHA", NULL },
! 693: { OAKLEY_ATTR_HASH_ALG_TIGER, "Tiger", NULL },
! 694: { OAKLEY_ATTR_HASH_ALG_SHA2_256,"SHA256", NULL },
! 695: { OAKLEY_ATTR_HASH_ALG_SHA2_384,"SHA384", NULL },
! 696: { OAKLEY_ATTR_HASH_ALG_SHA2_512,"SHA512", NULL },
! 697: };
! 698:
! 699: char *
! 700: s_attr_isakmp_hash(k)
! 701: int k;
! 702: {
! 703: int i;
! 704: for (i = 0; i < ARRAYLEN(name_attr_isakmp_hash); i++)
! 705: if (name_attr_isakmp_hash[i].key == k)
! 706: return name_attr_isakmp_hash[i].str;
! 707: return num2str(k);
! 708: }
! 709:
! 710: static struct ksmap name_attr_isakmp_method[] = {
! 711: { OAKLEY_ATTR_AUTH_METHOD_PSKEY, "pre-shared key", NULL },
! 712: { OAKLEY_ATTR_AUTH_METHOD_DSSSIG, "DSS signatures", NULL },
! 713: { OAKLEY_ATTR_AUTH_METHOD_RSASIG, "RSA signatures", NULL },
! 714: { OAKLEY_ATTR_AUTH_METHOD_RSAENC, "Encryption with RSA", NULL },
! 715: { OAKLEY_ATTR_AUTH_METHOD_RSAREV, "Revised encryption with RSA", NULL },
! 716: { OAKLEY_ATTR_AUTH_METHOD_EGENC, "Encryption with El-Gamal", NULL },
! 717: { OAKLEY_ATTR_AUTH_METHOD_EGREV, "Revised encryption with El-Gamal", NULL },
! 718: #ifdef HAVE_GSSAPI
! 719: { OAKLEY_ATTR_AUTH_METHOD_GSSAPI_KRB, "GSS-API on Kerberos 5", NULL },
! 720: #endif
! 721: #ifdef ENABLE_HYBRID
! 722: { OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_R, "Hybrid DSS server", NULL },
! 723: { OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_R, "Hybrid RSA server", NULL },
! 724: { OAKLEY_ATTR_AUTH_METHOD_HYBRID_DSS_I, "Hybrid DSS client", NULL },
! 725: { OAKLEY_ATTR_AUTH_METHOD_HYBRID_RSA_I, "Hybrid RSA client", NULL },
! 726: { OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_I, "XAuth pskey client", NULL },
! 727: { OAKLEY_ATTR_AUTH_METHOD_XAUTH_PSKEY_R, "XAuth pskey server", NULL },
! 728: { OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_I, "XAuth RSASIG client", NULL },
! 729: { OAKLEY_ATTR_AUTH_METHOD_XAUTH_RSASIG_R, "XAuth RSASIG server", NULL },
! 730: #endif
! 731: };
! 732:
! 733: char *
! 734: s_oakley_attr_method(k)
! 735: int k;
! 736: {
! 737: int i;
! 738: for (i = 0; i < ARRAYLEN(name_attr_isakmp_method); i++)
! 739: if (name_attr_isakmp_method[i].key == k)
! 740: return name_attr_isakmp_method[i].str;
! 741: return num2str(k);
! 742: }
! 743:
! 744: static struct ksmap name_attr_isakmp_desc[] = {
! 745: { OAKLEY_ATTR_GRP_DESC_MODP768, "768-bit MODP group", NULL },
! 746: { OAKLEY_ATTR_GRP_DESC_MODP1024, "1024-bit MODP group", NULL },
! 747: { OAKLEY_ATTR_GRP_DESC_EC2N155, "EC2N group on GP[2^155]", NULL },
! 748: { OAKLEY_ATTR_GRP_DESC_EC2N185, "EC2N group on GP[2^185]", NULL },
! 749: { OAKLEY_ATTR_GRP_DESC_MODP1536, "1536-bit MODP group", NULL },
! 750: { OAKLEY_ATTR_GRP_DESC_MODP2048, "2048-bit MODP group", NULL },
! 751: { OAKLEY_ATTR_GRP_DESC_MODP3072, "3072-bit MODP group", NULL },
! 752: { OAKLEY_ATTR_GRP_DESC_MODP4096, "4096-bit MODP group", NULL },
! 753: { OAKLEY_ATTR_GRP_DESC_MODP6144, "6144-bit MODP group", NULL },
! 754: { OAKLEY_ATTR_GRP_DESC_MODP8192, "8192-bit MODP group", NULL },
! 755: };
! 756:
! 757: char *
! 758: s_attr_isakmp_desc(k)
! 759: int k;
! 760: {
! 761: int i;
! 762: for (i = 0; i < ARRAYLEN(name_attr_isakmp_desc); i++)
! 763: if (name_attr_isakmp_desc[i].key == k)
! 764: return name_attr_isakmp_desc[i].str;
! 765: return num2str(k);
! 766: }
! 767:
! 768: static struct ksmap name_attr_isakmp_group[] = {
! 769: { OAKLEY_ATTR_GRP_TYPE_MODP, "MODP", NULL },
! 770: { OAKLEY_ATTR_GRP_TYPE_ECP, "ECP", NULL },
! 771: { OAKLEY_ATTR_GRP_TYPE_EC2N, "EC2N", NULL },
! 772: };
! 773:
! 774: char *
! 775: s_attr_isakmp_group(k)
! 776: int k;
! 777: {
! 778: int i;
! 779: for (i = 0; i < ARRAYLEN(name_attr_isakmp_group); i++)
! 780: if (name_attr_isakmp_group[i].key == k)
! 781: return name_attr_isakmp_group[i].str;
! 782: return num2str(k);
! 783: }
! 784:
! 785: static struct ksmap name_attr_isakmp_ltype[] = {
! 786: { OAKLEY_ATTR_SA_LD_TYPE_SEC, "seconds", NULL },
! 787: { OAKLEY_ATTR_SA_LD_TYPE_KB, "kilobytes", NULL },
! 788: };
! 789:
! 790: char *
! 791: s_attr_isakmp_ltype(k)
! 792: int k;
! 793: {
! 794: int i;
! 795: for (i = 0; i < ARRAYLEN(name_attr_isakmp_ltype); i++)
! 796: if (name_attr_isakmp_ltype[i].key == k)
! 797: return name_attr_isakmp_ltype[i].str;
! 798: return num2str(k);
! 799: }
! 800:
! 801: char *
! 802: s_oakley_attr_v(type, val)
! 803: int type, val;
! 804: {
! 805: int i;
! 806: for (i = 0; i < ARRAYLEN(name_oakley_attr); i++)
! 807: if (name_oakley_attr[i].key == type
! 808: && name_oakley_attr[i].f)
! 809: return (name_oakley_attr[i].f)(val);
! 810: return num2str(val);
! 811: }
! 812:
! 813: /* netinet6/ipsec.h */
! 814: static struct ksmap name_ipsec_level[] = {
! 815: { IPSEC_LEVEL_USE, "use", NULL },
! 816: { IPSEC_LEVEL_REQUIRE, "require", NULL },
! 817: { IPSEC_LEVEL_UNIQUE, "unique", NULL },
! 818: };
! 819:
! 820: char *
! 821: s_ipsec_level(k)
! 822: int k;
! 823: {
! 824: int i;
! 825: for (i = 0; i < ARRAYLEN(name_ipsec_level); i++)
! 826: if (name_ipsec_level[i].key == k)
! 827: return name_ipsec_level[i].str;
! 828: return num2str(k);
! 829: }
! 830:
! 831: static struct ksmap name_algclass[] = {
! 832: { algclass_ipsec_enc, "ipsec enc", s_ipsecdoi_trns_esp },
! 833: { algclass_ipsec_auth, "ipsec auth", s_ipsecdoi_trns_ah },
! 834: { algclass_ipsec_comp, "ipsec comp", s_ipsecdoi_trns_ipcomp },
! 835: { algclass_isakmp_enc, "isakmp enc", s_attr_isakmp_enc },
! 836: { algclass_isakmp_hash, "isakmp hash", s_attr_isakmp_hash },
! 837: { algclass_isakmp_dh, "isakmp dh", s_attr_isakmp_desc },
! 838: { algclass_isakmp_ameth, "isakmp auth method", s_oakley_attr_method },
! 839: };
! 840:
! 841: char *
! 842: s_algclass(k)
! 843: int k;
! 844: {
! 845: int i;
! 846: for (i = 0; i < ARRAYLEN(name_algclass); i++)
! 847: if (name_algclass[i].key == k)
! 848: return name_algclass[i].str;
! 849: return num2str(k);
! 850: }
! 851:
! 852: char *
! 853: s_algtype(class, n)
! 854: int class, n;
! 855: {
! 856: int i;
! 857: for (i = 0; i < ARRAYLEN(name_algclass); i++)
! 858: if (name_algclass[i].key == class
! 859: && name_algclass[i].f)
! 860: return (name_algclass[i].f)(n);
! 861: return num2str(n);
! 862: }
! 863:
! 864: /* pfkey.h */
! 865: static struct ksmap name_pfkey_type[] = {
! 866: { SADB_GETSPI, "GETSPI", NULL },
! 867: { SADB_UPDATE, "UPDATE", NULL },
! 868: { SADB_ADD, "ADD", NULL },
! 869: { SADB_DELETE, "DELETE", NULL },
! 870: { SADB_GET, "GET", NULL },
! 871: { SADB_ACQUIRE, "ACQUIRE", NULL },
! 872: { SADB_REGISTER, "REGISTER", NULL },
! 873: { SADB_EXPIRE, "EXPIRE", NULL },
! 874: { SADB_FLUSH, "FLUSH", NULL },
! 875: { SADB_DUMP, "DUMP", NULL },
! 876: { SADB_X_PROMISC, "X_PROMISC", NULL },
! 877: { SADB_X_PCHANGE, "X_PCHANGE", NULL },
! 878: { SADB_X_SPDUPDATE, "X_SPDUPDATE", NULL },
! 879: { SADB_X_SPDADD, "X_SPDADD", NULL },
! 880: { SADB_X_SPDDELETE, "X_SPDDELETE", NULL },
! 881: { SADB_X_SPDGET, "X_SPDGET", NULL },
! 882: { SADB_X_SPDACQUIRE, "X_SPDACQUIRE", NULL },
! 883: { SADB_X_SPDDUMP, "X_SPDDUMP", NULL },
! 884: { SADB_X_SPDFLUSH, "X_SPDFLUSH", NULL },
! 885: { SADB_X_SPDSETIDX, "X_SPDSETIDX", NULL },
! 886: { SADB_X_SPDEXPIRE, "X_SPDEXPIRE", NULL },
! 887: { SADB_X_SPDDELETE2, "X_SPDDELETE2", NULL },
! 888: #ifdef SADB_X_NAT_T_NEW_MAPPING
! 889: { SADB_X_NAT_T_NEW_MAPPING, "X_NAT_T_NEW_MAPPING", NULL },
! 890: #endif
! 891: #ifdef SADB_X_MIGRATE
! 892: { SADB_X_MIGRATE, "X_MIGRATE", NULL },
! 893: #endif
! 894: };
! 895:
! 896: char *
! 897: s_pfkey_type(k)
! 898: int k;
! 899: {
! 900: int i;
! 901: for (i = 0; i < ARRAYLEN(name_pfkey_type); i++)
! 902: if (name_pfkey_type[i].key == k)
! 903: return name_pfkey_type[i].str;
! 904: return num2str(k);
! 905: }
! 906:
! 907: static struct ksmap name_pfkey_satype[] = {
! 908: { SADB_SATYPE_UNSPEC, "UNSPEC", NULL },
! 909: { SADB_SATYPE_AH, "AH", NULL },
! 910: { SADB_SATYPE_ESP, "ESP", NULL },
! 911: { SADB_SATYPE_RSVP, "RSVP", NULL },
! 912: { SADB_SATYPE_OSPFV2, "OSPFV2", NULL },
! 913: { SADB_SATYPE_RIPV2, "RIPV2", NULL },
! 914: { SADB_SATYPE_MIP, "MIP", NULL },
! 915: { SADB_X_SATYPE_IPCOMP, "IPCOMP", NULL },
! 916: };
! 917:
! 918: char *
! 919: s_pfkey_satype(k)
! 920: int k;
! 921: {
! 922: int i;
! 923: for (i = 0; i < ARRAYLEN(name_pfkey_satype); i++)
! 924: if (name_pfkey_satype[i].key == k)
! 925: return name_pfkey_satype[i].str;
! 926: return num2str(k);
! 927: }
! 928:
! 929: static struct ksmap name_direction[] = {
! 930: { IPSEC_DIR_INBOUND, "in", NULL },
! 931: { IPSEC_DIR_OUTBOUND, "out", NULL },
! 932: #ifdef HAVE_POLICY_FWD
! 933: { IPSEC_DIR_FWD, "fwd", NULL },
! 934: #endif
! 935: };
! 936:
! 937: char *
! 938: s_direction(k)
! 939: int k;
! 940: {
! 941: int i;
! 942: for (i = 0; i < ARRAYLEN(name_direction); i++)
! 943: if (name_direction[i].key == k)
! 944: return name_direction[i].str;
! 945: return num2str(k);
! 946: }
! 947:
! 948: char *
! 949: s_proto(k)
! 950: int k;
! 951: {
! 952: switch (k) {
! 953: case IPPROTO_ICMP:
! 954: return "icmp";
! 955: case IPPROTO_TCP:
! 956: return "tcp";
! 957: case IPPROTO_UDP:
! 958: return "udp";
! 959: case IPPROTO_ICMPV6:
! 960: return "icmpv6";
! 961: case IPSEC_ULPROTO_ANY:
! 962: return "any";
! 963: }
! 964:
! 965: return num2str(k);
! 966: }
! 967:
! 968: char *
! 969: s_doi(int k)
! 970: {
! 971: switch (k) {
! 972: case IPSEC_DOI:
! 973: return "ipsec_doi";
! 974: default:
! 975: return num2str(k);
! 976: }
! 977: }
! 978:
! 979: char *
! 980: s_etype (int k)
! 981: {
! 982: switch (k) {
! 983: case ISAKMP_ETYPE_NONE:
! 984: return "_none";
! 985: case ISAKMP_ETYPE_BASE:
! 986: return "base";
! 987: case ISAKMP_ETYPE_IDENT:
! 988: return "main";
! 989: case ISAKMP_ETYPE_AUTH:
! 990: return "_auth";
! 991: case ISAKMP_ETYPE_AGG:
! 992: return "aggressive";
! 993: case ISAKMP_ETYPE_INFO:
! 994: return "_info";
! 995: case ISAKMP_ETYPE_QUICK:
! 996: return "_quick";
! 997: case ISAKMP_ETYPE_NEWGRP:
! 998: return "_newgrp";
! 999: case ISAKMP_ETYPE_ACKINFO:
! 1000: return "_ackinfo";
! 1001: default:
! 1002: return num2str(k);
! 1003: }
! 1004: }
! 1005:
! 1006: char *
! 1007: s_idtype (int k)
! 1008: {
! 1009: switch (k) {
! 1010: case IDTYPE_FQDN:
! 1011: return "fqdn";
! 1012: case IDTYPE_USERFQDN:
! 1013: return "user_fqdn";
! 1014: case IDTYPE_KEYID:
! 1015: return "keyid";
! 1016: case IDTYPE_ADDRESS:
! 1017: return "address";
! 1018: case IDTYPE_ASN1DN:
! 1019: return "asn1dn";
! 1020: default:
! 1021: return num2str(k);
! 1022: }
! 1023: }
! 1024:
! 1025: char *
! 1026: s_switch (int k)
! 1027: {
! 1028: switch (k) {
! 1029: case FALSE:
! 1030: return "off";
! 1031: case TRUE:
! 1032: return "on";
! 1033: default:
! 1034: return num2str(k);
! 1035: }
! 1036: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>