aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/ip6_fib.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/ip6_fib.h')
-rw-r--r--include/net/ip6_fib.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 062a823d311c..477ef75f3873 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -13,14 +13,13 @@
13#ifndef _IP6_FIB_H 13#ifndef _IP6_FIB_H
14#define _IP6_FIB_H 14#define _IP6_FIB_H
15 15
16#ifdef __KERNEL__
17
18#include <linux/ipv6_route.h> 16#include <linux/ipv6_route.h>
19#include <linux/rtnetlink.h> 17#include <linux/rtnetlink.h>
20#include <linux/spinlock.h> 18#include <linux/spinlock.h>
21#include <net/dst.h> 19#include <net/dst.h>
22#include <net/flow.h> 20#include <net/flow.h>
23#include <net/netlink.h> 21#include <net/netlink.h>
22#include <net/inetpeer.h>
24 23
25#ifdef CONFIG_IPV6_MULTIPLE_TABLES 24#ifdef CONFIG_IPV6_MULTIPLE_TABLES
26#define FIB6_TABLE_HASHSZ 256 25#define FIB6_TABLE_HASHSZ 256
@@ -41,6 +40,7 @@ struct fib6_config {
41 40
42 struct in6_addr fc_dst; 41 struct in6_addr fc_dst;
43 struct in6_addr fc_src; 42 struct in6_addr fc_src;
43 struct in6_addr fc_prefsrc;
44 struct in6_addr fc_gateway; 44 struct in6_addr fc_gateway;
45 45
46 unsigned long fc_expires; 46 unsigned long fc_expires;
@@ -106,9 +106,12 @@ struct rt6_info {
106 struct rt6key rt6i_dst ____cacheline_aligned_in_smp; 106 struct rt6key rt6i_dst ____cacheline_aligned_in_smp;
107 u32 rt6i_flags; 107 u32 rt6i_flags;
108 struct rt6key rt6i_src; 108 struct rt6key rt6i_src;
109 struct rt6key rt6i_prefsrc;
109 u32 rt6i_metric; 110 u32 rt6i_metric;
111 u32 rt6i_peer_genid;
110 112
111 struct inet6_dev *rt6i_idev; 113 struct inet6_dev *rt6i_idev;
114 struct inet_peer *rt6i_peer;
112 115
113#ifdef CONFIG_XFRM 116#ifdef CONFIG_XFRM
114 u32 rt6i_flow_cache_genid; 117 u32 rt6i_flow_cache_genid;
@@ -180,7 +183,7 @@ struct fib6_table {
180 183
181typedef struct rt6_info *(*pol_lookup_t)(struct net *, 184typedef struct rt6_info *(*pol_lookup_t)(struct net *,
182 struct fib6_table *, 185 struct fib6_table *,
183 struct flowi *, int); 186 struct flowi6 *, int);
184 187
185/* 188/*
186 * exported functions 189 * exported functions
@@ -189,16 +192,16 @@ typedef struct rt6_info *(*pol_lookup_t)(struct net *,
189extern struct fib6_table *fib6_get_table(struct net *net, u32 id); 192extern struct fib6_table *fib6_get_table(struct net *net, u32 id);
190extern struct fib6_table *fib6_new_table(struct net *net, u32 id); 193extern struct fib6_table *fib6_new_table(struct net *net, u32 id);
191extern struct dst_entry *fib6_rule_lookup(struct net *net, 194extern struct dst_entry *fib6_rule_lookup(struct net *net,
192 struct flowi *fl, int flags, 195 struct flowi6 *fl6, int flags,
193 pol_lookup_t lookup); 196 pol_lookup_t lookup);
194 197
195extern struct fib6_node *fib6_lookup(struct fib6_node *root, 198extern struct fib6_node *fib6_lookup(struct fib6_node *root,
196 struct in6_addr *daddr, 199 const struct in6_addr *daddr,
197 struct in6_addr *saddr); 200 const struct in6_addr *saddr);
198 201
199struct fib6_node *fib6_locate(struct fib6_node *root, 202struct fib6_node *fib6_locate(struct fib6_node *root,
200 struct in6_addr *daddr, int dst_len, 203 const struct in6_addr *daddr, int dst_len,
201 struct in6_addr *saddr, int src_len); 204 const struct in6_addr *saddr, int src_len);
202 205
203extern void fib6_clean_all(struct net *net, 206extern void fib6_clean_all(struct net *net,
204 int (*func)(struct rt6_info *, void *arg), 207 int (*func)(struct rt6_info *, void *arg),
@@ -235,4 +238,3 @@ static inline void fib6_rules_cleanup(void)
235} 238}
236#endif 239#endif
237#endif 240#endif
238#endif