]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Support removal of payloads from messages
authorMartin Willi <martin@revosec.ch>
Tue, 2 Nov 2010 13:30:45 +0000 (14:30 +0100)
committerMartin Willi <martin@revosec.ch>
Wed, 5 Jan 2011 15:45:41 +0000 (16:45 +0100)
src/libcharon/encoding/message.c
src/libcharon/encoding/message.h

index b69a9f30c86244057a8b3007ba46c51c856dd2fd..1b79b21951f38ef87752e4855d182669516157d5 100644 (file)
@@ -737,6 +737,12 @@ METHOD(message_t, create_payload_enumerator, enumerator_t*,
        return this->payloads->create_enumerator(this->payloads);
 }
 
+METHOD(message_t, remove_payload_at, void,
+       private_message_t *this, enumerator_t *enumerator)
+{
+       this->payloads->remove_at(this->payloads, enumerator);
+}
+
 METHOD(message_t, get_payload, payload_t*,
        private_message_t *this, payload_type_t type)
 {
@@ -1466,6 +1472,7 @@ message_t *message_create_from_packet(packet_t *packet)
                        .set_destination = _set_destination,
                        .get_destination = _get_destination,
                        .create_payload_enumerator = _create_payload_enumerator,
+                       .remove_payload_at = _remove_payload_at,
                        .get_payload = _get_payload,
                        .get_notify = _get_notify,
                        .parse_header = _parse_header,
index 86c39ad7e305e4b3ce0123958e99305ff73dda05..899ced24a0e713480068851f4cae22ff7d87aed4 100644 (file)
@@ -286,6 +286,13 @@ struct message_t {
         */
        enumerator_t * (*create_payload_enumerator) (message_t *this);
 
+       /**
+        * Remove the payload at the current enumerator position.
+        *
+        * @param enumerator    enumerator created by create_payload_enumerator()
+        */
+       void (*remove_payload_at)(message_t *this, enumerator_t *enumerator);
+
        /**
         * Find a payload of a specific type.
         *