net: compat_mmsghdr must be used in sys_recvmmsg
[safe/jmp/linux-2.6] / net / ipv4 / fib_lookup.h
index 6c9dd42..637b133 100644 (file)
@@ -7,12 +7,14 @@
 
 struct fib_alias {
        struct list_head        fa_list;
-       struct rcu_head rcu;
        struct fib_info         *fa_info;
        u8                      fa_tos;
        u8                      fa_type;
        u8                      fa_scope;
        u8                      fa_state;
+#ifdef CONFIG_IP_FIB_TRIE
+       struct rcu_head         rcu;
+#endif
 };
 
 #define FA_S_ACCESSED  0x01
@@ -20,8 +22,7 @@ struct fib_alias {
 /* Exported by fib_semantics.c */
 extern int fib_semantic_match(struct list_head *head,
                              const struct flowi *flp,
-                             struct fib_result *res, __be32 zone, __be32 mask,
-                               int prefixlen);
+                             struct fib_result *res, int prefixlen);
 extern void fib_release_info(struct fib_info *);
 extern struct fib_info *fib_create_info(struct fib_config *cfg);
 extern int fib_nh_match(struct fib_config *cfg, struct fib_info *fi);
@@ -38,4 +39,14 @@ extern int fib_detect_death(struct fib_info *fi, int order,
                            struct fib_info **last_resort,
                            int *last_idx, int dflt);
 
+static inline void fib_result_assign(struct fib_result *res,
+                                    struct fib_info *fi)
+{
+       if (res->fi != NULL)
+               fib_info_put(res->fi);
+       res->fi = fi;
+       if (fi != NULL)
+               atomic_inc(&fi->fib_clntref);
+}
+
 #endif /* _FIB_LOOKUP_H */