struct fib6_node *parent;
struct fib6_node *left;
struct fib6_node *right;
-
+#ifdef CONFIG_IPV6_SUBTREES
struct fib6_node *subtree;
-
+#endif
struct rt6_info *leaf;
__u16 fn_bit; /* bit key */
__u16 fn_flags;
__u32 fn_sernum;
+ struct rt6_info *rr_ptr;
};
#ifndef CONFIG_IPV6_SUBTREES
{
union {
struct dst_entry dst;
- struct rt6_info *next;
} u;
struct inet6_dev *rt6i_idev;
u32 rt6i_flags;
u32 rt6i_metric;
atomic_t rt6i_ref;
+
+ /* more non-fragment space at head required */
+ unsigned short rt6i_nfheader_len;
+
+ u8 rt6i_protocol;
+
struct fib6_table *rt6i_table;
struct rt6key rt6i_dst;
- struct rt6key rt6i_src;
- u8 rt6i_protocol;
+#ifdef CONFIG_XFRM
+ u32 rt6i_flow_cache_genid;
+#endif
+
+ struct rt6key rt6i_src;
};
static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst)
*
*/
-#define RTPRI_FIREWALL 8 /* Firewall control information */
-#define RTPRI_FLOW 16 /* Flow based forwarding rules */
-#define RTPRI_KERN_CTL 32 /* Kernel control routes */
-
-#define RTPRI_USER_MIN 256 /* Mimimum user priority */
-#define RTPRI_USER_MAX 1024 /* Maximum user priority */
-
-#define RTPRI_KERN_DFLT 4096 /* Kernel default routes */
-
-#define MAX_FLOW_BACKTRACE 32
-
-
-typedef void (*f_pnode)(struct fib6_node *fn, void *);
struct fib6_table {
struct hlist_node tb6_hlist;
* exported functions
*/
-extern struct fib6_table * fib6_get_table(u32 id);
-extern struct fib6_table * fib6_new_table(u32 id);
-extern struct dst_entry * fib6_rule_lookup(struct flowi *fl, int flags,
- pol_lookup_t lookup);
+extern struct fib6_table *fib6_get_table(struct net *net, u32 id);
+extern struct fib6_table *fib6_new_table(struct net *net, u32 id);
+extern struct dst_entry *fib6_rule_lookup(struct net *net,
+ struct flowi *fl, int flags,
+ pol_lookup_t lookup);
extern struct fib6_node *fib6_lookup(struct fib6_node *root,
struct in6_addr *daddr,
extern void fib6_gc_cleanup(void);
-extern void fib6_init(void);
+extern int fib6_init(void);
-extern void fib6_rules_init(void);
+#ifdef CONFIG_IPV6_MULTIPLE_TABLES
+extern int fib6_rules_init(void);
extern void fib6_rules_cleanup(void);
-extern int fib6_rules_dump(struct sk_buff *,
- struct netlink_callback *);
-
+#else
+static inline int fib6_rules_init(void)
+{
+ return 0;
+}
+static inline void fib6_rules_cleanup(void)
+{
+ return ;
+}
+#endif
#endif
#endif