-I$(top_srcdir)/src/libhydra \
-I$(top_srcdir)/src/libcharon \
-I$(top_srcdir)/src/libtls \
+ -I$(top_srcdir)/src/libpttls \
-I$(top_srcdir)/src/libtncif \
-I$(top_srcdir)/src/libtnccs
plugin_LTLIBRARIES = libstrongswan-eap-tnc.la
libstrongswan_eap_tnc_la_LIBADD = \
$(top_builddir)/src/libtls/libtls.la \
+ $(top_builddir)/src/libpttls/libpttls.la \
$(top_builddir)/src/libtnccs/libtnccs.la
endif
METHOD(eap_method_t, destroy, void,
private_eap_tnc_t *this)
{
- chunk_t pdp_server;
+ char *pdp_server;
u_int16_t pdp_port;
+ host_t *host;
tls_t *tls;
+ tls = &this->tnccs->tls;
pdp_server = this->tnccs->get_pdp_server(this->tnccs, &pdp_port);
- if (pdp_server.len)
+ if (pdp_server)
{
- DBG2(DBG_TNC, "TODO: setup PT-TLS connection to %.*s:%u",
- pdp_server.len, pdp_server.ptr, pdp_port);
+ host = host_create_from_dns(pdp_server, AF_UNSPEC, pdp_port);
+ if (host)
+ {
+ DBG2(DBG_TNC, "TODO: setup PT-TLS connection to '%s' at %#H",
+ pdp_server, host);
+ host->destroy(host);
+ }
}
- tls = &this->tnccs->tls;
tls->destroy(tls);
this->tls_eap->destroy(this->tls_eap);
free(this);
this->auth_type = auth_type;
}
-METHOD(tnccs_t, get_pdp_server, chunk_t,
+METHOD(tnccs_t, get_pdp_server, char*,
private_tnccs_11_t *this, u_int16_t *port)
{
*port = 0;
- return chunk_empty;
+ return NULL;
}
METHOD(tnccs_t, get_ref, tnccs_t*,
/**
* PDP server FQDN
*/
- chunk_t pdp_server;
+ char *pdp_server;
/**
* PDP server port
{
pb_pdp_referral_msg_t *pdp_msg;
pen_type_t pdp_id_type;
+ chunk_t pdp_server;
u_int8_t pdp_protocol;
pdp_msg = (pb_pdp_referral_msg_t*)msg;
if (pdp_id_type.vendor_id == PEN_TCG &&
pdp_id_type.type == PB_PDP_ID_FQDN)
{
- this->pdp_server = chunk_clone(pdp_msg->get_fqdn(pdp_msg,
- &pdp_protocol, &this->pdp_port));
+ pdp_server = pdp_msg->get_fqdn(pdp_msg, &pdp_protocol,
+ &this->pdp_port);
if (pdp_protocol != 0)
{
DBG1(DBG_TNC, "unsupported PDP transport protocol");
break;
}
- DBG1(DBG_TNC, "PDP server '%.*s' is listening on port %u",
- this->pdp_server.len, this->pdp_server.ptr,
- this->pdp_port);
+ this->pdp_server = strndup(pdp_server.ptr, pdp_server.len);
+
+ DBG1(DBG_TNC, "PDP server '%s' is listening on port %u",
+ this->pdp_server, this->pdp_port);
}
break;
}
this->mutex->destroy(this->mutex);
this->messages->destroy_offset(this->messages,
offsetof(pb_tnc_msg_t, destroy));
- free(this->pdp_server.ptr);
+ free(this->pdp_server);
free(this);
}
}
this->auth_type = auth_type;
}
-METHOD(tnccs_t, get_pdp_server, chunk_t,
+METHOD(tnccs_t, get_pdp_server, char*,
private_tnccs_20_t *this, u_int16_t *port)
{
*port = this->pdp_port;
this->auth_type = auth_type;
}
-METHOD(tnccs_t, get_pdp_server, chunk_t,
+METHOD(tnccs_t, get_pdp_server, char*,
private_tnccs_dynamic_t *this, u_int16_t *port)
{
tnccs_t *tnccs = (tnccs_t*)this->tls;
* @param port PDP port number
* @return PDP server name
*/
- chunk_t (*get_pdp_server)(tnccs_t *this, u_int16_t *port);
+ char* (*get_pdp_server)(tnccs_t *this, u_int16_t *port);
/**
* Get a new reference to the TNCCS object.