only export one symbol from the lib, containing a struct with all functions. useful...
authorFelix Fietkau <nbd@openwrt.org>
Fri, 4 Jan 2013 16:37:49 +0000 (17:37 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 4 Jan 2013 16:37:53 +0000 (17:37 +0100)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
ustream-ssl.c
ustream-ssl.h

index 6a337beba32ba708150d50ff69cbdd2517c5c49b..471e29c10cdf31c9401746312fcd06479fa25433 100644 (file)
@@ -180,7 +180,7 @@ static void ustream_ssl_stream_init(struct ustream_ssl *us)
        ustream_init_defaults(s);
 }
 
-void *ustream_ssl_context_new(bool server)
+static void *_ustream_ssl_context_new(bool server)
 {
 #ifdef CYASSL_OPENSSL_H_
        SSL_METHOD *m;
@@ -213,7 +213,7 @@ void *ustream_ssl_context_new(bool server)
        return c;
 }
 
-int ustream_ssl_context_set_crt_file(void *ctx, const char *file)
+static int _ustream_ssl_context_set_crt_file(void *ctx, const char *file)
 {
        int ret;
 
@@ -224,7 +224,7 @@ int ustream_ssl_context_set_crt_file(void *ctx, const char *file)
        return ret;
 }
 
-int ustream_ssl_context_set_key_file(void *ctx, const char *file)
+static int _ustream_ssl_context_set_key_file(void *ctx, const char *file)
 {
        int ret;
 
@@ -235,12 +235,12 @@ int ustream_ssl_context_set_key_file(void *ctx, const char *file)
        return ret;
 }
 
-void ustream_ssl_context_free(void *ctx)
+static void _ustream_ssl_context_free(void *ctx)
 {
        SSL_CTX_free(ctx);
 }
 
-int ustream_ssl_init(struct ustream_ssl *us, struct ustream *conn, void *ctx, bool server)
+static int _ustream_ssl_init(struct ustream_ssl *us, struct ustream *conn, void *ctx, bool server)
 {
        us->error_timer.cb = ustream_ssl_error_cb;
        us->server = server;
@@ -257,3 +257,11 @@ int ustream_ssl_init(struct ustream_ssl *us, struct ustream *conn, void *ctx, bo
 
        return 0;
 }
+
+const struct ustream_ssl_ops ustream_ssl_ops = {
+       .context_new = _ustream_ssl_context_new,
+       .context_set_crt_file = _ustream_ssl_context_set_crt_file,
+       .context_set_key_file = _ustream_ssl_context_set_key_file,
+       .context_free = _ustream_ssl_context_free,
+       .init = _ustream_ssl_init,
+};
index 5148843694d45722177517121c9db7f81524f301..5cc4d15ca2c4766686b9a3fa578c3a5523bb3423 100644 (file)
@@ -17,11 +17,21 @@ struct ustream_ssl {
        bool server;
 };
 
-void *ustream_ssl_context_new(bool server);
-int ustream_ssl_context_set_crt_file(void *ctx, const char *file);
-int ustream_ssl_context_set_key_file(void *ctx, const char *file);
-void ustream_ssl_context_free(void *ctx);
+struct ustream_ssl_ops {
+       void *(*context_new)(bool server);
+       int (*context_set_crt_file)(void *ctx, const char *file);
+       int (*context_set_key_file)(void *ctx, const char *file);
+       void (*context_free)(void *ctx);
 
-int ustream_ssl_init(struct ustream_ssl *us, struct ustream *conn, void *ctx, bool server);
+       int (*init)(struct ustream_ssl *us, struct ustream *conn, void *ctx, bool server);
+};
+
+extern const struct ustream_ssl_ops ustream_ssl_ops;
+
+#define ustream_ssl_context_new                        ustream_ssl_ops.context_new
+#define ustream_ssl_context_set_crt_file       ustream_ssl_ops.context_set_crt_file
+#define ustream_ssl_context_set_key_file       ustream_ssl_ops.context_set_key_file
+#define ustream_ssl_context_free               ustream_ssl_ops.context_free
+#define ustream_ssl_init                       ustream_ssl_ops.init
 
 #endif