]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - include/net/ip_fib.h
mm, THP, swap: move anonymous THP split logic to vmscan
[karo-tx-linux.git] / include / net / ip_fib.h
index f7f6aa789c6174c41ca9739206d586c559c1f3a1..41d580c6185ffd7041ef236a06701f6776a3633c 100644 (file)
@@ -23,6 +23,7 @@
 #include <net/inetpeer.h>
 #include <linux/percpu.h>
 #include <linux/notifier.h>
+#include <linux/refcount.h>
 
 struct fib_config {
        u8                      fc_dst_len;
@@ -105,7 +106,7 @@ struct fib_info {
        struct hlist_node       fib_lhash;
        struct net              *fib_net;
        int                     fib_treeref;
-       atomic_t                fib_clntref;
+       refcount_t              fib_clntref;
        unsigned int            fib_flags;
        unsigned char           fib_dead;
        unsigned char           fib_protocol;
@@ -136,6 +137,7 @@ struct fib_rule;
 
 struct fib_table;
 struct fib_result {
+       __be32          prefix;
        unsigned char   prefixlen;
        unsigned char   nh_sel;
        unsigned char   type;
@@ -263,8 +265,10 @@ struct fib_table {
 
 int fib_table_lookup(struct fib_table *tb, const struct flowi4 *flp,
                     struct fib_result *res, int fib_flags);
-int fib_table_insert(struct net *, struct fib_table *, struct fib_config *);
-int fib_table_delete(struct net *, struct fib_table *, struct fib_config *);
+int fib_table_insert(struct net *, struct fib_table *, struct fib_config *,
+                    struct netlink_ext_ack *extack);
+int fib_table_delete(struct net *, struct fib_table *, struct fib_config *,
+                    struct netlink_ext_ack *extack);
 int fib_table_dump(struct fib_table *table, struct sk_buff *skb,
                   struct netlink_callback *cb);
 int fib_table_flush(struct net *net, struct fib_table *table);
@@ -427,12 +431,12 @@ void free_fib_info(struct fib_info *fi);
 
 static inline void fib_info_hold(struct fib_info *fi)
 {
-       atomic_inc(&fi->fib_clntref);
+       refcount_inc(&fi->fib_clntref);
 }
 
 static inline void fib_info_put(struct fib_info *fi)
 {
-       if (atomic_dec_and_test(&fi->fib_clntref))
+       if (refcount_dec_and_test(&fi->fib_clntref))
                free_fib_info(fi);
 }