xref: /linux/net/ipv4/fib_lookup.h (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds #ifndef _FIB_LOOKUP_H
2*1da177e4SLinus Torvalds #define _FIB_LOOKUP_H
3*1da177e4SLinus Torvalds 
4*1da177e4SLinus Torvalds #include <linux/types.h>
5*1da177e4SLinus Torvalds #include <linux/list.h>
6*1da177e4SLinus Torvalds #include <net/ip_fib.h>
7*1da177e4SLinus Torvalds 
8*1da177e4SLinus Torvalds struct fib_alias {
9*1da177e4SLinus Torvalds 	struct list_head	fa_list;
10*1da177e4SLinus Torvalds 	struct fib_info		*fa_info;
11*1da177e4SLinus Torvalds 	u8			fa_tos;
12*1da177e4SLinus Torvalds 	u8			fa_type;
13*1da177e4SLinus Torvalds 	u8			fa_scope;
14*1da177e4SLinus Torvalds 	u8			fa_state;
15*1da177e4SLinus Torvalds };
16*1da177e4SLinus Torvalds 
17*1da177e4SLinus Torvalds #define FA_S_ACCESSED	0x01
18*1da177e4SLinus Torvalds 
19*1da177e4SLinus Torvalds /* Exported by fib_semantics.c */
20*1da177e4SLinus Torvalds extern int fib_semantic_match(struct list_head *head,
21*1da177e4SLinus Torvalds 			      const struct flowi *flp,
22*1da177e4SLinus Torvalds 			      struct fib_result *res, __u32 zone, __u32 mask,
23*1da177e4SLinus Torvalds 				int prefixlen);
24*1da177e4SLinus Torvalds extern void fib_release_info(struct fib_info *);
25*1da177e4SLinus Torvalds extern struct fib_info *fib_create_info(const struct rtmsg *r,
26*1da177e4SLinus Torvalds 					struct kern_rta *rta,
27*1da177e4SLinus Torvalds 					const struct nlmsghdr *,
28*1da177e4SLinus Torvalds 					int *err);
29*1da177e4SLinus Torvalds extern int fib_nh_match(struct rtmsg *r, struct nlmsghdr *,
30*1da177e4SLinus Torvalds 			struct kern_rta *rta, struct fib_info *fi);
31*1da177e4SLinus Torvalds extern int fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
32*1da177e4SLinus Torvalds 			 u8 tb_id, u8 type, u8 scope, void *dst,
33*1da177e4SLinus Torvalds 			 int dst_len, u8 tos, struct fib_info *fi);
34*1da177e4SLinus Torvalds extern void rtmsg_fib(int event, u32 key, struct fib_alias *fa,
35*1da177e4SLinus Torvalds 		      int z, int tb_id,
36*1da177e4SLinus Torvalds 		      struct nlmsghdr *n, struct netlink_skb_parms *req);
37*1da177e4SLinus Torvalds extern struct fib_alias *fib_find_alias(struct list_head *fah,
38*1da177e4SLinus Torvalds 					u8 tos, u32 prio);
39*1da177e4SLinus Torvalds extern int fib_detect_death(struct fib_info *fi, int order,
40*1da177e4SLinus Torvalds 			    struct fib_info **last_resort,
41*1da177e4SLinus Torvalds 			    int *last_idx, int *dflt);
42*1da177e4SLinus Torvalds 
43*1da177e4SLinus Torvalds #endif /* _FIB_LOOKUP_H */
44