📄 constants.c
字号:
/* tables of names for values defined in constants.h * Copyright (C) 1998-2002 D. Hugh Redelmeier. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * RCSID $Id: constants.c,v 1.8 2004/10/19 03:17:54 mcr Exp $ *//* * Note that the array sizes are all specified; this is to enable range * checking by code that only includes constants.h. */#include <stddef.h>#include <string.h>#include <stdio.h>#include <netinet/in.h>#include <openswan.h>#include <openswan/ipsec_policy.h>#include <openswan/passert.h>#include "constants.h"#include "enum_names.h"#include "oswlog.h"/* version */static const char *const version_name[] = { "ISAKMP Version 1.0",};enum_names version_names = { ISAKMP_MAJOR_VERSION<<ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION, ISAKMP_MAJOR_VERSION<<ISA_MAJ_SHIFT | ISAKMP_MINOR_VERSION, version_name, NULL };/* Domain of Interpretation */static const char *const doi_name[] = { "ISAKMP_DOI_ISAKMP", "ISAKMP_DOI_IPSEC",};enum_names doi_names = { ISAKMP_DOI_ISAKMP, ISAKMP_DOI_IPSEC, doi_name, NULL };/* debugging settings: a set of selections for reporting * These would be more naturally situated in log.h, * but they are shared with whack. * It turns out that "debug-" is clutter in all contexts this is used, * so we leave it off. */const char *const debug_bit_names[] = { "raw", "crypt", "parsing", "emitting", "control", "lifecycle", "klips", "dns", "oppo", "controlmore", "pfkey", "nattraversal", "x509", /* 12 */ "dpd", "res14", "res15", "res16", "res17", "res18", "res19", "private", /* 20 */ "impair-delay-adns-key-answer", /* 21 */ "impair-delay-adns-txt-answer", "impair-bust-mi2", "impair-bust-mr2", NULL };/* kind of struct connection */static const char *const connection_kind_name[] = { "CK_GROUP", /* policy group: instantiates to template */ "CK_TEMPLATE", /* abstract connection, with wildcard */ "CK_PERMANENT", /* normal connection */ "CK_INSTANCE", /* instance of template, created for a particular attempt */ "CK_GOING_AWAY" /* instance being deleted -- don't delete again */};enum_names connection_kind_names = { CK_GROUP, CK_GOING_AWAY, connection_kind_name, NULL };/* Payload types (RFC 2408 "ISAKMP" section 3.1) */const char *const payload_name[] = { "ISAKMP_NEXT_NONE", "ISAKMP_NEXT_SA", /* 1 */ "ISAKMP_NEXT_P", "ISAKMP_NEXT_T", "ISAKMP_NEXT_KE", "ISAKMP_NEXT_ID", /* 5 */ "ISAKMP_NEXT_CERT", "ISAKMP_NEXT_CR", "ISAKMP_NEXT_HASH", "ISAKMP_NEXT_SIG", "ISAKMP_NEXT_NONCE", /* 10 */ "ISAKMP_NEXT_N", "ISAKMP_NEXT_D", "ISAKMP_NEXT_VID", "ISAKMP_NEXT_MODECFG", /* 14 */ "ISAKMP_NEXT_NAT-D", "ISAKMP_NEXT_NAT-OA", NULL };const char *const payload_name_nat_d[] = { "ISAKMP_NEXT_NAT-D", "ISAKMP_NEXT_NAT-OA", NULL };static enum_names payload_names_nat_d = { ISAKMP_NEXT_NATD_DRAFTS, ISAKMP_NEXT_NATOA_DRAFTS, payload_name_nat_d, NULL };enum_names payload_names = { ISAKMP_NEXT_NONE, ISAKMP_NEXT_NATOA_RFC, payload_name, &payload_names_nat_d };/* Exchange types (note: two discontinuous ranges) */static const char *const exchange_name[] = { "ISAKMP_XCHG_NONE", "ISAKMP_XCHG_BASE", "ISAKMP_XCHG_IDPROT", "ISAKMP_XCHG_AO", "ISAKMP_XCHG_AGGR", "ISAKMP_XCHG_INFO", "ISAKMP_XCHG_MODE_CFG", };static const char *const exchange_name2[] = { "ISAKMP_XCHG_QUICK", "ISAKMP_XCHG_NGRP", "ISAKMP_XCHG_ACK_INFO", };static enum_names exchange_desc2 = { ISAKMP_XCHG_QUICK, ISAKMP_XCHG_ACK_INFO, exchange_name2, NULL };enum_names exchange_names = { ISAKMP_XCHG_NONE, ISAKMP_XCHG_MODE_CFG, exchange_name, &exchange_desc2 };/* Flag BITS */const char *const flag_bit_names[] = { "ISAKMP_FLAG_ENCRYPTION", "ISAKMP_FLAG_COMMIT", NULL };/* Situation BITS definition for IPsec DOI */const char *const sit_bit_names[] = { "SIT_IDENTITY_ONLY", "SIT_SECRECY", "SIT_INTEGRITY", NULL };/* Protocol IDs (RFC 2407 "IPsec DOI" section 4.4.1) */static const char *const protocol_name[] = { "PROTO_ISAKMP", "PROTO_IPSEC_AH", "PROTO_IPSEC_ESP", "PROTO_IPCOMP", };enum_names protocol_names = { PROTO_ISAKMP, PROTO_IPCOMP, protocol_name, NULL };/* IPsec ISAKMP transform values */static const char *const isakmp_transform_name[] = { "KEY_IKE", };enum_names isakmp_transformid_names = { KEY_IKE, KEY_IKE, isakmp_transform_name, NULL };/* IPsec AH transform values */static const char *const ah_transform_name[] = { "AH_MD5", "AH_SHA", "AH_DES", "AH_SHA2_256", "AH_SHA2_384", "AH_SHA2_512", };enum_names ah_transformid_names = { AH_MD5, AH_SHA2_512, ah_transform_name, NULL };/* IPsec ESP transform values */static const char *const esp_transform_name[] = { "ESP_DES_IV64", /* old DES */ "ESP_DES", "ESP_3DES", "ESP_RC5", "ESP_IDEA", "ESP_CAST", "ESP_BLOWFISH", "ESP_3IDEA", "ESP_DES_IV32", "ESP_RC4", "ESP_NULL", "ESP_AES"};/* * ipsec drafts suggest "high" ESP ids values for testing, * assign generic ESP_ID<num> if not officially defined */static const char *const esp_transform_name_high[] = { /* id=248 */ "ESP_ID248","ESP_MARS","ESP_RC6","ESP_ID251", /* id=252 */ "ESP_SERPENT", "ESP_TWOFISH", "ESP_CAMELLIA", "ESP_ID255", /* id=256 */ "ESP_ID256" };enum_names esp_transformid_names_high = { 248, 256, esp_transform_name_high, NULL };enum_names esp_transformid_names = { ESP_DES_IV64, ESP_AES, esp_transform_name, &esp_transformid_names_high };/* IPCOMP transform values */static const char *const ipcomp_transform_name[] = { "IPCOMP_OUI", "IPCOMP_DEFLAT", "IPCOMP_LZS", "IPCOMP_V42BIS", };enum_names ipcomp_transformid_names = { IPCOMP_OUI, IPCOMP_V42BIS, ipcomp_transform_name, NULL };/* Identification type values */static const char *const ident_name[] = { "ID_IPV4_ADDR", "ID_FQDN", "ID_USER_FQDN", "ID_IPV4_ADDR_SUBNET", "ID_IPV6_ADDR", "ID_IPV6_ADDR_SUBNET", "ID_IPV4_ADDR_RANGE", "ID_IPV6_ADDR_RANGE", "ID_DER_ASN1_DN", "ID_DER_ASN1_GN", "ID_KEY_ID", };enum_names ident_names = { ID_IPV4_ADDR, ID_KEY_ID, ident_name, NULL };/* Certificate type values */static const char *const cert_type_name[] = { "CERT_NONE", "CERT_PKCS7_WRAPPED_X509", "CERT_PGP", "CERT_DNS_SIGNED_KEY", "CERT_X509_SIGNATURE", "CERT_X509_KEY_EXCHANGE", "CERT_KERBEROS_TOKENS", "CERT_CRL", "CERT_ARL", "CERT_SPKI", "CERT_X509_ATTRIBUTE", };enum_names cert_type_names = { CERT_NONE, CERT_X509_ATTRIBUTE, cert_type_name, NULL };/* * certificate request payload policy */static const char *const certpolicy_type_name[] = { "CERT_NEVERSEND", "CERT_SENDIFASKED", "CERT_ALWAYSSEND", "CERT_FORCEDTYPE"};enum_names certpolicy_type_names = { cert_neversend, cert_alwayssend, certpolicy_type_name, NULL };/* Oakley transform attributes * oakley_attr_bit_names does double duty: it is used for enum names * and bit names. */const char *const oakley_attr_bit_names[] = { "OAKLEY_ENCRYPTION_ALGORITHM", "OAKLEY_HASH_ALGORITHM", "OAKLEY_AUTHENTICATION_METHOD", "OAKLEY_GROUP_DESCRIPTION", "OAKLEY_GROUP_TYPE", "OAKLEY_GROUP_PRIME", "OAKLEY_GROUP_GENERATOR_ONE", "OAKLEY_GROUP_GENERATOR_TWO", "OAKLEY_GROUP_CURVE_A", "OAKLEY_GROUP_CURVE_B", "OAKLEY_LIFE_TYPE", "OAKLEY_LIFE_DURATION", "OAKLEY_PRF", "OAKLEY_KEY_LENGTH", "OAKLEY_FIELD_SIZE", "OAKLEY_GROUP_ORDER", "OAKLEY_BLOCK_SIZE", NULL };static const char *const oakley_var_attr_name[] = { "OAKLEY_GROUP_PRIME (variable length)", "OAKLEY_GROUP_GENERATOR_ONE (variable length)", "OAKLEY_GROUP_GENERATOR_TWO (variable length)", "OAKLEY_GROUP_CURVE_A (variable length)", "OAKLEY_GROUP_CURVE_B (variable length)", NULL, "OAKLEY_LIFE_DURATION (variable length)", NULL, NULL, NULL, "OAKLEY_GROUP_ORDER (variable length)", };static enum_names oakley_attr_desc_tv = { OAKLEY_ENCRYPTION_ALGORITHM + ISAKMP_ATTR_AF_TV, OAKLEY_GROUP_ORDER + ISAKMP_ATTR_AF_TV, oakley_attr_bit_names, NULL };enum_names oakley_attr_names = { OAKLEY_GROUP_PRIME, OAKLEY_GROUP_ORDER, oakley_var_attr_name, &oakley_attr_desc_tv };/* for each Oakley attribute, which enum_names describes its values? */enum_names *oakley_attr_val_descs[] = { NULL, /* (none) */ &oakley_enc_names, /* OAKLEY_ENCRYPTION_ALGORITHM */ &oakley_hash_names, /* OAKLEY_HASH_ALGORITHM */ &oakley_auth_names, /* OAKLEY_AUTHENTICATION_METHOD */ &oakley_group_names, /* OAKLEY_GROUP_DESCRIPTION */ &oakley_group_type_names,/* OAKLEY_GROUP_TYPE */ NULL, /* OAKLEY_GROUP_PRIME */ NULL, /* OAKLEY_GROUP_GENERATOR_ONE */ NULL, /* OAKLEY_GROUP_GENERATOR_TWO */ NULL, /* OAKLEY_GROUP_CURVE_A */ NULL, /* OAKLEY_GROUP_CURVE_B */ &oakley_lifetime_names, /* OAKLEY_LIFE_TYPE */ NULL, /* OAKLEY_LIFE_DURATION */ &oakley_prf_names, /* OAKLEY_PRF */ NULL, /* OAKLEY_KEY_LENGTH */ NULL, /* OAKLEY_FIELD_SIZE */ NULL, /* OAKLEY_GROUP_ORDER */ };/* IPsec DOI attributes (RFC 2407 "IPsec DOI" section 4.5) */static const char *const ipsec_attr_name[] = { "SA_LIFE_TYPE", "SA_LIFE_DURATION", "GROUP_DESCRIPTION", "ENCAPSULATION_MODE", "AUTH_ALGORITHM", "KEY_LENGTH", "KEY_ROUNDS", "COMPRESS_DICT_SIZE", "COMPRESS_PRIVATE_ALG", };static const char *const ipsec_var_attr_name[] = { "SA_LIFE_DURATION (variable length)", NULL, NULL, NULL, NULL, NULL, NULL, "COMPRESS_PRIVATE_ALG (variable length)", };static enum_names ipsec_attr_desc_tv = { SA_LIFE_TYPE + ISAKMP_ATTR_AF_TV, COMPRESS_PRIVATE_ALG + ISAKMP_ATTR_AF_TV, ipsec_attr_name, NULL };enum_names ipsec_attr_names = { SA_LIFE_DURATION, COMPRESS_PRIVATE_ALG, ipsec_var_attr_name, &ipsec_attr_desc_tv };/* for each IPsec attribute, which enum_names describes its values? */enum_names *ipsec_attr_val_descs[] = { NULL, /* (none) */ &sa_lifetime_names, /* SA_LIFE_TYPE */ NULL, /* SA_LIFE_DURATION */ &oakley_group_names, /* GROUP_DESCRIPTION */ &enc_mode_names, /* ENCAPSULATION_MODE */ &auth_alg_names, /* AUTH_ALGORITHM */ NULL, /* KEY_LENGTH */ NULL, /* KEY_ROUNDS */ NULL, /* COMPRESS_DICT_SIZE */ NULL, /* COMPRESS_PRIVATE_ALG */ };/* SA Lifetime Type attribute */static const char *const sa_lifetime_name[] = { "SA_LIFE_TYPE_SECONDS", "SA_LIFE_TYPE_KBYTES", };enum_names sa_lifetime_names = { SA_LIFE_TYPE_SECONDS, SA_LIFE_TYPE_KBYTES, sa_lifetime_name, NULL };/* Encapsulation Mode attribute */static const char *const enc_mode_name[] = { "ENCAPSULATION_MODE_TUNNEL", "ENCAPSULATION_MODE_TRANSPORT", "ENCAPSULATION_MODE_UDP_TUNNEL", "ENCAPSULATION_MODE_UDP_TRANSPORT", };static const char *const enc_udp_mode_name[] = { "ENCAPSULATION_MODE_UDP_TUNNEL", "ENCAPSULATION_MODE_UDP_TRANSPORT", };static enum_names enc_udp_mode_names = { ENCAPSULATION_MODE_UDP_TUNNEL_DRAFTS, ENCAPSULATION_MODE_UDP_TRANSPORT_DRAFTS, enc_udp_mode_name, NULL };enum_names enc_mode_names = { ENCAPSULATION_MODE_TUNNEL, ENCAPSULATION_MODE_UDP_TRANSPORT_RFC, enc_mode_name, &enc_udp_mode_names };/* Auth Algorithm attribute */static const char *const auth_alg_name[] = { "unspecified AUTH_ALGORITHM", "AUTH_ALGORITHM_HMAC_MD5", "AUTH_ALGORITHM_HMAC_SHA1", "AUTH_ALGORITHM_DES_MAC", "AUTH_ALGORITHM_KPDK", "AUTH_ALGORITHM_HMAC_SHA2_256", "AUTH_ALGORITHM_HMAC_SHA2_384", "AUTH_ALGORITHM_HMAC_SHA2_512", "AUTH_ALGORITHM_HMAC_RIPEMD", "AUTH_ALGORITHM_AES_CBC", "AUTH_ALGORITHM_ID10", "AUTH_ALGORITHM_ID11", "AUTH_ALGORITHM_ID12", "AUTH_ALGORITHM_ID13", "AUTH_ALGORITHM_ID14", "AUTH_ALGORITHM_ID15", };enum_names auth_alg_names = { AUTH_ALGORITHM_HMAC_MD5, 15 /* AUTH_ALGORITHM_HMAC_RIPEMD */, auth_alg_name + 1, NULL }, extended_auth_alg_names = { AUTH_ALGORITHM_NONE, AUTH_ALGORITHM_KPDK, auth_alg_name, NULL };/* From draft-beaulieu-ike-xauth */const char *const xauth_attr_name[] = { "XAUTH-TYPE", "XAUTH-USER-NAME", "XAUTH-USER-PASSWORD", "XAUTH-PASSCODE", "XAUTH-MESSAGE", "XAUTH-CHALLENGE", "XAUTH-DOMAIN", "XAUTH-STATUS", "XAUTH-NEXT-PIN", "XAUTH-ANSWER", NULL };enum_names xauth_attr_names_tv = { XAUTH_TYPE + ISAKMP_ATTR_AF_TV , XAUTH_ANSWER + ISAKMP_ATTR_AF_TV, xauth_attr_name , NULL };enum_names xauth_attr_names = { XAUTH_TYPE , XAUTH_ANSWER, xauth_attr_name , &xauth_attr_names_tv };/* for XAUTH-TYPE attribute */const char *const xauth_type_name[] = { "Generic", "RADIUS-CHAP", "OTP", "S/KEY", NULL};enum_names xauth_type_names = { XAUTH_TYPE_GENERIC, XAUTH_TYPE_SKEY, xauth_type_name, NULL};const char *const modecfg_attr_name[] = { "INTERNAL_IP4_ADDRESS", "INTERNAL_IP4_NETMASK", "INTERNAL_IP4_DNS", "INTERNAL_IP4_NBNS", "INTERNAL_ADDRESS_EXPIRY", "INTERNAL_IP4_DHCP", "APPLICATION_VERSION", "INTERNAL_IP6_ADDRESS", "INTERNAL_IP6_NETMASK", "INTERNAL_IP6_DNS", "INTERNAL_IP6_NBNS", "INTERNAL_IP6_DHCP", "INTERNAL_IP4_SUBNET", "SUPPORTED_ATTRIBUTES", "INTERNAL_IP6_SUBNET", NULL };enum_names modecfg_attr_names_tv = { INTERNAL_IP4_ADDRESS + ISAKMP_ATTR_AF_TV , INTERNAL_IP6_SUBNET + ISAKMP_ATTR_AF_TV, modecfg_attr_name , &xauth_attr_names };enum_names modecfg_attr_names = { INTERNAL_IP4_ADDRESS , INTERNAL_IP6_SUBNET, modecfg_attr_name , &modecfg_attr_names_tv };/* Oakley Lifetime Type attribute */static const char *const oakley_lifetime_name[] = { "OAKLEY_LIFE_SECONDS", "OAKLEY_LIFE_KILOBYTES", };enum_names oakley_lifetime_names = { OAKLEY_LIFE_SECONDS, OAKLEY_LIFE_KILOBYTES, oakley_lifetime_name, NULL };/* Oakley PRF attribute (none defined) */enum_names oakley_prf_names = { 1, 0, NULL, NULL };/* Oakley Encryption Algorithm attribute */static const char *const oakley_enc_name[] = { "OAKLEY_DES_CBC", "OAKLEY_IDEA_CBC", "OAKLEY_BLOWFISH_CBC", "OAKLEY_RC5_R16_B64_CBC", "OAKLEY_3DES_CBC", "OAKLEY_CAST_CBC", "OAKLEY_AES_CBC", };#ifdef NO_EXTRA_IKEenum_names oakley_enc_names = { OAKLEY_DES_CBC, OAKLEY_AES_CBC, oakley_enc_name, NULL };#elsestatic const char *const oakley_enc_name_draft_aes_cbc_02[] = { "OAKLEY_MARS_CBC" /* 65001 */, "OAKLEY_RC6_CBC" /* 65002 */,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -