]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/ipv4/fib_lookup.h
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
[karo-tx-linux.git] / net / ipv4 / fib_lookup.h
index eef9eec17e0c584a383df0a8064117b3feb238f8..637b133973bd88e601aee3b833de0efed5b2a017 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);
@@ -36,6 +37,16 @@ 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,
-                           int *last_idx, int *dflt);
+                           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 */