aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/credentials/builder.h
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2008-09-02 11:00:13 +0000
committerMartin Willi <martin@strongswan.org>2008-09-02 11:00:13 +0000
commitf7c17aa15c13b10f7b624ae8da5ea3d921b77535 (patch)
treee8db73c667aa1c9f0d827ed590aeb6393d6037e3 /src/libstrongswan/credentials/builder.h
parent4da0116d78b726ef4125577bed8e9974883fc7fd (diff)
downloadstrongswan-f7c17aa15c13b10f7b624ae8da5ea3d921b77535.tar.bz2
strongswan-f7c17aa15c13b10f7b624ae8da5ea3d921b77535.tar.xz
refactored credential builder
allow enumeration of matching builders try a second builder if the first one fails builder clones resources internally on demand caller frees added resources on failure and success stricter handling of non-supported build parts
Diffstat (limited to 'src/libstrongswan/credentials/builder.h')
-rw-r--r--src/libstrongswan/credentials/builder.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/libstrongswan/credentials/builder.h b/src/libstrongswan/credentials/builder.h
index 22c106b7a..8e0c513c6 100644
--- a/src/libstrongswan/credentials/builder.h
+++ b/src/libstrongswan/credentials/builder.h
@@ -40,6 +40,8 @@ typedef builder_t* (*builder_constructor_t)(int subtype);
enum builder_part_t {
/** path to a file containing an ASN1 blob, char* */
BUILD_FROM_FILE,
+ /** unix socket of a ssh/pgp agent, char* */
+ BUILD_AGENT_SOCKET,
/** DER encoded ASN1 blob, chunk_t */
BUILD_BLOB_ASN1_DER,
/** PEM encoded ASN1 blob, null terminated char* */
@@ -94,8 +96,8 @@ struct builder_t {
/**
* Add a part to the construct.
*
- * Any added parts get owned by the builder/construct, so clone/refcount
- * them if needed.
+ * Any added parts are cloned/refcounted by the builder implementation, a
+ * caller may need to free the passed ressources themself.
*
* @param part kind of part
* @param ... part specific variable argument
@@ -112,4 +114,10 @@ struct builder_t {
void* (*build)(builder_t *this);
};
+/**
+ * Helper macro to cancel a build in a builder
+ */
+#define builder_cancel(builder) { (builder)->add = (void*)nop; \
+ (builder)->build = (void*)free; }
+
#endif /* BUILDER_H_ @}*/