1178168Sqingli/* $KAME: radix_mpath.h,v 1.10 2004/11/06 15:44:28 itojun Exp $ */ 2178168Sqingli 3178168Sqingli/* 4178168Sqingli * Copyright (C) 2001 WIDE Project. 5178168Sqingli * All rights reserved. 6178168Sqingli * 7178168Sqingli * Redistribution and use in source and binary forms, with or without 8178168Sqingli * modification, are permitted provided that the following conditions 9178168Sqingli * are met: 10178168Sqingli * 1. Redistributions of source code must retain the above copyright 11178168Sqingli * notice, this list of conditions and the following disclaimer. 12178168Sqingli * 2. Redistributions in binary form must reproduce the above copyright 13178168Sqingli * notice, this list of conditions and the following disclaimer in the 14178168Sqingli * documentation and/or other materials provided with the distribution. 15178168Sqingli * 3. Neither the name of the project nor the names of its contributors 16178168Sqingli * may be used to endorse or promote products derived from this software 17178168Sqingli * without specific prior written permission. 18178168Sqingli * 19178168Sqingli * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND 20178168Sqingli * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21178168Sqingli * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22178168Sqingli * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE 23178168Sqingli * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24178168Sqingli * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25178168Sqingli * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26178168Sqingli * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27178168Sqingli * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28178168Sqingli * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29178168Sqingli * SUCH DAMAGE. 30178168Sqingli * THE AUTHORS DO NOT GUARANTEE THAT THIS SOFTWARE DOES NOT INFRINGE 31178168Sqingli * ANY OTHERS' INTELLECTUAL PROPERTIES. IN NO EVENT SHALL THE AUTHORS 32178168Sqingli * BE LIABLE FOR ANY INFRINGEMENT OF ANY OTHERS' INTELLECTUAL 33178168Sqingli * PROPERTIES. 34178168Sqingli */ 35178168Sqingli/* $FreeBSD$ */ 36178168Sqingli 37178168Sqingli#ifndef _NET_RADIX_MPATH_H_ 38178168Sqingli#define _NET_RADIX_MPATH_H_ 39178168Sqingli 40178168Sqingli#ifdef _KERNEL 41178168Sqingli/* 42178168Sqingli * Radix tree API with multipath support 43178168Sqingli */ 44178168Sqinglistruct route; 45178168Sqinglistruct rtentry; 46178168Sqinglistruct sockaddr; 47178168Sqingliint rn_mpath_capable(struct radix_node_head *); 48178168Sqinglistruct radix_node *rn_mpath_next(struct radix_node *); 49179426Sqingliu_int32_t rn_mpath_count(struct radix_node *); 50178168Sqinglistruct rtentry *rt_mpath_matchgate(struct rtentry *, struct sockaddr *); 51178168Sqingliint rt_mpath_conflict(struct radix_node_head *, struct rtentry *, 52178168Sqingli struct sockaddr *); 53179426Sqinglivoid rtalloc_mpath_fib(struct route *, u_int32_t, u_int); 54178888Sjulian#define rtalloc_mpath(_route, _hash) rtalloc_mpath_fib((_route), (_hash), 0) 55178168Sqinglistruct radix_node *rn_mpath_lookup(void *, void *, 56178168Sqingli struct radix_node_head *); 57178168Sqingliint rt_mpath_deldup(struct rtentry *, struct rtentry *); 58178168Sqingliint rn4_mpath_inithead(void **, int); 59178168Sqingliint rn6_mpath_inithead(void **, int); 60178168Sqingli 61178168Sqingli#endif 62178168Sqingli 63178168Sqingli#endif /* _NET_RADIX_MPATH_H_ */ 64