summaryrefslogtreecommitdiff
path: root/lib/radius/parse.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/parse.c
parent67bdfa83f1879312fef0fbac769f6fb45df12d1a (diff)
Move lib to the root.
Diffstat (limited to 'lib/radius/parse.c')
-rw-r--r--lib/radius/parse.c149
1 files changed, 0 insertions, 149 deletions
diff --git a/lib/radius/parse.c b/lib/radius/parse.c
deleted file mode 100644
index 8446306..0000000
--- a/lib/radius/parse.c
+++ /dev/null
@@ -1,149 +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.
- */
-
-/** \file parse.c
- * \brief Routines to parse strings into internal data structures
- */
-
-#include "client.h"
-
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
-ssize_t nr_vp_sscanf_value(VALUE_PAIR *vp, const char *value)
-{
- char *end;
-
- switch (vp->da->type) {
- case RS_TYPE_STRING: {
- size_t len = strlen(value);
-
- if (len >= RS_MAX_STRING_LEN)
- return -RSE_ATTR_TOO_LARGE;
-
- memcpy(vp->vp_strvalue, value, len + 1);
- return (vp->length = len);
- }
- case RS_TYPE_DATE:
- case RS_TYPE_INTEGER:
- vp->vp_integer = strtoul(value, &end, 10);
- if ((value == end) || (*end != '\0')) {
- nr_debug_error("Invalid value");
- return -RSE_ATTR_VALUE_MALFORMED;
- }
- return (end - value);
-
- case RS_TYPE_IPADDR:
- if (inet_pton(AF_INET, value, &vp->vp_ipaddr) < 0) {
- return -RSE_NOSYS;
- }
- return strlen(value);
-
-#ifdef RS_TYPE_IPV6ADDR
- case RS_TYPE_IPV6ADDR:
- if (inet_pton(AF_INET6, value, &vp-vp>ipv6addr) < 0) {
- return -RSE_NOSYS;
- }
- return strlen(value);
-#endif
-
-#ifdef RS_TYPE_IFID
- case RS_TYPE_IFID:
- {
- int i, array[8];
-
- if (sscanf(value, "%02x%02x%02x%02x%02x%02x%02x%02x",
- &array[0], &array[1], &array[2], &array[3],
- &array[4], &array[5], &array[6], &array[7]) != 8) {
- return -RSE_SYSTEM;
- }
-
- for (i = 0; i < 8; i++) vp->vp_ifid[i] = array[i] & 0xff;
-
- }
- break;
-#endif
-
- default:
- nr_debug_error("Invalid type");
- return -RSE_ATTR_TYPE_UNKNOWN;
- }
-
- return 0;
-}
-
-int nr_vp_sscanf(const char *string, VALUE_PAIR **pvp)
-{
- int rcode;
- const char *p;
- char *q;
- const DICT_ATTR *da;
- VALUE_PAIR *vp;
- char buffer[256];
-
- if (!string || !pvp) return -RSE_INVAL;
-
- p = string;
- q = buffer;
- while (*p && (*p != ' ') && (*p != '=')) {
- *(q++) = *(p++);
- }
- *q = '\0';
-
- if (q == buffer) {
- nr_debug_error("No Attribute name");
- return -RSE_ATTR_BAD_NAME;
- }
-
- da = nr_dict_attr_byname(buffer);
- if (!da) {
- nr_debug_error("Unknown attribute \"%s\"", buffer);
- return -RSE_ATTR_UNKNOWN;
- }
-
- while (*p == ' ') p++;
- if (*p != '=') {
- nr_debug_error("Unexpected text after attribute name");
- return -RSE_ATTR_BAD_NAME;
- }
-
- p++;
- while (*p == ' ') p++;
-
- vp = nr_vp_alloc(da);
- if (!vp) return -RSE_NOMEM;
-
- rcode = nr_vp_sscanf_value(vp, p);
- if (rcode < 0) {
- nr_vp_free(&vp);
- return rcode;
- }
-
- *pvp = vp;
- return 0;
-}