aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-11-25 10:55:08 +0100
committerMartin Willi <martin@revosec.ch>2011-01-05 16:45:52 +0100
commit54f2bdd65668a9f47a235916c793d22046a43589 (patch)
tree2eca45ae2180106ff6555b51428fc937168d4854
parent9ca5d0280eb2e4c9d4f4d9ba4307f72a86dbbe56 (diff)
downloadstrongswan-54f2bdd65668a9f47a235916c793d22046a43589.tar.bz2
strongswan-54f2bdd65668a9f47a235916c793d22046a43589.tar.xz
Added substructure enumerators to sa_payload, proposal_substructure
-rw-r--r--src/libcharon/encoding/payloads/proposal_substructure.c7
-rw-r--r--src/libcharon/encoding/payloads/proposal_substructure.h7
-rw-r--r--src/libcharon/encoding/payloads/sa_payload.c7
-rw-r--r--src/libcharon/encoding/payloads/sa_payload.h7
4 files changed, 28 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/proposal_substructure.c b/src/libcharon/encoding/payloads/proposal_substructure.c
index 7d73bec79..f39c3b0e6 100644
--- a/src/libcharon/encoding/payloads/proposal_substructure.c
+++ b/src/libcharon/encoding/payloads/proposal_substructure.c
@@ -342,6 +342,12 @@ METHOD(proposal_substructure_t, get_proposal, proposal_t*,
return proposal;
}
+METHOD(proposal_substructure_t, create_substructure_enumerator, enumerator_t*,
+ private_proposal_substructure_t *this)
+{
+ return this->transforms->create_enumerator(this->transforms);
+}
+
METHOD2(payload_t, proposal_substructure_t, destroy, void,
private_proposal_substructure_t *this)
{
@@ -375,6 +381,7 @@ proposal_substructure_t *proposal_substructure_create()
.get_protocol_id = _get_protocol_id,
.set_is_last_proposal = _set_is_last_proposal,
.get_proposal = _get_proposal,
+ .create_substructure_enumerator = _create_substructure_enumerator,
.set_spi = _set_spi,
.get_spi = _get_spi,
.destroy = _destroy,
diff --git a/src/libcharon/encoding/payloads/proposal_substructure.h b/src/libcharon/encoding/payloads/proposal_substructure.h
index 2e8d41733..d0ba1fd2a 100644
--- a/src/libcharon/encoding/payloads/proposal_substructure.h
+++ b/src/libcharon/encoding/payloads/proposal_substructure.h
@@ -111,6 +111,13 @@ struct proposal_substructure_t {
proposal_t * (*get_proposal) (proposal_substructure_t *this);
/**
+ * Create an enumerator over transform substructures.
+ *
+ * @return enumerator over transform_substructure_t
+ */
+ enumerator_t* (*create_substructure_enumerator)(proposal_substructure_t *this);
+
+ /**
* Destroys an proposal_substructure_t object.
*/
void (*destroy) (proposal_substructure_t *this);
diff --git a/src/libcharon/encoding/payloads/sa_payload.c b/src/libcharon/encoding/payloads/sa_payload.c
index 8667e7a9e..db20d052f 100644
--- a/src/libcharon/encoding/payloads/sa_payload.c
+++ b/src/libcharon/encoding/payloads/sa_payload.c
@@ -262,6 +262,12 @@ METHOD(sa_payload_t, get_proposals, linked_list_t*,
return list;
}
+METHOD(sa_payload_t, create_substructure_enumerator, enumerator_t*,
+ private_sa_payload_t *this)
+{
+ return this->proposals->create_enumerator(this->proposals);
+}
+
METHOD2(payload_t, sa_payload_t, destroy, void,
private_sa_payload_t *this)
{
@@ -290,6 +296,7 @@ sa_payload_t *sa_payload_create()
},
.add_proposal = _add_proposal,
.get_proposals = _get_proposals,
+ .create_substructure_enumerator = _create_substructure_enumerator,
.destroy = _destroy,
},
.next_payload = NO_PAYLOAD,
diff --git a/src/libcharon/encoding/payloads/sa_payload.h b/src/libcharon/encoding/payloads/sa_payload.h
index 801a70738..cc8c481c8 100644
--- a/src/libcharon/encoding/payloads/sa_payload.h
+++ b/src/libcharon/encoding/payloads/sa_payload.h
@@ -61,6 +61,13 @@ struct sa_payload_t {
void (*add_proposal) (sa_payload_t *this, proposal_t *proposal);
/**
+ * Create an enumerator over all proposal substructures.
+ *
+ * @return enumerator over proposal_substructure_t
+ */
+ enumerator_t* (*create_substructure_enumerator)(sa_payload_t *this);
+
+ /**
* Destroys an sa_payload_t object.
*/
void (*destroy) (sa_payload_t *this);