diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1999-10-01 14:07:43 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1999-10-01 14:07:43 +0000 |
commit | 014446410dc406c1c71f839a4773582632ac904f (patch) | |
tree | 34010187ab4672eed2d94c5cf8efc5628284b3f6 /sbin/isakmpd | |
parent | 67d73772340553007a7975649cb772df85784120 (diff) |
Merge with EOM 1.11
author: ho
add some more debugging info
author: angelos
Allow "Life" to be ANY
author: angelos
Allow "ANY" in some fields
Diffstat (limited to 'sbin/isakmpd')
-rw-r--r-- | sbin/isakmpd/ike_phase_1.c | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/sbin/isakmpd/ike_phase_1.c b/sbin/isakmpd/ike_phase_1.c index c6d81ed6875..4d7fba808e3 100644 --- a/sbin/isakmpd/ike_phase_1.c +++ b/sbin/isakmpd/ike_phase_1.c @@ -1,5 +1,5 @@ -/* $OpenBSD: ike_phase_1.c,v 1.7 1999/08/26 22:27:51 niklas Exp $ */ -/* $EOM: ike_phase_1.c,v 1.8 1999/08/18 00:44:55 angelos Exp $ */ +/* $OpenBSD: ike_phase_1.c,v 1.8 1999/10/01 14:07:42 niklas Exp $ */ +/* $EOM: ike_phase_1.c,v 1.11 1999/09/29 22:05:38 ho Exp $ */ /* * Copyright (c) 1999 Niklas Hallqvist. All rights reserved. @@ -1097,14 +1097,19 @@ attribute_unacceptable (u_int16_t type, u_int8_t *value, u_int16_t len, case IKE_ATTR_PRF: str = conf_get_str (xf->field, tag); if (!str) - /* This attribute does not exist in this policy. */ - return 1; + { + /* This attribute does not exist in this policy. */ + log_print ("attribute_unacceptable: attr %s does not exist in %s", + tag, xf->field); + return 1; + } map = constant_link_lookup (ike_attr_cst, type); if (!map) return 1; - if (constant_value (map, str) == decode_16 (value)) + if ((constant_value (map, str) == decode_16 (value)) || + (!strcmp (str, "ANY"))) { /* Mark this attribute as seen. */ node = malloc (sizeof *node); @@ -1118,6 +1123,7 @@ attribute_unacceptable (u_int16_t type, u_int8_t *value, u_int16_t len, LIST_INSERT_HEAD (&vs->attrs, node, link); return 0; } + log_print ("attribute_unacceptable: got %s, expected %s", map, str); return 1; case IKE_ATTR_GROUP_PRIME: @@ -1130,11 +1136,17 @@ attribute_unacceptable (u_int16_t type, u_int8_t *value, u_int16_t len, case IKE_ATTR_LIFE_TYPE: case IKE_ATTR_LIFE_DURATION: + if (!strcmp (conf_get_str (xf->field, "Life"), "ANY")) + return 0; + rv = 1; life_conf = conf_get_list (xf->field, "Life"); if (!life_conf) - /* Life attributes given, but not in our policy. */ - return 1; + { + /* Life attributes given, but not in our policy. */ + log_print ("attribute_unacceptable: received unexpected life attribute"); + return 1; + } /* * Each lifetime type must match, otherwise we turn the proposal down. @@ -1179,8 +1191,13 @@ attribute_unacceptable (u_int16_t type, u_int8_t *value, u_int16_t len, rv = 1; goto bail_out; } - rv = !conf_match_num (vs->life, "LIFE_DURATION", - len == 4 ? decode_32 (value) : decode_16 (value)); + + if (!strcmp (conf_get_str (vs->life, "LIFE_DURATION"), "ANY")) + rv = 0; + else + rv = !conf_match_num (vs->life, "LIFE_DURATION", + len == 4 ? decode_32 (value) : + decode_16 (value)); free (vs->life); vs->life = 0; break; |