Hi Florian,

[auto build test ERROR on nf-next/master]

url:    
https://github.com/0day-ci/linux/commits/Florian-Westphal/netfilter-handle-race-w-module-removal-and-nfqueue/20170726-024704
base:   https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next.git master
config: x86_64-randconfig-x002-201730 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from net/netfilter/nfnetlink_queue.c:35:0:
   include/net/netfilter/nf_conntrack.h:65:22: error: field 'ct_general' has 
incomplete type
     struct nf_conntrack ct_general;
                         ^~~~~~~~~~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_get':
>> include/net/netfilter/nf_conntrack.h:154:15: error: 'const struct sk_buff' 
>> has no member named '_nfct'
     *ctinfo = skb->_nfct & NFCT_INFOMASK;
                  ^~
   include/net/netfilter/nf_conntrack.h:156:31: error: 'const struct sk_buff' 
has no member named '_nfct'
     return (struct nf_conn *)(skb->_nfct & NFCT_PTRMASK);
                                  ^~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_put':
   include/net/netfilter/nf_conntrack.h:163:2: error: implicit declaration of 
function 'nf_conntrack_put' [-Werror=implicit-function-declaration]
     nf_conntrack_put(&ct->ct_general);
     ^~~~~~~~~~~~~~~~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_set':
