diff options
author | Martin Willi <martin@revosec.ch> | 2013-01-16 14:51:20 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2013-01-16 15:02:14 +0100 |
commit | bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506 (patch) | |
tree | 4d2a3973f7fa56c8e31c6d62f99de0c790785740 /src/libpttls | |
parent | 18d56a1891074bab808c2f752c74b816b8a4843e (diff) | |
download | strongswan-bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506.tar.bz2 strongswan-bb5037a5e5731f3cf5d4cc4e6f10ded8d4b09506.tar.xz |
Create pt_tls_dispatcher with separate server address and identity
Diffstat (limited to 'src/libpttls')
-rw-r--r-- | src/libpttls/pt_tls_dispatcher.c | 20 | ||||
-rw-r--r-- | src/libpttls/pt_tls_dispatcher.h | 10 |
2 files changed, 13 insertions, 17 deletions
diff --git a/src/libpttls/pt_tls_dispatcher.c b/src/libpttls/pt_tls_dispatcher.c index f89e1a5f2..adcf5b4bf 100644 --- a/src/libpttls/pt_tls_dispatcher.c +++ b/src/libpttls/pt_tls_dispatcher.c @@ -18,7 +18,6 @@ #include <threading/thread.h> #include <utils/debug.h> -#include <networking/host.h> #include <processing/jobs/callback_job.h> #include <errno.h> @@ -51,22 +50,14 @@ struct private_pt_tls_dispatcher_t { /** * Open listening server socket */ -static bool open_socket(private_pt_tls_dispatcher_t *this, - char *server, u_int16_t port) +static bool open_socket(private_pt_tls_dispatcher_t *this, host_t *host) { - host_t *host; - this->fd = socket(AF_INET, SOCK_STREAM, 0); if (this->fd == -1) { DBG1(DBG_TNC, "opening PT-TLS socket failed: %s", strerror(errno)); return FALSE; } - host = host_create_from_dns(server, AF_UNSPEC, port); - if (!host) - { - return FALSE; - } if (bind(this->fd, host->get_sockaddr(host), *host->get_sockaddr_len(host)) == -1) { @@ -160,7 +151,8 @@ METHOD(pt_tls_dispatcher_t, destroy, void, /** * See header */ -pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port) +pt_tls_dispatcher_t *pt_tls_dispatcher_create(host_t *address, + identification_t *id) { private_pt_tls_dispatcher_t *this; @@ -169,15 +161,17 @@ pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port) .dispatch = _dispatch, .destroy = _destroy, }, - .server = identification_create_from_string(server), + .server = id, .fd = -1, ); - if (!open_socket(this, server, port)) + if (!open_socket(this, address)) { + address->destroy(address); destroy(this); return NULL; } + address->destroy(address); return &this->public; } diff --git a/src/libpttls/pt_tls_dispatcher.h b/src/libpttls/pt_tls_dispatcher.h index c6f386470..463bd6cc8 100644 --- a/src/libpttls/pt_tls_dispatcher.h +++ b/src/libpttls/pt_tls_dispatcher.h @@ -21,7 +21,8 @@ #ifndef PT_TLS_DISPATCHER_H_ #define PT_TLS_DISPATCHER_H_ -#include <utils/utils.h> +#include <networking/host.h> +#include <utils/identification.h> typedef struct pt_tls_dispatcher_t pt_tls_dispatcher_t; @@ -46,10 +47,11 @@ struct pt_tls_dispatcher_t { /** * Create a pt_tls_dispatcher instance. * - * @param server server address - * @param port server port to listen + * @param address server address with port to listen on, gets owned + * @param id TLS server identity, gets owned * @return dispatcher service */ -pt_tls_dispatcher_t *pt_tls_dispatcher_create(char *server, u_int16_t port); +pt_tls_dispatcher_t *pt_tls_dispatcher_create(host_t *address, + identification_t *id); #endif /** PT_TLS_DISPATCHER_H_ @}*/ |