From: Martin Willi Date: Thu, 14 Feb 2013 13:48:54 +0000 (+0100) Subject: PT-TLS dispatcher TNCCS constructor takes peer identities to pass to factory X-Git-Tag: 5.0.3dr2~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9df87bf8992005eedc8a1f50f8636c5b2240387;p=thirdparty%2Fstrongswan.git PT-TLS dispatcher TNCCS constructor takes peer identities to pass to factory --- diff --git a/src/libpttls/pt_tls_dispatcher.c b/src/libpttls/pt_tls_dispatcher.c index fab44596c6..813580cd07 100644 --- a/src/libpttls/pt_tls_dispatcher.c +++ b/src/libpttls/pt_tls_dispatcher.c @@ -46,10 +46,15 @@ struct private_pt_tls_dispatcher_t { */ identification_t *server; + /** + * Peer identity + */ + identification_t *peer; + /** * TNCCS protocol handler constructor */ - tnccs_t*(*create)(); + pt_tls_tnccs_constructor_t *create; }; /** @@ -111,7 +116,8 @@ static void cleanup(pt_tls_server_t *connection) } METHOD(pt_tls_dispatcher_t, dispatch, void, - private_pt_tls_dispatcher_t *this, tnccs_t*(*create)()) + private_pt_tls_dispatcher_t *this, + pt_tls_tnccs_constructor_t *create) { while (TRUE) { @@ -129,7 +135,7 @@ METHOD(pt_tls_dispatcher_t, dispatch, void, continue; } - tnccs = create(); + tnccs = create(this->server, this->peer); if (!tnccs) { close(fd); @@ -157,6 +163,7 @@ METHOD(pt_tls_dispatcher_t, destroy, void, close(this->fd); } this->server->destroy(this->server); + this->peer->destroy(this->peer); free(this); } @@ -174,6 +181,8 @@ pt_tls_dispatcher_t *pt_tls_dispatcher_create(host_t *address, .destroy = _destroy, }, .server = id, + /* we currently don't authenticate the peer, use %any identity */ + .peer = identification_create_from_encoding(ID_ANY, chunk_empty), .fd = -1, ); diff --git a/src/libpttls/pt_tls_dispatcher.h b/src/libpttls/pt_tls_dispatcher.h index 5d01f7fef6..3c6560baa4 100644 --- a/src/libpttls/pt_tls_dispatcher.h +++ b/src/libpttls/pt_tls_dispatcher.h @@ -28,6 +28,15 @@ typedef struct pt_tls_dispatcher_t pt_tls_dispatcher_t; +/** + * Constructor callback to create TNCCS to use within PT-TLS. + * + * @param server server identity + * @param peer peer identity + */ +typedef tnccs_t* (pt_tls_tnccs_constructor_t)(identification_t *server, + identification_t *peer); + /** * PT-TLS dispatcher service, handles PT-TLS connections as a server. */ @@ -41,7 +50,8 @@ struct pt_tls_dispatcher_t { * * @param create TNCCS constructor function to use */ - void (*dispatch)(pt_tls_dispatcher_t *this, tnccs_t*(*create)()); + void (*dispatch)(pt_tls_dispatcher_t *this, + pt_tls_tnccs_constructor_t *create); /** * Destroy a pt_tls_dispatcher_t.