2005-04-16 15:20:36 -07:00
# ifndef _FIB_LOOKUP_H
# define _FIB_LOOKUP_H
# include <linux/types.h>
# include <linux/list.h>
# include <net/ip_fib.h>
struct fib_alias {
struct list_head fa_list ;
struct fib_info * fa_info ;
u8 fa_tos ;
u8 fa_type ;
u8 fa_state ;
2008-01-18 03:33:26 -08:00
struct rcu_head rcu ;
2005-04-16 15:20:36 -07:00
} ;
# define FA_S_ACCESSED 0x01
2010-10-20 22:03:38 +00:00
/* Dont write on fa_state unless needed, to keep it shared on all cpus */
static inline void fib_alias_accessed ( struct fib_alias * fa )
{
if ( ! ( fa - > fa_state & FA_S_ACCESSED ) )
fa - > fa_state | = FA_S_ACCESSED ;
}
2005-04-16 15:20:36 -07:00
/* Exported by fib_semantics.c */
extern void fib_release_info ( struct fib_info * ) ;
2006-08-17 18:14:52 -07:00
extern struct fib_info * fib_create_info ( struct fib_config * cfg ) ;
extern int fib_nh_match ( struct fib_config * cfg , struct fib_info * fi ) ;
2005-04-16 15:20:36 -07:00
extern int fib_dump_info ( struct sk_buff * skb , u32 pid , u32 seq , int event ,
2011-03-24 18:06:47 -07:00
u32 tb_id , u8 type , __be32 dst ,
2005-06-18 22:54:12 -07:00
int dst_len , u8 tos , struct fib_info * fi ,
unsigned int ) ;
2006-09-27 18:40:00 -07:00
extern void rtmsg_fib ( int event , __be32 key , struct fib_alias * fa ,
2007-05-23 14:55:06 -07:00
int dst_len , u32 tb_id , struct nl_info * info ,
unsigned int nlm_flags ) ;
2005-04-16 15:20:36 -07:00
extern struct fib_alias * fib_find_alias ( struct list_head * fah ,
u8 tos , u32 prio ) ;
extern int fib_detect_death ( struct fib_info * fi , int order ,
struct fib_info * * last_resort ,
2007-12-08 00:22:13 -08:00
int * last_idx , int dflt ) ;
2005-04-16 15:20:36 -07:00
2007-12-08 00:31:44 -08:00
static inline void fib_result_assign ( struct fib_result * res ,
struct fib_info * fi )
{
2010-11-04 01:21:39 +00:00
/* we used to play games with refcounts, but we now use RCU */
2007-12-08 00:31:44 -08:00
res - > fi = fi ;
}
2011-03-07 15:01:10 -08:00
struct fib_prop {
int error ;
u8 scope ;
} ;
extern const struct fib_prop fib_props [ RTN_MAX + 1 ] ;
2005-04-16 15:20:36 -07:00
# endif /* _FIB_LOOKUP_H */