summaryrefslogtreecommitdiff
path: root/lib/radius/dict.c
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordberg.se>2014-02-05 11:10:02 +0100
committerLinus Nordberg <linus@nordberg.se>2014-02-05 11:10:02 +0100
commit3d954bfd2f658ac05a0f20a1241738ed3e3fdd28 (patch)
treed95b364fbab298c9b94c9c729afc98904c7c5bb0 /lib/radius/dict.c
parent67bdfa83f1879312fef0fbac769f6fb45df12d1a (diff)
Move lib to the root.
Diffstat (limited to 'lib/radius/dict.c')
-rw-r--r--lib/radius/dict.c172
1 files changed, 0 insertions, 172 deletions
diff --git a/lib/radius/dict.c b/lib/radius/dict.c
deleted file mode 100644
index fc04ee2..0000000
--- a/lib/radius/dict.c
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
-Copyright (c) 2011, Network RADIUS SARL
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the <organization> nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "client.h"
-#include <ctype.h>
-
-/** \file dict.c
- * \brief Functions for name to number, and number to name mappings.
- */
-
-const DICT_ATTR *nr_dict_attr_byvalue(unsigned int attr, unsigned int vendor)
-{
- int start, half, end;
-
- if (!vendor && (attr > 0) && (attr < 256)) {
- if (nr_dict_attrs[attr].name) {
- return &nr_dict_attrs[attr];
- }
- return NULL;
- }
-
- if (!vendor) return NULL; /* no "non-protocol" attributes */
-
- start = 256; /* first 256 entries are "standard" ones */
- end = nr_dict_num_attrs;
-
- do {
- half = (start + end) / 2;
-
- if ((nr_dict_attrs[half].vendor == vendor) &&
- (nr_dict_attrs[half].attr == attr)) {
- return &nr_dict_attrs[half];
- }
-
- if ((vendor >= nr_dict_attrs[half].vendor) &&
- (attr > nr_dict_attrs[half].attr)) {
- start = half + 1;
- } else {
- end = half - 1;
- }
-
- } while (start <= end);
-
- return NULL;
-}
-
-const DICT_ATTR *nr_dict_attr_byname(const char *name)
-{
- int start, half, end;
-
- start = 1;
- end = nr_dict_num_names;
-
- if (!name || !*name) return NULL;
-
- do {
- int rcode;
-
- half = (start + end) / 2;
-
- rcode = strcasecmp(name, nr_dict_attr_names[half]->name);
- if (rcode == 0) return nr_dict_attr_names[half];
-
- if (rcode > 0) {
- start = half + 1;
- } else {
- end = half - 1;
- }
-
-
- } while (start <= end);
-
- return NULL;
-}
-
-int nr_dict_attr_2struct(DICT_ATTR *da, unsigned int attr, unsigned int vendor,
- char *buffer, size_t bufsize)
-{
- if (!da || !buffer) return -RSE_INVAL;
-
- if (!vendor) {
- if (attr > 256) return -RSE_INVAL;
-
- } else if (vendor > (1 << 24)) {
- return -RSE_INVAL;
- }
-
- memset(da, 0, sizeof(*da));
- da->attr = attr;
- da->flags.unknown = 1;
- da->type = RS_TYPE_OCTETS;
- da->vendor = vendor;
-
- if (da->vendor) {
- snprintf(buffer, bufsize, "Attr-26.%u.%u",
- vendor, attr);
- } else {
- snprintf(buffer, bufsize, "Attr-%u", attr);
- }
- da->name = buffer;
-
- return 0;
-}
-
-
-const DICT_VALUE *nr_dict_value_byattr(UNUSED unsigned int attr,
- UNUSED unsigned int vendor,
- UNUSED int value)
-{
- return NULL;
-}
-
-const DICT_VALUE *nr_dict_value_byname(UNUSED unsigned int attr,
- UNUSED unsigned int vendor,
- UNUSED const char *name)
-{
- return NULL;
-}
-
-int nr_dict_vendor_byname(const char *name)
-{
- const DICT_VENDOR *dv;
-
- if (!name || !*name) return 0;
-
- /*
- * O(n) lookup.
- */
- for (dv = &nr_dict_vendors[0]; dv->name != NULL; dv++) {
- if (strcasecmp(dv->name, name) == 0) return dv->vendor;
- }
-
- return 0;
-}
-
-const DICT_VENDOR *nr_dict_vendor_byvalue(unsigned int vendor)
-{
- const DICT_VENDOR *dv;
-
- /*
- * O(n) lookup.
- */
- for (dv = &nr_dict_vendors[0]; dv->name != NULL; dv++) {
- if (dv->vendor == vendor) return dv;
- }
-
- return NULL;
-}