summaryrefslogtreecommitdiff
path: root/sbin/photurisd/attributes.c
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/photurisd/attributes.c')
-rw-r--r--sbin/photurisd/attributes.c259
1 files changed, 0 insertions, 259 deletions
diff --git a/sbin/photurisd/attributes.c b/sbin/photurisd/attributes.c
deleted file mode 100644
index 1a59b9ab4a1..00000000000
--- a/sbin/photurisd/attributes.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/* $OpenBSD: attributes.c,v 1.4 2002/06/09 08:13:08 todd Exp $ */
-
-/*
- * Copyright 1997-2000 Niels Provos <provos@citi.umich.edu>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Niels Provos.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.
- */
-/*
- * attributes.c:
- * functions for handling attributess
- */
-
-#ifndef lint
-static char rcsid[] = "$OpenBSD: attributes.c,v 1.4 2002/06/09 08:13:08 todd Exp $";
-#endif
-
-#define _ATTRIBUTES_C_
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include "config.h"
-#include "attributes.h"
-
-static attribute_list *attribob = NULL;
-static attrib_t *attribhash[ATTRIBHASHMOD];
-
-/* Put or get attribute properties from the hashtable */
-
-void
-putattrib(attrib_t *attrib)
-{
- int hashval = attrib->id % ATTRIBHASHMOD;
- attrib->next = attribhash[hashval];
- attribhash[hashval] = attrib;
-}
-
-attrib_t *
-getattrib(u_int8_t id)
-{
- u_int8_t hashval = id % ATTRIBHASHMOD;
- attrib_t *attrib;
-
- for(attrib=attribhash[hashval]; attrib; attrib = attrib->next)
- if (attrib->id == id)
- break;
-
- return attrib;
-}
-
-void
-clearattrib(void)
-{
- int i;
- attrib_t *attrib;
-
- for (i=0; i<ATTRIBHASHMOD; i++)
- while ((attrib=attribhash[i]) != NULL) {
- attribhash[i] = attrib->next;
- free(attrib);
- }
-}
-
-int
-isinattrib(u_int8_t *attributes, u_int16_t attribsize, u_int8_t attribute)
-{
- while(attribsize>0) {
- if(*attributes==attribute)
- return 1;
- if(attribsize - (*(attributes+1)+2) > attribsize)
- return 0;
-
- attribsize -= *(attributes+1)+2;
- attributes += *(attributes+1)+2;
- }
- return 0;
-}
-
-void
-get_attrib_section(u_int8_t *set, u_int16_t setsize,
- u_int8_t **subset, u_int16_t *subsetsize,
- u_int8_t section)
-{
- int i = 0;
- u_int8_t *tset;
- u_int16_t tsetsize;
-
- while (i < setsize) {
- if (set[i] == section)
- break;
- i += set[i+1] + 2;
- }
-
- if ((i >= setsize) || (i+set[i+1] + 2 > setsize)) {
- *subset = NULL;
- *subsetsize = 0;
- return;
- }
-
- tset = *subset = set+i+set[i+1]+2;
- tsetsize = *subsetsize = setsize - i - set[i+1] - 2;
-
- i = 0;
- while (i < tsetsize) {
- if (tset[i] == AT_ESP_ATTRIB || tset[i] == AT_AH_ATTRIB) {
- *subsetsize = i;
- return;
- }
- i += tset[i+1]+2;
- }
-}
-
-
-int
-isattribsubset(u_int8_t *set, u_int16_t setsize,
- u_int8_t *subset, u_int16_t subsetsize)
-{
- while(subsetsize>0) {
- if (!isinattrib(set, setsize, *subset))
- return 0;
- if (subsetsize - (*(subset+1)+2) > subsetsize)
- return 0;
- subsetsize -= *(subset+1)+2;
- subset += *(subset+1)+2;
- }
- return 1;
-}
-
-int
-attrib_insert(attribute_list *ob)
-{
- attribute_list *tmp;
-
- ob->next = NULL;
-
- if(attribob == NULL) {
- attribob = ob;
- return 1;
- }
-
- tmp=attribob;
- while(tmp->next!=NULL)
- tmp = tmp->next;
-
- tmp->next = ob;
- return 1;
-}
-
-int
-attrib_unlink(attribute_list *ob)
-{
- attribute_list *tmp;
- if(attribob == ob) {
- attribob = ob->next;
- free(ob);
- return 1;
- }
-
- for(tmp=attribob; tmp!=NULL; tmp=tmp->next) {
- if(tmp->next==ob) {
- tmp->next=ob->next;
- free(ob);
- return 1;
- }
- }
- return 0;
-}
-
-attribute_list *
-attrib_new(void)
-{
- attribute_list *p;
-
- if((p = calloc(1, sizeof(attribute_list)))==NULL)
- return NULL;
-
- return p;
-}
-
-int
-attrib_value_reset(attribute_list *ob)
-{
- if (ob->address != NULL)
- free(ob->address);
- if (ob->attributes != NULL)
- free(ob->attributes);
-
- bzero(ob, sizeof(attribute_list));
- return 1;
-}
-
-/*
- * find the attributes to the address or 0 address.
- * if passed a null pointer as first argument we return our default
- * list.
- */
-
-attribute_list *
-attrib_find(char *address)
-{
- attribute_list *tmp = attribob;
- attribute_list *null = NULL;
- while(tmp!=NULL) {
- if (tmp->address == NULL) {
- null = tmp;
- if (address == NULL)
- break;
- }
- else if (address != NULL &&
- (tmp->netmask & inet_addr(address)) ==
- inet_addr(tmp->address))
- return tmp;
-
- tmp = tmp->next;
- }
- return null;
-}
-
-void
-attrib_cleanup()
-{
- attribute_list *p;
- attribute_list *tmp = attribob;
- while(tmp!=NULL) {
- p = tmp;
- tmp = tmp->next;
- attrib_value_reset(p);
- free(p);
- }
- attribob = NULL;
-}
-