&a, &b);
}
assert_hook_not_called(child_updown);
- a->delete_child_sa(a, PROTO_ESP, _i+1, FALSE);
+ call_ikesa(a, delete_child_sa, PROTO_ESP, _i+1, FALSE);
assert_child_sa_state(a, _i+1, CHILD_DELETING);
assert_hook();
assert_child_sa_count(a, 0);
assert_hook();
- a->destroy(a);
- b->destroy(b);
+ call_ikesa(a, destroy);
+ call_ikesa(b, destroy);
}
END_TEST
&a, &b);
/* both peers delete the CHILD_SA concurrently */
assert_hook_not_called(child_updown);
- a->delete_child_sa(a, PROTO_ESP, 1, FALSE);
+ call_ikesa(a, delete_child_sa, PROTO_ESP, 1, FALSE);
assert_child_sa_state(a, 1, CHILD_DELETING);
- b->delete_child_sa(b, PROTO_ESP, 2, FALSE);
+ call_ikesa(b, delete_child_sa, PROTO_ESP, 2, FALSE);
assert_child_sa_state(b, 2, CHILD_DELETING);
assert_hook();
assert_child_sa_count(b, 0);
assert_hook();
- a->destroy(a);
- b->destroy(b);
+ call_ikesa(a, destroy);
+ call_ikesa(b, destroy);
}
END_TEST
peer_cfg = create_peer_cfg(TRUE);
sa_i->set_peer_cfg(sa_i, peer_cfg);
peer_cfg->destroy(peer_cfg);
- charon->bus->set_sa(charon->bus, sa_i);
- sa_i->initiate(sa_i, create_child_cfg(TRUE), 0, NULL, NULL);
+ call_ikesa(sa_i, initiate, create_child_cfg(TRUE), 0, NULL, NULL);
/* IKE_SA_INIT --> */
id_r->set_initiator_spi(id_r, id_i->get_initiator_spi(id_i));
process_message(this, sa_r, NULL);
message_t *message);
};
+/**
+ * Since we don't use the IKE_SA manager to checkout SAs use this to call a
+ * method on the given IKE_SA in its context.
+ */
+#define call_ikesa(sa, method, ...) ({ \
+ charon->bus->set_sa(charon->bus, sa); \
+ sa->method(sa, ##__VA_ARGS__); \
+ charon->bus->set_sa(charon->bus, NULL); \
+})
+
/**
* The one and only instance of the helper object.
*