aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcharon/encoding/message.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libcharon/encoding/message.h')
-rw-r--r--src/libcharon/encoding/message.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/libcharon/encoding/message.h b/src/libcharon/encoding/message.h
index bc4aa08bf..bd329657a 100644
--- a/src/libcharon/encoding/message.h
+++ b/src/libcharon/encoding/message.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006-2011 Tobias Brunner
+ * Copyright (C) 2006-2014 Tobias Brunner
* Copyright (C) 2005-2009 Martin Willi
* Copyright (C) 2006 Daniel Roethlisberger
* Copyright (C) 2005 Jan Hutter
@@ -265,6 +265,25 @@ struct message_t {
bool (*is_encoded)(message_t *this);
/**
+ * Split the (generated) message into fragments of the given size (total IP
+ * datagram length).
+ *
+ * @note Only supported for IKEv1 at the moment.
+ *
+ * @param frag_len fragment length (maximum total IP datagram length), 0
+ * for default value depending on address family
+ * @param fragments receives an enumerator with message_t* (not generated),
+ * which are owned by the enumerator
+ * @return
+ * - SUCCESS if message could be fragmented
+ * - ALREADY_DONE if message does not need to be fragmented
+ * - INVALID_STATE if message was not generated or is IKEv2
+ * - FAILED if fragmentation failed
+ */
+ status_t (*fragment)(message_t *this, size_t frag_len,
+ enumerator_t **fragments);
+
+ /**
* Gets the source host informations.
*
* @warning Returned host_t object is not getting cloned,