1 #ifndef _NF_CONNTRACK_SYNPROXY_H
2 #define _NF_CONNTRACK_SYNPROXY_H
4 #include <net/netns/generic.h>
6 struct nf_conn_synproxy
{
12 static inline struct nf_conn_synproxy
*nfct_synproxy(const struct nf_conn
*ct
)
14 #if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
15 return nf_ct_ext_find(ct
, NF_CT_EXT_SYNPROXY
);
21 static inline struct nf_conn_synproxy
*nfct_synproxy_ext_add(struct nf_conn
*ct
)
23 #if IS_ENABLED(CONFIG_NETFILTER_SYNPROXY)
24 return nf_ct_ext_add(ct
, NF_CT_EXT_SYNPROXY
, GFP_ATOMIC
);
30 struct synproxy_stats
{
31 unsigned int syn_received
;
32 unsigned int cookie_invalid
;
33 unsigned int cookie_valid
;
34 unsigned int cookie_retrans
;
35 unsigned int conn_reopened
;
40 struct synproxy_stats __percpu
*stats
;
43 extern int synproxy_net_id
;
44 static inline struct synproxy_net
*synproxy_pernet(struct net
*net
)
46 return net_generic(net
, synproxy_net_id
);
49 struct synproxy_options
{
58 struct xt_synproxy_info
;
59 bool synproxy_parse_options(const struct sk_buff
*skb
, unsigned int doff
,
60 const struct tcphdr
*th
,
61 struct synproxy_options
*opts
);
62 unsigned int synproxy_options_size(const struct synproxy_options
*opts
);
63 void synproxy_build_options(struct tcphdr
*th
,
64 const struct synproxy_options
*opts
);
66 void synproxy_init_timestamp_cookie(const struct xt_synproxy_info
*info
,
67 struct synproxy_options
*opts
);
68 void synproxy_check_timestamp_cookie(struct synproxy_options
*opts
);
70 unsigned int synproxy_tstamp_adjust(struct sk_buff
*skb
, unsigned int protoff
,
71 struct tcphdr
*th
, struct nf_conn
*ct
,
72 enum ip_conntrack_info ctinfo
,
73 const struct nf_conn_synproxy
*synproxy
);
75 #endif /* _NF_CONNTRACK_SYNPROXY_H */
This page took 0.040632 seconds and 5 git commands to generate.