aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/parser.h
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2005-11-10 19:19:56 +0000
committerMartin Willi <martin@strongswan.org>2005-11-10 19:19:56 +0000
commit3d40ec7a68e6e318eb73dd80da206141877cb04e (patch)
treeb3bb446f96c65c781404cebbb811059dd54644d9 /Source/charon/parser.h
parent27e308739b5cde523a808bbbbfbefb41e83b4a70 (diff)
downloadstrongswan-3d40ec7a68e6e318eb73dd80da206141877cb04e.tar.bz2
strongswan-3d40ec7a68e6e318eb73dd80da206141877cb04e.tar.xz
- parser successfully parses an ike_header
- no doxygen yet
Diffstat (limited to 'Source/charon/parser.h')
-rw-r--r--Source/charon/parser.h37
1 files changed, 26 insertions, 11 deletions
diff --git a/Source/charon/parser.h b/Source/charon/parser.h
index b25c94cf5..893917b8f 100644
--- a/Source/charon/parser.h
+++ b/Source/charon/parser.h
@@ -27,6 +27,14 @@
#include "encodings.h"
+typedef struct parser_context_s parser_context_t;
+
+struct parser_context_s {
+
+ status_t (*destroy) (parser_context_t *this);
+
+};
+
/**
* @brief A parser_t object which parses payloads of specific type
@@ -36,22 +44,29 @@ typedef struct parser_s parser_t;
struct parser_s {
/**
- * @brief Generates a specific payload from given data struct
+ * @brief parses a chunk and generates a usable data struct
*
* Remember: Header and substructures are also seen as payloads
*
- * @param generator generator object
- * @return SUCCESSFUL if succeeded,
- * NOT_SUPPORTED if payload_type is not supported
- * OUT_OF_RES if out of ressources
+ * @param parser parser Object
+ * @param payload_type definition of payload including encoding_rule
+ * @param data chunk of data to parse
+ * @param[out] allocated structure with parsed data
+ * @return
+ * - SUCCESSFUL if succeeded,
+ * - NOT_SUPPORTED if payload_type is not supported
+ * - OUT_OF_RES if out of ressources
+ * - PARSE_ERROR if corrupted data found
*/
- status_t (*parse_payload) (parser_t *this, payload_type_t payload_type, chunk_t *data, void *data_struct);
-
+ parser_context_t *(*create_context) (parser_t *this, chunk_t data);
+ status_t (*parse_payload) (parser_t *this, parser_context_t* context, payload_type_t payload_type, void **data_struct);
+
/**
- * @brief Destroys a generator object
+ * @brief Destroys a parser object
*
- * @param generator generator object
- * @return SUCCESSFUL if succeeded, FAILED otherwise
+ * @param parser parser object
+ * @return
+ * - SUCCESSFUL in any case
*/
status_t (*destroy) (parser_t *this);
};
@@ -60,6 +75,6 @@ struct parser_s {
* Constructor to create a parser
*
*/
-parser_t *parser_create(payload_info_t ** payload_infos);
+parser_t *parser_create(payload_info_t **payload_infos);
#endif /*PARSER_H_*/