summaryrefslogtreecommitdiff
path: root/lib/err.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/err.c')
-rw-r--r--lib/err.c276
1 files changed, 0 insertions, 276 deletions
diff --git a/lib/err.c b/lib/err.c
deleted file mode 100644
index 0c7d5a8..0000000
--- a/lib/err.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/* Copyright 2010-2013 NORDUnet A/S. All rights reserved.
- See LICENSE for licensing information. */
-
-#if defined HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <assert.h>
-#include <radsec/radsec.h>
-#include <radsec/radsec-impl.h>
-
-static const char *_errtxt[] = {
- "SUCCESS", /* 0 RSE_OK */
- "out of memory", /* 1 RSE_NOMEM */
- "not yet implemented", /* 2 RSE_NOSYS */
- "invalid handle", /* 3 RSE_INVALID_CTX */
- "invalid connection", /* 4 RSE_INVALID_CONN */
- "connection type mismatch", /* 5 RSE_CONN_TYPE_MISMATCH */
- "FreeRadius error", /* 6 RSE_FR */
- "bad hostname or port", /* 7 RSE_BADADDR */
- "no peer configured", /* 8 RSE_NOPEER */
- "libevent error", /* 9 RSE_EVENT */
- "socket error", /* 10 RSE_SOCKERR */
- "invalid configuration file", /* 11 RSE_CONFIG */
- "authentication failed", /* 12 RSE_BADAUTH */
- "internal error", /* 13 RSE_INTERNAL */
- "SSL error", /* 14 RSE_SSLERR */
- "invalid packet", /* 15 RSE_INVALID_PKT */
- "connect timeout", /* 16 RSE_TIMEOUT_CONN */
- "invalid argument", /* 17 RSE_INVAL */
- "I/O timeout", /* 18 RSE_TIMEOUT_IO */
- "timeout", /* 19 RSE_TIMEOUT */
- "peer disconnected", /* 20 RSE_DISCO */
- "resource is in use", /* 21 RSE_INUSE */
- "packet is too small", /* 22 RSE_PACKET_TOO_SMALL */
- "packet is too large", /* 23 RSE_PACKET_TOO_LARGE */
- "attribute overflows packet", /* 24 RSE_ATTR_OVERFLOW */
- "attribute is too small", /* 25 RSE_ATTR_TOO_SMALL */
- "attribute is too large", /* 26 RSE_ATTR_TOO_LARGE */
- "unknown attribute", /* 27 RSE_ATTR_UNKNOWN */
- "invalid name for attribute", /* 28 RSE_ATTR_BAD_NAME */
- "invalid value for attribute", /* 29 RSE_ATTR_VALUE_MALFORMED */
- "invalid attribute", /* 30 RSE_ATTR_INVALID */
- "too many attributes in the packet", /* 31 RSE_TOO_MANY_ATTRS */
- "attribute type unknown", /* 32 RSE_ATTR_TYPE_UNKNOWN */
- "invalid message authenticator", /* 33 RSE_MSG_AUTH_LEN */
- "incorrect message authenticator", /* 34 RSE_MSG_AUTH_WRONG */
- "request is required", /* 35 RSE_REQUEST_REQUIRED */
- "invalid request code", /* 36 RSE_REQUEST_CODE_INVALID */
- "incorrect request authenticator", /* 37 RSE_AUTH_VECTOR_WRONG */
- "response code is unsupported", /* 38 RSE_INVALID_RESPONSE_CODE */
- "response ID is invalid", /* 39 RSE_INVALID_RESPONSE_ID */
- "response from the wrong source address", /* 40 RSE_INVALID_RESPONSE_SRC */
- "no packet data", /* 41 RSE_NO_PACKET_DATA */
- "vendor is unknown", /* 42 RSE_VENDOR_UNKNOWN */
- "invalid credentials", /* 43 RSE_CRED */
- "certificate validation error", /* 44 RSE_CERT */
-};
-#define ERRTXT_SIZE (sizeof(_errtxt) / sizeof(*_errtxt))
-
-static struct rs_error *
-_err_vcreate (unsigned int code, const char *file, int line, const char *fmt,
- va_list args)
-{
- struct rs_error *err = NULL;
-
- err = malloc (sizeof(struct rs_error));
- if (err)
- {
- int n;
- memset (err, 0, sizeof(struct rs_error));
- err->code = code;
- if (fmt)
- n = vsnprintf (err->buf, sizeof(err->buf), fmt, args);
- else
- {
- strncpy (err->buf,
- err->code < ERRTXT_SIZE ? _errtxt[err->code] : "",
- sizeof(err->buf));
- n = strlen (err->buf);
- }
- if (n >= 0 && file)
- {
- char *sep = strrchr (file, '/');
- if (sep)
- file = sep + 1;
- snprintf (err->buf + n, sizeof(err->buf) - n, " (%s:%d)", file,
- line);
- }
- }
- return err;
-}
-
-struct rs_error *
-err_create (unsigned int code,
- const char *file,
- int line,
- const char *fmt,
- ...)
-{
- struct rs_error *err = NULL;
-
- va_list args;
- va_start (args, fmt);
- err = _err_vcreate (code, file, line, fmt, args);
- va_end (args);
-
- return err;
-}
-
-static int
-_ctx_err_vpush_fl (struct rs_context *ctx, int code, const char *file,
- int line, const char *fmt, va_list args)
-{
- struct rs_error *err = _err_vcreate (code, file, line, fmt, args);
-
- if (!err)
- return RSE_NOMEM;
-
- /* TODO: Implement a stack. */
- if (ctx->err)
- rs_err_free (ctx->err);
- ctx->err = err;
-
- return err->code;
-}
-
-int
-rs_err_ctx_push (struct rs_context *ctx, int code, const char *fmt, ...)
-{
- int r = 0;
- va_list args;
-
- va_start (args, fmt);
- r = _ctx_err_vpush_fl (ctx, code, NULL, 0, fmt, args);
- va_end (args);
-
- return r;
-}
-
-int
-rs_err_ctx_push_fl (struct rs_context *ctx, int code, const char *file,
- int line, const char *fmt, ...)
-{
- int r = 0;
- va_list args;
-
- va_start (args, fmt);
- r = _ctx_err_vpush_fl (ctx, code, file, line, fmt, args);
- va_end (args);
-
- return r;
-}
-
-int
-err_conn_push_err (struct rs_connection *conn, struct rs_error *err)
-{
- assert (conn);
- assert (err);
-
- if (conn->err)
- rs_err_free (conn->err);
- conn->err = err; /* FIXME: use a stack */
-
- return err->code;
-}
-
-static int
-_conn_err_vpush_fl (struct rs_connection *conn, int code, const char *file,
- int line, const char *fmt, va_list args)
-{
- struct rs_error *err = _err_vcreate (code, file, line, fmt, args);
-
- if (!err)
- return RSE_NOMEM;
-
- return err_conn_push_err (conn, err);
-}
-
-int
-rs_err_conn_push (struct rs_connection *conn, int code, const char *fmt, ...)
-{
- int r = 0;
-
- va_list args;
- va_start (args, fmt);
- r = _conn_err_vpush_fl (conn, code, NULL, 0, fmt, args);
- va_end (args);
-
- return r;
-}
-
-int
-rs_err_conn_push_fl (struct rs_connection *conn, int code, const char *file,
- int line, const char *fmt, ...)
-{
- int r = 0;
-
- va_list args;
- va_start (args, fmt);
- r = _conn_err_vpush_fl (conn, code, file, line, fmt, args);
- va_end (args);
-
- return r;
-}
-
-struct rs_error *
-rs_err_ctx_pop (struct rs_context *ctx)
-{
- struct rs_error *err;
-
- if (!ctx)
- return NULL; /* FIXME: RSE_INVALID_CTX. */
- err = ctx->err;
- ctx->err = NULL;
-
- return err;
-}
-
-struct rs_error *
-rs_err_conn_pop (struct rs_connection *conn)
-{
- struct rs_error *err;
-
- if (!conn)
- return NULL; /* FIXME: RSE_INVALID_CONN */
- err = conn->err;
- conn->err = NULL;
-
- return err;
-}
-
-int
-rs_err_conn_peek_code (struct rs_connection *conn)
-{
- if (!conn)
- return -1; /* FIXME: RSE_INVALID_CONN */
- if (conn->err)
- return conn->err->code;
-
- return RSE_OK;
-}
-
-void
-rs_err_free (struct rs_error *err)
-{
- assert (err);
- free (err);
-}
-
-char *
-rs_err_msg (struct rs_error *err)
-{
- if (!err)
- return NULL;
-
- return err->buf;
-}
-
-int
-rs_err_code (struct rs_error *err, int dofree_flag)
-{
- int code;
-
- if (!err)
- return -1;
- code = err->code;
-
- if (dofree_flag)
- rs_err_free (err);
-
- return code;
-}