mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-06 00:00:47 -04:00
Moved configuration from resolver manager to unbound plugin
Also streamlined log messages in unbound plugin.
This commit is contained in:
parent
95650c0836
commit
f2145c8d3a
@ -779,6 +779,12 @@ File to read random bytes from, instead of @DEV_RANDOM@
|
|||||||
.TP
|
.TP
|
||||||
.BR libstrongswan.plugins.random.urandom " [@DEV_URANDOM@]"
|
.BR libstrongswan.plugins.random.urandom " [@DEV_URANDOM@]"
|
||||||
File to read pseudo random bytes from, instead of @DEV_URANDOM@
|
File to read pseudo random bytes from, instead of @DEV_URANDOM@
|
||||||
|
.TP
|
||||||
|
.BR libstrongswan.plugins.unbound.resolv_conf " [/etc/resolv.conf]"
|
||||||
|
File to read DNS resolver configuration from
|
||||||
|
.TP
|
||||||
|
.BR libstrongswan.plugins.unbound.trust_anchors " [/etc/ipsec.d/dnssec.keys]"
|
||||||
|
File to read DNSSEC trust anchors from (usually root zone KSK)
|
||||||
.SS libtnccs section
|
.SS libtnccs section
|
||||||
.TP
|
.TP
|
||||||
.BR libtnccs.tnc_config " [/etc/tnc_config]"
|
.BR libtnccs.tnc_config " [/etc/tnc_config]"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/src/libstrongswan
|
INCLUDES = -I$(top_srcdir)/src/libstrongswan
|
||||||
|
|
||||||
AM_CFLAGS = -rdynamic
|
AM_CFLAGS = -rdynamic -DIPSEC_CONFDIR=\"${sysconfdir}\"
|
||||||
|
|
||||||
|
|
||||||
if MONOLITHIC
|
if MONOLITHIC
|
||||||
noinst_LTLIBRARIES = libstrongswan-unbound.la
|
noinst_LTLIBRARIES = libstrongswan-unbound.la
|
||||||
|
@ -24,6 +24,10 @@
|
|||||||
#include "unbound_resolver.h"
|
#include "unbound_resolver.h"
|
||||||
#include "unbound_response.h"
|
#include "unbound_response.h"
|
||||||
|
|
||||||
|
/* DNS resolver configuration and DNSSEC trust anchors */
|
||||||
|
#define RESOLV_CONF_FILE "/etc/resolv.conf"
|
||||||
|
#define TRUST_ANCHOR_FILE IPSEC_CONFDIR "/ipsec.d/dnssec.keys"
|
||||||
|
|
||||||
typedef struct private_resolver_t private_resolver_t;
|
typedef struct private_resolver_t private_resolver_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,11 +68,12 @@ METHOD(resolver_t, query, resolver_response_t*,
|
|||||||
response = unbound_response_create_frm_libub_response(result);
|
response = unbound_response_create_frm_libub_response(result);
|
||||||
if (!response)
|
if (!response)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "unbound_resolver: Could not create response.");
|
DBG1(DBG_LIB, "unbound resolver failed to create response");
|
||||||
ub_resolve_free(result);
|
ub_resolve_free(result);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ub_resolve_free(result);
|
ub_resolve_free(result);
|
||||||
|
|
||||||
return (resolver_response_t*)response;
|
return (resolver_response_t*)response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,10 +90,20 @@ METHOD(resolver_t, destroy, void,
|
|||||||
/*
|
/*
|
||||||
* Described in header.
|
* Described in header.
|
||||||
*/
|
*/
|
||||||
resolver_t *unbound_resolver_create(char *resolv_conf, char *ta_file)
|
resolver_t *unbound_resolver_create(void)
|
||||||
{
|
{
|
||||||
private_resolver_t *this;
|
private_resolver_t *this;
|
||||||
int ub_retval = 0;
|
int ub_retval = 0;
|
||||||
|
char *resolv_conf_file;
|
||||||
|
char *trust_anchor_file;
|
||||||
|
|
||||||
|
resolv_conf_file = lib->settings->get_str(lib->settings,
|
||||||
|
"libstrongswan.plugins.unbound.resolv_conf",
|
||||||
|
RESOLV_CONF_FILE);
|
||||||
|
|
||||||
|
trust_anchor_file = lib->settings->get_str(lib->settings,
|
||||||
|
"libstrongswan.plugins.unbound.trust_anchors",
|
||||||
|
TRUST_ANCHOR_FILE);
|
||||||
|
|
||||||
INIT(this,
|
INIT(this,
|
||||||
.public = {
|
.public = {
|
||||||
@ -97,35 +112,32 @@ resolver_t *unbound_resolver_create(char *resolv_conf, char *ta_file)
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
DBG1(DBG_LIB, "creating an unbound_resolver instance");
|
|
||||||
|
|
||||||
this->ctx = ub_ctx_create();
|
this->ctx = ub_ctx_create();
|
||||||
if (!this->ctx)
|
if (!this->ctx)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "failed to create an unbound resolver context");
|
DBG1(DBG_LIB, "failed to create unbound resolver context");
|
||||||
_destroy(this);
|
destroy(this);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ub_retval = ub_ctx_resolvconf(this->ctx, resolv_conf);
|
DBG1(DBG_CFG, "loading unbound resolver config from '%s'", resolv_conf_file);
|
||||||
|
ub_retval = ub_ctx_resolvconf(this->ctx, resolv_conf_file);
|
||||||
if (ub_retval)
|
if (ub_retval)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "failed to read the resolver configuration file. "
|
DBG1(DBG_CFG, "failed to read the resolver config: %s (%s)",
|
||||||
"Unbound error: %s. errno says: %s", ub_strerror(ub_retval),
|
ub_strerror(ub_retval), strerror(errno));
|
||||||
strerror(errno));
|
destroy(this);
|
||||||
_destroy(this);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ub_retval = ub_ctx_add_ta_file(this->ctx, ta_file);
|
DBG1(DBG_CFG, "loading unbound trust anchors from '%s'", trust_anchor_file);
|
||||||
|
ub_retval = ub_ctx_add_ta_file(this->ctx, trust_anchor_file);
|
||||||
if (ub_retval)
|
if (ub_retval)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "failed to load trusted anchors from file %s. "
|
DBG1(DBG_CFG, "failed to load trust anchors: %s (%s)",
|
||||||
"Unbound error: %s. errno says: %s",
|
ub_strerror(ub_retval), strerror(errno));
|
||||||
ta_file, ub_strerror(ub_retval), strerror(errno));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DBG1(DBG_LIB, "unbound resolver instance created");
|
|
||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,6 +24,6 @@
|
|||||||
/**
|
/**
|
||||||
* Create a resolver_t instance.
|
* Create a resolver_t instance.
|
||||||
*/
|
*/
|
||||||
resolver_t *unbound_resolver_create(char *resolv_conf, char *ta_file);
|
resolver_t *unbound_resolver_create(void);
|
||||||
|
|
||||||
#endif /** LIBunbound_RESOLVER_H_ @}*/
|
#endif /** LIBunbound_RESOLVER_H_ @}*/
|
||||||
|
@ -179,9 +179,8 @@ unbound_response_t *unbound_response_create_frm_libub_response(
|
|||||||
|
|
||||||
if (status != LDNS_STATUS_OK)
|
if (status != LDNS_STATUS_OK)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "failed to create an unbound_response. "
|
DBG1(DBG_LIB, "failed to parse DNS packet");
|
||||||
"Parsing of DNS packet failed.");
|
destroy(this);
|
||||||
_destroy(this);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,7 +209,7 @@ unbound_response_t *unbound_response_create_frm_libub_response(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "unbound_response: RR creation failed.");
|
DBG1(DBG_LIB, "failed to create RR");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,8 +218,7 @@ unbound_response_t *unbound_response_create_frm_libub_response(
|
|||||||
orig_rdf = ldns_rr_rrsig_typecovered(orig_rr);
|
orig_rdf = ldns_rr_rrsig_typecovered(orig_rr);
|
||||||
if (!orig_rdf)
|
if (!orig_rdf)
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "failed to get the type which is covered by "
|
DBG1(DBG_LIB, "failed to get the type covered by an RRSIG");
|
||||||
"a RRSIG");
|
|
||||||
}
|
}
|
||||||
else if (ldns_rdf2native_int16(orig_rdf) == libub_response->qtype)
|
else if (ldns_rdf2native_int16(orig_rdf) == libub_response->qtype)
|
||||||
{
|
{
|
||||||
@ -239,15 +237,13 @@ unbound_response_t *unbound_response_create_frm_libub_response(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "unbound_response: RRSIG creation "
|
DBG1(DBG_LIB, "failed to create RRSIG");
|
||||||
"failed.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DBG1(DBG_LIB, "Warning: Could not determine the type of "
|
DBG1(DBG_LIB, "failed to determine the RR type "
|
||||||
"Resource Records which is covered "
|
"covered by RRSIG RR");
|
||||||
"by a RRSIG RR");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,16 +24,9 @@
|
|||||||
typedef struct resolver_t resolver_t;
|
typedef struct resolver_t resolver_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor function which creates resolver instances.
|
* Constructor function which creates DNS resolver instances.
|
||||||
*
|
|
||||||
* Creates a new DNS resolver with settings from the file resolv_conf and
|
|
||||||
* keys from the file ta_file as DNSSEC trust anchor.
|
|
||||||
*
|
|
||||||
* @param resolv_conf path to the file resolv.conf
|
|
||||||
* @param ta_file path to a file with the DNSSEC trust anchors
|
|
||||||
* @return resolver instance
|
|
||||||
*/
|
*/
|
||||||
typedef resolver_t* (*resolver_constructor_t)(char *resolv_conf, char *ta_file);
|
typedef resolver_t* (*resolver_constructor_t)(void);
|
||||||
|
|
||||||
#include <resolver/resolver_response.h>
|
#include <resolver/resolver_response.h>
|
||||||
#include <resolver/rr_set.h>
|
#include <resolver/rr_set.h>
|
||||||
|
@ -56,20 +56,7 @@ METHOD(resolver_manager_t, remove_resolver, void,
|
|||||||
METHOD(resolver_manager_t, create, resolver_t*,
|
METHOD(resolver_manager_t, create, resolver_t*,
|
||||||
private_resolver_manager_t *this)
|
private_resolver_manager_t *this)
|
||||||
{
|
{
|
||||||
char *resolv_conf;
|
return this->constructor();
|
||||||
char *trust_anchor_file;
|
|
||||||
|
|
||||||
resolv_conf = lib->settings->get_str(lib->settings,
|
|
||||||
"libstrongswan.plugins.resolver."
|
|
||||||
"resolv_conf",
|
|
||||||
"/etc/resolv.conf");
|
|
||||||
|
|
||||||
trust_anchor_file = lib->settings->get_str(lib->settings,
|
|
||||||
"libstrongswan.plugins.resolver."
|
|
||||||
"trust_anchor",
|
|
||||||
"/etc/trust.anchors");
|
|
||||||
|
|
||||||
return this->constructor(resolv_conf, trust_anchor_file);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(resolver_manager_t, destroy, void,
|
METHOD(resolver_manager_t, destroy, void,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user