aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding/message.c
diff options
context:
space:
mode:
authorClavister OpenSource <opensource@clavister.com>2011-11-23 08:29:54 +0100
committerClavister OpenSource <opensource@clavister.com>2012-03-20 17:30:49 +0100
commit54a8a94fa9009437e4c4d7df52d881fc1203c2ac (patch)
tree20079d0c1d06d7821594938b2be034ae9d3d9faf /src/libcharon/encoding/message.c
parent9769b76cabbca4b97bcccfe69b6455c8c0c162ad (diff)
downloadstrongswan-54a8a94fa9009437e4c4d7df52d881fc1203c2ac.tar.bz2
strongswan-54a8a94fa9009437e4c4d7df52d881fc1203c2ac.tar.xz
IKEv1 ConfigMode: Added TRANSACTION exchange type. Added attribute_payload (IKEv2 equiv cp_payload) and data_attribute (IKEv2 equiv configuration_attribute) payload types. Did not combine with IKEv2 because it wasn't trivial to do so. This might be a task worth investigating in the future, because there is a decent amount of shared code here.
Diffstat (limited to 'src/libcharon/encoding/message.c')
-rw-r--r--src/libcharon/encoding/message.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libcharon/encoding/message.c b/src/libcharon/encoding/message.c
index e7a48344b..e84f9a123 100644
--- a/src/libcharon/encoding/message.c
+++ b/src/libcharon/encoding/message.c
@@ -631,6 +631,24 @@ static payload_order_t quick_mode_r_order[] = {
{ID_V1, 0},
};
+/**
+ * Message rule for TRANSACTION.
+ */
+static payload_rule_t transaction_payload_rules_v1[] = {
+/* payload type min max encr suff */
+ {HASH_V1, 0, 1, TRUE, FALSE},
+ {ATTRIBUTE_V1, 1, 1, FALSE, FALSE},
+};
+
+/**
+ * Payload order for TRANSACTION.
+ */
+static payload_order_t transaction_payload_order_v1[] = {
+/* payload type notify type */
+ {HASH_V1, 0},
+ {ATTRIBUTE_V1, 0},
+};
+
#endif /* USE_IKEV1 */
/**
@@ -708,6 +726,14 @@ static message_rule_t message_rules[] = {
countof(quick_mode_r_rules), quick_mode_r_rules,
countof(quick_mode_r_order), quick_mode_r_order,
},
+ {TRANSACTION, TRUE, TRUE,
+ countof(transaction_payload_rules_v1), transaction_payload_rules_v1,
+ countof(transaction_payload_order_v1), transaction_payload_order_v1,
+ },
+ {TRANSACTION, FALSE, TRUE,
+ countof(transaction_payload_rules_v1), transaction_payload_rules_v1,
+ countof(transaction_payload_order_v1), transaction_payload_order_v1,
+ },
/* TODO-IKEv1: define rules for other exchanges */
#endif /* USE_IKEV1 */
};