>> include/net/netfilter/nf_conntrack.h:327:5: error: 'struct sk_buff' has no 
>> member named '_nfct'
     skb->_nfct = (unsigned long)ct | info;
        ^~
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from net/netfilter/nfnetlink_queue.c:17:
   net/netfilter/nfnetlink_queue.c: At top level:
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'strcpy' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:390:2: note: in expansion of macro 'if'
     if (p_size == (size_t)-1 && q_size == (size_t)-1)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:380:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:378:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:369:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:367:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:358:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:356:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:348:2: note: in expansion of macro 'if'
     if (p_size < size || q_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:345:3: note: in expansion of macro 'if'
      if (q_size < size)
      ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:343:3: note: in expansion of macro 'if'
      if (p_size < size)
--
   In file included from net//netfilter/nfnetlink_queue.c:35:0:
   include/net/netfilter/nf_conntrack.h:65:22: error: field 'ct_general' has 
incomplete type
     struct nf_conntrack ct_general;
                         ^~~~~~~~~~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_get':
>> include/net/netfilter/nf_conntrack.h:154:15: error: 'const struct sk_buff' 
>> has no member named '_nfct'
     *ctinfo = skb->_nfct & NFCT_INFOMASK;
                  ^~
   include/net/netfilter/nf_conntrack.h:156:31: error: 'const struct sk_buff' 
has no member named '_nfct'
     return (struct nf_conn *)(skb->_nfct & NFCT_PTRMASK);
                                  ^~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_put':
   include/net/netfilter/nf_conntrack.h:163:2: error: implicit declaration of 
function 'nf_conntrack_put' [-Werror=implicit-function-declaration]
     nf_conntrack_put(&ct->ct_general);
     ^~~~~~~~~~~~~~~~
   include/net/netfilter/nf_conntrack.h: In function 'nf_ct_set':
>> include/net/netfilter/nf_conntrack.h:327:5: error: 'struct sk_buff' has no 
>> member named '_nfct'
     skb->_nfct = (unsigned long)ct | info;
        ^~
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from net//netfilter/nfnetlink_queue.c:17:
   net//netfilter/nfnetlink_queue.c: At top level:
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'strcpy' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:390:2: note: in expansion of macro 'if'
     if (p_size == (size_t)-1 && q_size == (size_t)-1)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:380:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'kmemdup' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:378:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:369:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr_inv' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:367:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:358:2: note: in expansion of macro 'if'
     if (p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memchr' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:356:2: note: in expansion of macro 'if'
     if (__builtin_constant_p(size) && p_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:348:2: note: in expansion of macro 'if'
     if (p_size < size || q_size < size)
     ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:345:3: note: in expansion of macro 'if'
      if (q_size < size)
      ^~
   include/linux/compiler.h:162:4: warning: '______f' is static but declared in 
inline function 'memcmp' which is not static
       ______f = {     \
       ^
   include/linux/compiler.h:154:23: note: in expansion of macro '__trace_if'
    #define if(cond, ...) __trace_if( (cond , ## __VA_ARGS__) )
                          ^~~~~~~~~~
   include/linux/string.h:343:3: note: in expansion of macro 'if'
      if (p_size < size)

vim +154 include/net/netfilter/nf_conntrack.h

f8eb24a89a Patrick McHardy        2006-11-29   55  
ea781f197d Eric Dumazet           2009-03-25   56  struct nf_conn {
f330a7fdbe Florian Westphal       2016-08-25   57       /* Usage count in here 
is 1 for hash table, 1 per skb,
b476b72a0f Jesper Dangaard Brouer 2014-03-03   58        * plus 1 for any 
connection(s) we are `master' for
b476b72a0f Jesper Dangaard Brouer 2014-03-03   59        *
a9e419dc7b Florian Westphal       2017-01-23   60        * Hint, SKB address 
this struct and refcnt via skb->_nfct and
b476b72a0f Jesper Dangaard Brouer 2014-03-03   61        * helpers 
nf_conntrack_get() and nf_conntrack_put().
b476b72a0f Jesper Dangaard Brouer 2014-03-03   62        * Helper nf_ct_put() 
equals nf_conntrack_put() by dec refcnt,
b476b72a0f Jesper Dangaard Brouer 2014-03-03   63        * beware nf_ct_get() 
is different and don't inc refcnt.
b476b72a0f Jesper Dangaard Brouer 2014-03-03   64        */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  @65       struct nf_conntrack 
ct_general;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   66  
440f0d5885 Patrick McHardy        2009-06-10   67       spinlock_t      lock;
b7779d06f9 Jesper Dangaard Brouer 2014-03-03   68       u16             cpu;
440f0d5885 Patrick McHardy        2009-06-10   69  
6c8dee9842 Florian Westphal       2016-06-11   70  #ifdef 
CONFIG_NF_CONNTRACK_ZONES
6c8dee9842 Florian Westphal       2016-06-11   71       struct 
nf_conntrack_zone zone;
6c8dee9842 Florian Westphal       2016-06-11   72  #endif
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   73       /* XXX should I move 
this to the tail ? - Y.K */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   74       /* These are my tuples; 
original and reply */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   75       struct 
nf_conntrack_tuple_hash tuplehash[IP_CT_DIR_MAX];
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   76  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   77       /* Have we seen traffic 
both ways yet? (bitset) */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   78       unsigned long status;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   79  
f330a7fdbe Florian Westphal       2016-08-25   80       /* jiffies32 when this 
ct is considered dead */
f330a7fdbe Florian Westphal       2016-08-25   81       u32 timeout;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   82  
0c5c9fb551 Eric W. Biederman      2015-03-11   83       possible_net_t ct_net;
0c5c9fb551 Eric W. Biederman      2015-03-11   84  
5173bc679d Florian Westphal       2016-11-23   85  #if IS_ENABLED(CONFIG_NF_NAT)
5173bc679d Florian Westphal       2016-11-23   86       struct rhlist_head 
nat_bysource;
5173bc679d Florian Westphal       2016-11-23   87  #endif
c41884ce05 Florian Westphal       2014-11-24   88       /* all members below 
initialized via memset */
c41884ce05 Florian Westphal       2014-11-24   89       u8 
__nfct_init_offset[0];
c41884ce05 Florian Westphal       2014-11-24   90  
c41884ce05 Florian Westphal       2014-11-24   91       /* If we were expected 
by an expectation, this will be it */
c41884ce05 Florian Westphal       2014-11-24   92       struct nf_conn *master;
c41884ce05 Florian Westphal       2014-11-24   93  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   94  #if 
defined(CONFIG_NF_CONNTRACK_MARK)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   95       u_int32_t mark;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   96  #endif
9fb9cbb108 Yasuyuki Kozakai       2005-11-09   97  
7c9728c393 James Morris           2006-06-09   98  #ifdef 
CONFIG_NF_CONNTRACK_SECMARK
7c9728c393 James Morris           2006-06-09   99       u_int32_t secmark;
7c9728c393 James Morris           2006-06-09  100  #endif
7c9728c393 James Morris           2006-06-09  101  
ecfab2c9fe Yasuyuki Kozakai       2007-07-07  102       /* Extensions */
ecfab2c9fe Yasuyuki Kozakai       2007-07-07  103       struct nf_ct_ext *ext;
e5fc9e7a66 Changli Gao            2010-11-12  104  
e5fc9e7a66 Changli Gao            2010-11-12  105       /* Storage reserved for 
other modules, must be the last member */
e5fc9e7a66 Changli Gao            2010-11-12  106       union 
nf_conntrack_proto proto;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  107  };
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  108  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  109  static inline struct nf_conn 
*
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  110  
nf_ct_tuplehash_to_ctrack(const struct nf_conntrack_tuple_hash *hash)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  111  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  112       return 
container_of(hash, struct nf_conn,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  113                           
tuplehash[hash->tuple.dst.dir]);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  114  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  115  
5e8fbe2ac8 Patrick McHardy        2008-04-14  116  static inline u_int16_t 
nf_ct_l3num(const struct nf_conn *ct)
5e8fbe2ac8 Patrick McHardy        2008-04-14  117  {
5e8fbe2ac8 Patrick McHardy        2008-04-14  118       return 
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num;
5e8fbe2ac8 Patrick McHardy        2008-04-14  119  }
5e8fbe2ac8 Patrick McHardy        2008-04-14  120  
5e8fbe2ac8 Patrick McHardy        2008-04-14  121  static inline u_int8_t 
nf_ct_protonum(const struct nf_conn *ct)
5e8fbe2ac8 Patrick McHardy        2008-04-14  122  {
5e8fbe2ac8 Patrick McHardy        2008-04-14  123       return 
ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum;
5e8fbe2ac8 Patrick McHardy        2008-04-14  124  }
5e8fbe2ac8 Patrick McHardy        2008-04-14  125  
f2f3e38c63 Pablo Neira Ayuso      2009-06-02  126  #define nf_ct_tuple(ct, dir) 
(&(ct)->tuplehash[dir].tuple)
f2f3e38c63 Pablo Neira Ayuso      2009-06-02  127  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  128  /* get master conntrack via 
master expectation */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  129  #define master_ct(conntr) 
(conntr->master)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  130  
5a1fb391d8 Alexey Dobriyan        2008-10-08  131  extern struct net init_net;
5a1fb391d8 Alexey Dobriyan        2008-10-08  132  
5a1fb391d8 Alexey Dobriyan        2008-10-08  133  static inline struct net 
*nf_ct_net(const struct nf_conn *ct)
5a1fb391d8 Alexey Dobriyan        2008-10-08  134  {
c2d9ba9bce Eric Dumazet           2010-06-01  135       return 
read_pnet(&ct->ct_net);
5a1fb391d8 Alexey Dobriyan        2008-10-08  136  }
5a1fb391d8 Alexey Dobriyan        2008-10-08  137  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  138  /* Alter reply tuple (maybe 
alter helper). */
4e77be4637 Joe Perches            2013-09-23  139  void 
nf_conntrack_alter_reply(struct nf_conn *ct,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  140                             
const struct nf_conntrack_tuple *newreply);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  141  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  142  /* Is this tuple taken? 
(ignoring any belonging to the given
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  143     conntrack). */
4e77be4637 Joe Perches            2013-09-23  144  int 
nf_conntrack_tuple_taken(const struct nf_conntrack_tuple *tuple,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  145                            
const struct nf_conn *ignored_conntrack);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  146  
3032230920 Florian Westphal       2017-01-23  147  #define NFCT_INFOMASK        
7UL
a9e419dc7b Florian Westphal       2017-01-23  148  #define NFCT_PTRMASK 
~(NFCT_INFOMASK)
3032230920 Florian Westphal       2017-01-23  149  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  150  /* Return conntrack_info and 
tuple hash for given skb. */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  151  static inline struct nf_conn 
*
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  152  nf_ct_get(const struct 
sk_buff *skb, enum ip_conntrack_info *ctinfo)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  153  {
a9e419dc7b Florian Westphal       2017-01-23 @154       *ctinfo = skb->_nfct & 
NFCT_INFOMASK;
a9e419dc7b Florian Westphal       2017-01-23  155  
a9e419dc7b Florian Westphal       2017-01-23 @156       return (struct nf_conn 
*)(skb->_nfct & NFCT_PTRMASK);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  157  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  158  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  159  /* decrement reference count 
on a conntrack */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  160  static inline void 
nf_ct_put(struct nf_conn *ct)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  161  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  162       NF_CT_ASSERT(ct);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  163       
nf_conntrack_put(&ct->ct_general);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  164  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  165  
b9f78f9fca Pablo Neira Ayuso      2006-03-22  166  /* Protocol module loading */
4e77be4637 Joe Perches            2013-09-23  167  int 
nf_ct_l3proto_try_module_get(unsigned short l3proto);
4e77be4637 Joe Perches            2013-09-23  168  void 
nf_ct_l3proto_module_put(unsigned short l3proto);
b9f78f9fca Pablo Neira Ayuso      2006-03-22  169  
ecb2421b5d Florian Westphal       2016-11-15  170  /* load module; 
enable/disable conntrack in this namespace */
ecb2421b5d Florian Westphal       2016-11-15  171  int nf_ct_netns_get(struct 
net *net, u8 nfproto);
ecb2421b5d Florian Westphal       2016-11-15  172  void nf_ct_netns_put(struct 
net *net, u8 nfproto);
ecb2421b5d Florian Westphal       2016-11-15  173  
ea781f197d Eric Dumazet           2009-03-25  174  /*
ea781f197d Eric Dumazet           2009-03-25  175   * Allocate a hashtable of 
hlist_head (if nulls == 0),
ea781f197d Eric Dumazet           2009-03-25  176   * or hlist_nulls_head (if 
nulls == 1)
ea781f197d Eric Dumazet           2009-03-25  177   */
4e77be4637 Joe Perches            2013-09-23  178  void 
*nf_ct_alloc_hashtable(unsigned int *sizep, int nulls);
ea781f197d Eric Dumazet           2009-03-25  179  
4e77be4637 Joe Perches            2013-09-23  180  void 
nf_ct_free_hashtable(void *hash, unsigned int size);
ac565e5fc1 Patrick McHardy        2007-07-07  181  
4e77be4637 Joe Perches            2013-09-23  182  int 
nf_conntrack_hash_check_insert(struct nf_conn *ct);
02982c27ba Florian Westphal       2013-07-29  183  bool nf_ct_delete(struct 
nf_conn *ct, u32 pid, int report);
c1d10adb4a Pablo Neira Ayuso      2006-01-05  184  
4e77be4637 Joe Perches            2013-09-23  185  bool nf_ct_get_tuplepr(const 
struct sk_buff *skb, unsigned int nhoff,
a31f1adc09 Eric W. Biederman      2015-09-18  186                      
u_int16_t l3num, struct net *net,
a31f1adc09 Eric W. Biederman      2015-09-18  187                      struct 
nf_conntrack_tuple *tuple);
4e77be4637 Joe Perches            2013-09-23  188  bool 
nf_ct_invert_tuplepr(struct nf_conntrack_tuple *inverse,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  189                         const 
struct nf_conntrack_tuple *orig);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  190  
4e77be4637 Joe Perches            2013-09-23  191  void 
__nf_ct_refresh_acct(struct nf_conn *ct, enum ip_conntrack_info ctinfo,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  192                         const 
struct sk_buff *skb,
4e77be4637 Joe Perches            2013-09-23  193                         
unsigned long extra_jiffies, int do_acct);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  194  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  195  /* Refresh conntrack for 
this many jiffies and do accounting */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  196  static inline void 
nf_ct_refresh_acct(struct nf_conn *ct,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  197                               
      enum ip_conntrack_info ctinfo,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  198                               
      const struct sk_buff *skb,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  199                               
      unsigned long extra_jiffies)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  200  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  201       
__nf_ct_refresh_acct(ct, ctinfo, skb, extra_jiffies, 1);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  202  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  203  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  204  /* Refresh conntrack for 
this many jiffies */
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  205  static inline void 
nf_ct_refresh(struct nf_conn *ct,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  206                               
 const struct sk_buff *skb,
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  207                               
 unsigned long extra_jiffies)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  208  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  209       
__nf_ct_refresh_acct(ct, 0, skb, extra_jiffies, 0);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  210  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  211  
718d4ad98e Fabian Hugelshofer     2008-06-09  212  /* kill conntrack and do 
accounting */
ad66713f5a Florian Westphal       2016-08-25  213  bool nf_ct_kill_acct(struct 
nf_conn *ct, enum ip_conntrack_info ctinfo,
ad66713f5a Florian Westphal       2016-08-25  214                    const 
struct sk_buff *skb);
718d4ad98e Fabian Hugelshofer     2008-06-09  215  
718d4ad98e Fabian Hugelshofer     2008-06-09  216  /* kill conntrack without 
accounting */
4c88949800 David S. Miller        2008-07-14  217  static inline bool 
nf_ct_kill(struct nf_conn *ct)
718d4ad98e Fabian Hugelshofer     2008-06-09  218  {
ad66713f5a Florian Westphal       2016-08-25  219       return nf_ct_delete(ct, 
0, 0);
718d4ad98e Fabian Hugelshofer     2008-06-09  220  }
51091764f2 Patrick McHardy        2008-06-09  221  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  222  /* These are for NAT.  Icky. 
*/
2d89c68ac7 Patrick McHardy        2013-07-28  223  extern s32 
(*nf_ct_nat_offset)(const struct nf_conn *ct,
f9dd09c7f7 Jozsef Kadlecsik       2009-11-06  224                              
enum ip_conntrack_dir dir,
f9dd09c7f7 Jozsef Kadlecsik       2009-11-06  225                              
u32 seq);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  226  
d171e8b544 Florian Westphal       2017-07-24  227  /* Set all unconfirmed 
conntrack as dying */
d171e8b544 Florian Westphal       2017-07-24  228  void 
nf_ct_unconfirmed_destroy(struct net *);
d171e8b544 Florian Westphal       2017-07-24  229  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  230  /* Iterate over all 
conntracks: if iter returns true, it's deleted. */
9fd6452d67 Florian Westphal       2017-05-21  231  void 
nf_ct_iterate_cleanup_net(struct net *net,
c655bc6896 Florian Westphal       2013-07-29  232                              
int (*iter)(struct nf_conn *i, void *data),
c655bc6896 Florian Westphal       2013-07-29  233                              
void *data, u32 portid, int report);
308ac9143e Daniel Borkmann        2015-08-08  234  
2843fb6998 Florian Westphal       2017-05-21  235  /* also set unconfirmed 
conntracks as dying. Only use in module exit path. */
2843fb6998 Florian Westphal       2017-05-21  236  void 
nf_ct_iterate_destroy(int (*iter)(struct nf_conn *i, void *data),
2843fb6998 Florian Westphal       2017-05-21  237                          void 
*data);
2843fb6998 Florian Westphal       2017-05-21  238  
308ac9143e Daniel Borkmann        2015-08-08  239  struct nf_conntrack_zone;
308ac9143e Daniel Borkmann        2015-08-08  240  
4e77be4637 Joe Perches            2013-09-23  241  void 
nf_conntrack_free(struct nf_conn *ct);
308ac9143e Daniel Borkmann        2015-08-08  242  struct nf_conn 
*nf_conntrack_alloc(struct net *net,
308ac9143e Daniel Borkmann        2015-08-08  243                               
   const struct nf_conntrack_zone *zone,
5a1fb391d8 Alexey Dobriyan        2008-10-08  244                               
   const struct nf_conntrack_tuple *orig,
b891c5a831 Pablo Neira Ayuso      2008-07-08  245                               
   const struct nf_conntrack_tuple *repl,
b891c5a831 Pablo Neira Ayuso      2008-07-08  246                               
   gfp_t gfp);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  247  
b2a15a604d Patrick McHardy        2010-02-03  248  static inline int 
nf_ct_is_template(const struct nf_conn *ct)
b2a15a604d Patrick McHardy        2010-02-03  249  {
b2a15a604d Patrick McHardy        2010-02-03  250       return 
test_bit(IPS_TEMPLATE_BIT, &ct->status);
b2a15a604d Patrick McHardy        2010-02-03  251  }
b2a15a604d Patrick McHardy        2010-02-03  252  
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  253  /* It's confirmed if it is, 
or has been in the hash table. */
d51ed8367b Florian Westphal       2016-07-08  254  static inline int 
nf_ct_is_confirmed(const struct nf_conn *ct)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  255  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  256       return 
test_bit(IPS_CONFIRMED_BIT, &ct->status);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  257  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  258  
d51ed8367b Florian Westphal       2016-07-08  259  static inline int 
nf_ct_is_dying(const struct nf_conn *ct)
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  260  {
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  261       return 
test_bit(IPS_DYING_BIT, &ct->status);
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  262  }
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  263  
42c1edd345 Julian Anastasov       2011-06-16  264  /* Packet is received from 
loopback */
42c1edd345 Julian Anastasov       2011-06-16  265  static inline bool 
nf_is_loopback_packet(const struct sk_buff *skb)
42c1edd345 Julian Anastasov       2011-06-16  266  {
42c1edd345 Julian Anastasov       2011-06-16  267       return skb->dev && 
skb->skb_iif && skb->dev->flags & IFF_LOOPBACK;
42c1edd345 Julian Anastasov       2011-06-16  268  }
42c1edd345 Julian Anastasov       2011-06-16  269  
f330a7fdbe Florian Westphal       2016-08-25  270  #define nfct_time_stamp 
((u32)(jiffies))
f330a7fdbe Florian Westphal       2016-08-25  271  
c8607e0200 Florian Westphal       2016-07-06  272  /* jiffies until ct expires, 
0 if already expired */
c8607e0200 Florian Westphal       2016-07-06  273  static inline unsigned long 
nf_ct_expires(const struct nf_conn *ct)
c8607e0200 Florian Westphal       2016-07-06  274  {
f330a7fdbe Florian Westphal       2016-08-25  275       s32 timeout = 
ct->timeout - nfct_time_stamp;
c8607e0200 Florian Westphal       2016-07-06  276  
c8607e0200 Florian Westphal       2016-07-06  277       return timeout > 0 ? 
timeout : 0;
c8607e0200 Florian Westphal       2016-07-06  278  }
c8607e0200 Florian Westphal       2016-07-06  279  
f330a7fdbe Florian Westphal       2016-08-25  280  static inline bool 
nf_ct_is_expired(const struct nf_conn *ct)
f330a7fdbe Florian Westphal       2016-08-25  281  {
f330a7fdbe Florian Westphal       2016-08-25  282       return 
(__s32)(ct->timeout - nfct_time_stamp) <= 0;
f330a7fdbe Florian Westphal       2016-08-25  283  }
f330a7fdbe Florian Westphal       2016-08-25  284  
f330a7fdbe Florian Westphal       2016-08-25  285  /* use after obtaining a 
reference count */
f330a7fdbe Florian Westphal       2016-08-25  286  static inline bool 
nf_ct_should_gc(const struct nf_conn *ct)
f330a7fdbe Florian Westphal       2016-08-25  287  {
f330a7fdbe Florian Westphal       2016-08-25  288       return 
nf_ct_is_expired(ct) && nf_ct_is_confirmed(ct) &&
f330a7fdbe Florian Westphal       2016-08-25  289              
!nf_ct_is_dying(ct);
f330a7fdbe Florian Westphal       2016-08-25  290  }
f330a7fdbe Florian Westphal       2016-08-25  291  
34641c6d00 Paul Gortmaker         2011-08-29  292  struct kernel_param;
34641c6d00 Paul Gortmaker         2011-08-29  293  
4e77be4637 Joe Perches            2013-09-23  294  int 
nf_conntrack_set_hashsize(const char *val, struct kernel_param *kp);
3183ab8997 Florian Westphal       2016-06-22  295  int 
nf_conntrack_hash_resize(unsigned int hashsize);
92e47ba883 Liping Zhang           2016-08-13  296  
92e47ba883 Liping Zhang           2016-08-13  297  extern struct 
hlist_nulls_head *nf_conntrack_hash;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  298  extern unsigned int 
nf_conntrack_htable_size;
92e47ba883 Liping Zhang           2016-08-13  299  extern seqcount_t 
nf_conntrack_generation;
e478075c6f Hagen Paul Pfeifer     2009-02-20  300  extern unsigned int 
nf_conntrack_max;
9fb9cbb108 Yasuyuki Kozakai       2005-11-09  301  
92e47ba883 Liping Zhang           2016-08-13  302  /* must be called with rcu 
read lock held */
92e47ba883 Liping Zhang           2016-08-13  303  static inline void
92e47ba883 Liping Zhang           2016-08-13  304  nf_conntrack_get_ht(struct 
hlist_nulls_head **hash, unsigned int *hsize)
92e47ba883 Liping Zhang           2016-08-13  305  {
92e47ba883 Liping Zhang           2016-08-13  306       struct hlist_nulls_head 
*hptr;
92e47ba883 Liping Zhang           2016-08-13  307       unsigned int sequence, 
hsz;
92e47ba883 Liping Zhang           2016-08-13  308  
92e47ba883 Liping Zhang           2016-08-13  309       do {
92e47ba883 Liping Zhang           2016-08-13  310               sequence = 
read_seqcount_begin(&nf_conntrack_generation);
92e47ba883 Liping Zhang           2016-08-13  311               hsz = 
nf_conntrack_htable_size;
92e47ba883 Liping Zhang           2016-08-13  312               hptr = 
nf_conntrack_hash;
92e47ba883 Liping Zhang           2016-08-13  313       } while 
(read_seqcount_retry(&nf_conntrack_generation, sequence));
92e47ba883 Liping Zhang           2016-08-13  314  
92e47ba883 Liping Zhang           2016-08-13  315       *hash = hptr;
92e47ba883 Liping Zhang           2016-08-13  316       *hsize = hsz;
92e47ba883 Liping Zhang           2016-08-13  317  }
92e47ba883 Liping Zhang           2016-08-13  318  
308ac9143e Daniel Borkmann        2015-08-08  319  struct nf_conn 
*nf_ct_tmpl_alloc(struct net *net,
308ac9143e Daniel Borkmann        2015-08-08  320                               
 const struct nf_conntrack_zone *zone,
308ac9143e Daniel Borkmann        2015-08-08  321                               
 gfp_t flags);
9cf94eab8b Daniel Borkmann        2015-08-31  322  void nf_ct_tmpl_free(struct 
nf_conn *tmpl);
e53376bef2 Pablo Neira Ayuso      2014-02-03  323  
c74454fadd Florian Westphal       2017-01-23  324  static inline void
c74454fadd Florian Westphal       2017-01-23  325  nf_ct_set(struct sk_buff 
*skb, struct nf_conn *ct, enum ip_conntrack_info info)
c74454fadd Florian Westphal       2017-01-23  326  {
a9e419dc7b Florian Westphal       2017-01-23 @327       skb->_nfct = (unsigned 
long)ct | info;
c74454fadd Florian Westphal       2017-01-23  328  }
c74454fadd Florian Westphal       2017-01-23  329  

:::::: The code at line 154 was first introduced by commit
:::::: a9e419dc7be6997409dca6d1b9daf3cc7046902f netfilter: merge ctinfo into 
nfct pointer storage area

:::::: TO: Florian Westphal <[email protected]>
:::::: CC: Pablo Neira Ayuso <[email protected]>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to