aboutsummaryrefslogtreecommitdiffstats
path: root/src/charon/sa/transactions/transaction.c
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2006-07-13 08:26:54 +0000
committerMartin Willi <martin@strongswan.org>2006-07-13 08:26:54 +0000
commitbcb95ced3d7c9b4cd72d048f3567c79c3484ce80 (patch)
tree517ad0b05c68c24d0101f72690fe7c0a5658ae7f /src/charon/sa/transactions/transaction.c
parentcb5c41cde987fafa330fa679e25fee904ac6fe1f (diff)
downloadstrongswan-bcb95ced3d7c9b4cd72d048f3567c79c3484ce80.tar.bz2
strongswan-bcb95ced3d7c9b4cd72d048f3567c79c3484ce80.tar.xz
added CHILD_SA states, which allows us to detect further simultaneous transactions
reimplemented the buggy message id handling
Diffstat (limited to 'src/charon/sa/transactions/transaction.c')
-rw-r--r--src/charon/sa/transactions/transaction.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/src/charon/sa/transactions/transaction.c b/src/charon/sa/transactions/transaction.c
index 37baaf962..5136d1942 100644
--- a/src/charon/sa/transactions/transaction.c
+++ b/src/charon/sa/transactions/transaction.c
@@ -46,21 +46,19 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
payload_t *current;
notify_payload_t *notify;
transaction_t *transaction = NULL;
- u_int32_t message_id;
if (!request->get_request(request))
{
return NULL;
}
- message_id = request->get_message_id(request);
switch (request->get_exchange_type(request))
{
case IKE_SA_INIT:
{
- if (ike_sa->get_state(ike_sa) == SA_CREATED)
+ if (ike_sa->get_state(ike_sa) == IKE_CREATED)
{
- transaction = (transaction_t*)ike_sa_init_create(ike_sa, message_id);
+ transaction = (transaction_t*)ike_sa_init_create(ike_sa);
}
break;
}
@@ -72,7 +70,7 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
}
case CREATE_CHILD_SA:
{
- if (ike_sa->get_state(ike_sa) != SA_ESTABLISHED)
+ if (ike_sa->get_state(ike_sa) != IKE_ESTABLISHED)
{
break;
}
@@ -93,14 +91,14 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
switch (notify->get_protocol_id(notify))
{
case PROTO_IKE:
- /* TODO: transaction = rekey_ike_sa_create(ike_sa, message_id); */
+ /* TODO: transaction = rekey_ike_sa_create(ike_sa); */
break;
case PROTO_AH:
case PROTO_ESP:
/* we do not handle rekeying of CHILD_SAs in a special
* transaction, as the procedure is nearly equal
* to create a new CHILD_SA. */
- transaction = (transaction_t*)create_child_sa_create(ike_sa, message_id);
+ transaction = (transaction_t*)create_child_sa_create(ike_sa);
break;
default:
break;
@@ -116,13 +114,13 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
/* we have not found a REKEY_SA notify for IKE. This means
* we create a new CHILD_SA, or rekey an existing one.
* Both cases are handled with the create_child_sa transaction. */
- transaction = (transaction_t*)create_child_sa_create(ike_sa, message_id);
+ transaction = (transaction_t*)create_child_sa_create(ike_sa);
}
break;
}
case INFORMATIONAL:
{
- if (ike_sa->get_state(ike_sa) == SA_CREATED)
+ if (ike_sa->get_state(ike_sa) == IKE_CREATED)
{
break;
}
@@ -142,12 +140,12 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
{
case PROTO_IKE:
transaction = (transaction_t*)
- delete_ike_sa_create(ike_sa, message_id);
+ delete_ike_sa_create(ike_sa);
break;
case PROTO_AH:
case PROTO_ESP:
transaction = (transaction_t*)
- delete_child_sa_create(ike_sa, message_id);
+ delete_child_sa_create(ike_sa);
break;
default:
break;
@@ -168,7 +166,7 @@ transaction_t *transaction_create(ike_sa_t *ike_sa, message_t *request)
if (payload_count == 0)
{
transaction = (transaction_t*)
- dead_peer_detection_create(ike_sa, message_id);
+ dead_peer_detection_create(ike_sa);
}
break;
}