X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=lib%2Fradsec.c;h=efd2dc33617a5e4a7fd7976e41a11af8d0480958;hb=f0df8b47b0c7639ab3842c2b92c80f70b8ed66d3;hp=ae8eda6dce2b7ea20bcaa18b220fbb4527f701e3;hpb=a0ce75b4bacbc864070d085f9bd09a31f96d010f;p=libradsec.git diff --git a/lib/radsec.c b/lib/radsec.c index ae8eda6..efd2dc3 100644 --- a/lib/radsec.c +++ b/lib/radsec.c @@ -1,5 +1,5 @@ -/* Copyright 2010, 2011 NORDUnet A/S. All rights reserved. - See the file COPYING for licensing information. */ +/* Copyright 2010-2013 NORDUnet A/S. All rights reserved. + See LICENSE for licensing information. */ #if defined HAVE_CONFIG_H #include @@ -12,18 +12,18 @@ #include #include -#include +#include #include #include #include #include #include "err.h" #include "debug.h" -#include "rsp_debug.h" +#include "radsecproxy/debug.h" #if defined (RS_ENABLE_TLS) #include -#include "rsp_list.h" -#include "../radsecproxy.h" +#include "radsecproxy/list.h" +#include "radsecproxy/radsecproxy.h" #endif /* Public functions. */ @@ -39,14 +39,8 @@ rs_context_create (struct rs_context **ctx) #if defined (RS_ENABLE_TLS) ssl_init (); #endif -#if defined (DEBUG) - fr_log_fp = stderr; - fr_debug_flag = 1; -#endif - debug_init ("libradsec"); /* radsecproxy compat, FIXME: remove */ - fr_randinit (&h->fr_randctx, 0); - fr_rand_seed (NULL, 0); + debug_init ("libradsec"); /* radsecproxy compat, FIXME: remove */ if (ctx != NULL) *ctx = h; @@ -54,58 +48,17 @@ rs_context_create (struct rs_context **ctx) return RSE_OK; } -/** Initialize freeradius dictionary. */ -int -rs_context_init_freeradius_dict (struct rs_context *ctx, const char *dict) -{ - int r = RSE_OK; - size_t dictlen; - char *dir = NULL; - char *fn = NULL; - - if (dict == NULL) - if (ctx->config != NULL) - dict = ctx->config->dictionary; - - if (dict == NULL) - dict = RS_FREERADIUS_DICT; - - dictlen = strlen (dict); - dir = rs_calloc (ctx, 1, dictlen + 1); - fn = rs_calloc (ctx, 1, dictlen + 1); - if (dir == NULL || fn == NULL) - { - r = rs_err_ctx_push_fl (ctx, RSE_NOMEM, __FILE__, __LINE__, NULL); - goto out; - } - strncpy (dir, dict, dictlen); - strncpy (fn, dict, dictlen); - - if (dict_init (dirname (dir), basename (fn)) < 0) - { - r = rs_err_ctx_push_fl (ctx, RSE_FR, __FILE__, __LINE__, "dict_init"); - goto out; - } - - out: - if (dir) - rs_free (ctx, dir); - if (fn) - rs_free (ctx, fn); - return r; -} - -struct rs_error * /* FIXME: Return int as all the others? */ -rs_resolv (struct evutil_addrinfo **addr, - rs_conn_type_t type, - const char *hostname, - const char *service) +struct rs_error * +rs_resolve (struct evutil_addrinfo **addr, + rs_conn_type_t type, + const char *hostname, + const char *service) { int err; struct evutil_addrinfo hints, *res = NULL; memset (&hints, 0, sizeof(struct evutil_addrinfo)); - hints.ai_family = AF_INET; /* IPv4 only. TODO: Set AF_UNSPEC. */ + hints.ai_family = AF_UNSPEC; hints.ai_flags = AI_ADDRCONFIG; switch (type) { @@ -149,12 +102,16 @@ rs_context_destroy (struct rs_context *ctx) for (p = r->peers; p; ) { struct rs_peer *tmp = p; - if (p->addr) - evutil_freeaddrinfo (p->addr); + if (p->addr_cache) + { + evutil_freeaddrinfo (p->addr_cache); + p->addr_cache = NULL; + } p = p->next; rs_free (ctx, tmp); } free (r->name); + rs_free (ctx, r->transport_cred); r = r->next; rs_free (ctx, tmp); }