Return to strnames.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon |
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: }