/*
* Copyright (c) 2003 Research Engineering Development, Inc.
* Author: Alfred Perlstein <alfred@FreeBSD.org>
* 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.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 THE AUTHOR OR CONTRIBUTORS 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.
*
* $Id: mtrie.h,v 1.3 2003/05/07 05:01:37 bright Exp $
*
*/
#ifndef _MTRIE_H_
#define _MTRIE_H_
struct mtrie;
typedef struct mtrie * mtrie_t;
/* allocate an mtrie. flags should be 0 for now. */
int mtrie_alloc(mtrie_t *, int);
/* free an mtrie */
void mtrie_free(mtrie_t);
/*
* insert an entry into the mtrie, args should be:
* the mtrie, ip (in network byte order), netmask (8, 16, 24), data.
* NB: data can not be NULL.
* returns 0 on success, and -1 on failure. failure will likely
* be from inability to allocate more memory.
*/
int mtrie_insert(mtrie_t, uint32_t, uint8_t, void *);
/*
* Lookup an ip in the mtrie, args should be:
* the mtrie, ip (in network byte order), pointer to data pointer.
* returns 0 on success and sets data pointer to value.
* returns -1 on failure and sets data pointer to NULL.
*/
int mtrie_lookup(mtrie_t, uint32_t, void **);
#endif /* _MTRIE_H_ */
syntax highlighted by Code2HTML, v. 0.9.1