📄 constants.c
字号:
"OAKLEY_ID_65003" /* 65003 */, "OAKLEY_SERPENT_CBC" /* 65004 */, "OAKLEY_TWOFISH_CBC" /* 65005 */,};static const char *const oakley_enc_name_ssh[] = { "OAKLEY_SSH_PRIVATE_65289",};enum_names oakley_enc_names_ssh = { 65289, 65289, oakley_enc_name_ssh, NULL };enum_names oakley_enc_names_draft_aes_cbc_02 = { 65001, 65005, oakley_enc_name_draft_aes_cbc_02, &oakley_enc_names_ssh };enum_names oakley_enc_names = { OAKLEY_DES_CBC, OAKLEY_AES_CBC, oakley_enc_name, &oakley_enc_names_draft_aes_cbc_02 };#endif/* Oakley Hash Algorithm attribute */static const char *const oakley_hash_name2[] = { "OAKLEY_SHA", };enum_names oakley_hash_names2 = { OAKLEY_SHA, OAKLEY_SHA, oakley_hash_name2, NULL };static const char *const oakley_hash_name[] = { "OAKLEY_MD5", "OAKLEY_SHA1", "OAKLEY_TIGER", "OAKLEY_SHA2_256", "OAKLEY_SHA2_384", "OAKLEY_SHA2_512", };enum_names oakley_hash_names = { OAKLEY_MD5, OAKLEY_SHA2_512, oakley_hash_name, &oakley_hash_names2};/* Oakley Authentication Method attribute */static const char *const oakley_auth_name1[] = { "OAKLEY_PRESHARED_KEY", "OAKLEY_DSS_SIG", "OAKLEY_RSA_SIG", "OAKLEY_RSA_ENC", "OAKLEY_RSA_ENC_REV", "OAKLEY_ELGAMAL_ENC", "OAKLEY_ELGAMAL_ENC_REV", };static const char *const oakley_auth_name2[] = { "HybridInitRSA", "HybridRespRSA", "HybridInitDSS", "HybridRespDSS", };static const char *const oakley_auth_name3[] = { "XAUTHInitPreShared", "XAUTHRespPreShared", "XAUTHInitDSS", "XAUTHRespDSS", "XAUTHInitRSA", "XAUTHRespRSA", "XAUTHInitRSAEncryption", "XAUTHRespRSAEncryption", "XAUTHInitRSARevisedEncryption", "XAUTHRespRSARevisedEncryption", };static enum_names oakley_auth_names1 = { OAKLEY_PRESHARED_KEY, OAKLEY_ELGAMAL_ENC_REV , oakley_auth_name1, NULL };static enum_names oakley_auth_names2 = { HybridInitRSA, HybridRespDSS , oakley_auth_name2, &oakley_auth_names1 };enum_names oakley_auth_names = { XAUTHInitPreShared, XAUTHRespRSARevisedEncryption , oakley_auth_name3, &oakley_auth_names2 };/* Oakley Group Description attribute */static const char *const oakley_group_name[] = { "OAKLEY_GROUP_MODP768", "OAKLEY_GROUP_MODP1024", "OAKLEY_GROUP_GP155", "OAKLEY_GROUP_GP185", "OAKLEY_GROUP_MODP1536", };static const char *const oakley_group_name_rfc3526[] = { "OAKLEY_GROUP_MODP2048", "OAKLEY_GROUP_MODP3072", "OAKLEY_GROUP_MODP4096", "OAKLEY_GROUP_MODP6144", "OAKLEY_GROUP_MODP8192"};enum_names oakley_group_names_rfc3526 = { OAKLEY_GROUP_MODP2048, OAKLEY_GROUP_MODP8192, oakley_group_name_rfc3526, NULL };enum_names oakley_group_names = { OAKLEY_GROUP_MODP768, OAKLEY_GROUP_MODP1536, oakley_group_name, &oakley_group_names_rfc3526 };/* Oakley Group Type attribute */static const char *const oakley_group_type_name[] = { "OAKLEY_GROUP_TYPE_MODP", "OAKLEY_GROUP_TYPE_ECP", "OAKLEY_GROUP_TYPE_EC2N", };enum_names oakley_group_type_names = { OAKLEY_GROUP_TYPE_MODP, OAKLEY_GROUP_TYPE_EC2N, oakley_group_type_name, NULL };/* Notify messages -- error types */static const char *const notification_name[] = { "INVALID_PAYLOAD_TYPE", "DOI_NOT_SUPPORTED", "SITUATION_NOT_SUPPORTED", "INVALID_COOKIE", "INVALID_MAJOR_VERSION", "INVALID_MINOR_VERSION", "INVALID_EXCHANGE_TYPE", "INVALID_FLAGS", "INVALID_MESSAGE_ID", "INVALID_PROTOCOL_ID", "INVALID_SPI", "INVALID_TRANSFORM_ID", "ATTRIBUTES_NOT_SUPPORTED", "NO_PROPOSAL_CHOSEN", "BAD_PROPOSAL_SYNTAX", "PAYLOAD_MALFORMED", "INVALID_KEY_INFORMATION", "INVALID_ID_INFORMATION", "INVALID_CERT_ENCODING", "INVALID_CERTIFICATE", "CERT_TYPE_UNSUPPORTED", "INVALID_CERT_AUTHORITY", "INVALID_HASH_INFORMATION", "AUTHENTICATION_FAILED", "INVALID_SIGNATURE", "ADDRESS_NOTIFICATION", "NOTIFY_SA_LIFETIME", "CERTIFICATE_UNAVAILABLE", "UNSUPPORTED_EXCHANGE_TYPE", "UNEQUAL_PAYLOAD_LENGTHS", };static const char *const notification_status_name[] = { "CONNECTED", };static const char *const ipsec_notification_name[] = { "IPSEC_RESPONDER_LIFETIME", "IPSEC_REPLAY_STATUS", "IPSEC_INITIAL_CONTACT", };static const char *const notification_dpd_name[] = { "R_U_THERE", "R_U_THERE_ACK",};enum_names notification_dpd_names = { R_U_THERE, R_U_THERE_ACK, notification_dpd_name, NULL };enum_names notification_names = { INVALID_PAYLOAD_TYPE, UNEQUAL_PAYLOAD_LENGTHS, notification_name, ¬ification_dpd_names };enum_names notification_status_names = { CONNECTED, CONNECTED, notification_status_name, ¬ification_names };enum_names ipsec_notification_names = { IPSEC_RESPONDER_LIFETIME, IPSEC_INITIAL_CONTACT, ipsec_notification_name, ¬ification_status_names };/* MODECFG *//* * From draft-dukes-ike-mode-cfg*/const char *const attr_msg_type_name[] = { "ISAKMP_CFG_RESERVED", "ISAKMP_CFG_REQUEST", "ISAKMP_CFG_REPLY", "ISAKMP_CFG_SET", "ISAKMP_CFG_ACK", NULL };enum_names attr_msg_type_names = { 0 , ISAKMP_CFG_ACK, attr_msg_type_name , NULL };/* socket address family info */static const char *const af_inet_name[] = { "AF_INET", };static const char *const af_inet6_name[] = { "AF_INET6", };static enum_names af_names6 = { AF_INET6, AF_INET6, af_inet6_name, NULL };enum_names af_names = { AF_INET, AF_INET, af_inet_name, &af_names6 };static ip_address ipv4_any, ipv6_any;static ip_subnet ipv4_wildcard, ipv6_wildcard;static ip_subnet ipv4_all, ipv6_all;const struct af_info af_inet4_info = { AF_INET, "AF_INET", sizeof(struct in_addr), sizeof(struct sockaddr_in), 32, ID_IPV4_ADDR, ID_IPV4_ADDR_SUBNET, ID_IPV4_ADDR_RANGE, &ipv4_any, &ipv4_wildcard, &ipv4_all, };const struct af_info af_inet6_info = { AF_INET6, "AF_INET6", sizeof(struct in6_addr), sizeof(struct sockaddr_in6), 128, ID_IPV6_ADDR, ID_IPV6_ADDR_SUBNET, ID_IPV6_ADDR_RANGE, &ipv6_any, &ipv6_wildcard, &ipv6_all, };const struct af_info *aftoinfo(int af){ switch (af) { case AF_INET: return &af_inet4_info; case AF_INET6: return &af_inet6_info; default: return NULL; }}boolsubnetisnone(const ip_subnet *sn){ ip_address base; networkof(sn, &base); return isanyaddr(&base) && subnetishost(sn);}/* BIND enumerated types */#include <arpa/nameser.h>static const char *const rr_type_name[] = { "T_A", /* 1 host address */ "T_NS", /* 2 authoritative server */ "T_MD", /* 3 mail destination */ "T_MF", /* 4 mail forwarder */ "T_CNAME", /* 5 canonical name */ "T_SOA", /* 6 start of authority zone */ "T_MB", /* 7 mailbox domain name */ "T_MG", /* 8 mail group member */ "T_MR", /* 9 mail rename name */ "T_NULL", /* 10 null resource record */ "T_WKS", /* 11 well known service */ "T_PTR", /* 12 domain name pointer */ "T_HINFO", /* 13 host information */ "T_MINFO", /* 14 mailbox information */ "T_MX", /* 15 mail routing information */ "T_TXT", /* 16 text strings */ "T_RP", /* 17 responsible person */ "T_AFSDB", /* 18 AFS cell database */ "T_X25", /* 19 X_25 calling address */ "T_ISDN", /* 20 ISDN calling address */ "T_RT", /* 21 router */ "T_NSAP", /* 22 NSAP address */ "T_NSAP_PTR", /* 23 reverse NSAP lookup (deprecated) */ "T_SIG", /* 24 security signature */ "T_KEY", /* 25 security key */ "T_PX", /* 26 X.400 mail mapping */ "T_GPOS", /* 27 geographical position (withdrawn) */ "T_AAAA", /* 28 IP6 Address */ "T_LOC", /* 29 Location Information */ "T_NXT", /* 30 Next Valid Name in Zone */ "T_EID", /* 31 Endpoint identifier */ "T_NIMLOC", /* 32 Nimrod locator */ "T_SRV", /* 33 Server selection */ "T_ATMA", /* 34 ATM Address */ "T_NAPTR", /* 35 Naming Authority PoinTeR */ NULL };enum_names rr_type_names = { T_A, T_NAPTR, rr_type_name, NULL };/* Query type values which do not appear in resource records */static const char *const rr_qtype_name[] = { "T_IXFR", /* 251 incremental zone transfer */ "T_AXFR", /* 252 transfer zone of authority */ "T_MAILB", /* 253 transfer mailbox records */ "T_MAILA", /* 254 transfer mail agent records */ "T_ANY", /* 255 wildcard match */ NULL };enum_names rr_qtype_names = { T_IXFR, T_ANY, rr_qtype_name, &rr_type_names };static const char *const rr_class_name[] = { "C_IN", /* 1 the arpa internet */ NULL };enum_names rr_class_names = { C_IN, C_IN, rr_class_name, NULL };static const char *const ppk_name[] = { "PPK_PSK", "PPK_DSS", "PPK_RSA", "PPK_PIN", NULL};enum_names ppk_names = { PPK_PSK, PPK_PIN, ppk_name, NULL };/* * NAT-Traversal defines for nat_traveral type from nat_traversal.h * */const char *const natt_type_bitnames[] = { "draft-ietf-ipsec-nat-t-ike-00/01", /* 0 */ "draft-ietf-ipsec-nat-t-ike-02/03", "RFC XXXX (NAT-Traversal)", "3", /* 3 */ "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "nat is behind me", "nat is behind peer"};/* * Values for right= and left= */struct keyword_enum_value kw_host_values[]={ { "%defaultroute", KH_DEFAULTROUTE }, { "%any", KH_ANY }, { "%", KH_IFACE }, { "%oppo", KH_OPPO }, { "%opportunistic", KH_OPPO }, { "%opportunisticgroup", KH_OPPOGROUP }, { "%oppogroup", KH_OPPOGROUP }, { "%group", KH_GROUP },};struct keyword_enum_values kw_host_list= { kw_host_values, sizeof(kw_host_values)/sizeof(struct keyword_enum_value)};/* look up enum names in an enum_names */const char *enum_name(enum_names *ed, unsigned long val){ enum_names *p; for (p = ed; p != NULL; p = p->en_next_range) if (p->en_first <= val && val <= p->en_last) return p->en_names[val - p->en_first]; return NULL;}/* look up an enum in a starter friendly way */const char *keyword_name(struct keyword_enum_values *kevs, unsigned int value){ int kevcount; struct keyword_enum_value *kev; for(kevcount = kevs->valuesize, kev = kevs->values; kevcount > 0 && kev->value != value; kev++, kevcount--); passert(kevcount != 0); /* for now */ return kev->name;}/* find or construct a string to describe an enum value * Result may be in STATIC buffer! */const char *enum_show(enum_names *ed, unsigned long val){ const char *p = enum_name(ed, val); if (p == NULL) { static char buf[12]; /* only one! I hope that it is big enough */ snprintf(buf, sizeof(buf), "%lu??", val); p = buf; } return p;}static char bitnamesbuf[200]; /* only one! I hope that it is big enough! */int enum_search(enum_names *ed, const char *str) { enum_names *p; const char *ptr; unsigned en; for (p = ed; p != NULL; p = p->en_next_range) for (en=p->en_first; en<=p->en_last; en++) { ptr=p->en_names[en - p->en_first]; if (ptr==0) continue; /* if (strncmp(ptr, str, strlen(ptr))==0) */ if (strcmp(ptr, str)==0) return en; } return -1;}/* construct a string to name the bits on in a set * Result may be in STATIC buffer! * Note: prettypolicy depends on internal details. */const char *bitnamesofb(const char *const table[], lset_t val , char *b, size_t blen){ char *p = b; lset_t bit; const char *const *tp; if (val == 0) return "none"; for (tp = table, bit = 01; val != 0; bit <<= 1) { if (val & bit) { const char *n = *tp; size_t nl; if (n == NULL || *n == '\0') { /* no name for this bit, so use hex */ static char flagbuf[sizeof("0x80000000")]; snprintf(flagbuf, sizeof(flagbuf), "0x%llx", bit); n = flagbuf; } nl = strlen(n); if (p != b && p < b+blen - 1) *p++ = '+'; if (b+blen - p > (ptrdiff_t)nl) { strcpy(p, n); p += nl; } val -= bit; } if (*tp != NULL) tp++; /* move on, but not past end */ } *p = '\0'; return b;}const char *bitnamesof(const char *const table[], lset_t val){ return bitnamesofb(table, val, bitnamesbuf, sizeof(bitnamesbuf));}/* test a set by seeing if all bits have names */booltestset(const char *const table[], lset_t val){ lset_t bit; const char *const *tp; for (tp = table, bit = 01; val != 0; bit <<= 1, tp++) { const char *n = *tp; if (n == NULL || ((val & bit) && *n == '\0')) return FALSE; val &= ~bit; } return TRUE;}const char sparse_end[] = "end of sparse names";/* look up enum names in a sparse_names */const char *sparse_name(sparse_names sd, unsigned long val){ const struct sparse_name *p; for (p = sd; p->name != sparse_end; p++) if (p->val == val) return p->name; return NULL;}/* find or construct a string to describe an sparse value * Result may be in STATIC buffer! */const char *sparse_val_show(sparse_names sd, unsigned long val){ const char *p = sparse_name(sd, val); if (p == NULL) { static char buf[12]; /* only one! I hope that it is big enough */ snprintf(buf, sizeof(buf), "%lu??", val); p = buf; } return p;}void init_constants(void){ happy(anyaddr(AF_INET, &ipv4_any)); happy(anyaddr(AF_INET6, &ipv6_any)); happy(addrtosubnet(&ipv4_any, &ipv4_wildcard)); happy(addrtosubnet(&ipv6_any, &ipv6_wildcard)); happy(initsubnet(&ipv4_any, 0, '0', &ipv4_all)); happy(initsubnet(&ipv6_any, 0, '0', &ipv6_all));}/* * Local Variables: * c-basic-offset:4 * c-style: pluto * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -