1#ifndef _NF_TPROXY_CORE_H 2#define _NF_TPROXY_CORE_H 3 4#include <linux/types.h> 5#include <linux/in.h> 6#include <linux/skbuff.h> 7#include <net/sock.h> 8#include <net/inet_sock.h> 9#include <net/tcp.h> 10 11/* look up and get a reference to a matching socket */ 12extern struct sock * 13nf_tproxy_get_sock_v4(struct net *net, const u8 protocol, 14 const __be32 saddr, const __be32 daddr, 15 const __be16 sport, const __be16 dport, 16 const struct net_device *in, bool listening); 17 18static inline void 19nf_tproxy_put_sock(struct sock *sk) 20{ 21 /* TIME_WAIT inet sockets have to be handled differently */ 22 if ((sk->sk_protocol == IPPROTO_TCP) && (sk->sk_state == TCP_TIME_WAIT)) 23 inet_twsk_put(inet_twsk(sk)); 24 else 25 sock_put(sk); 26} 27 28/* assign a socket to the skb -- consumes sk */ 29int 30nf_tproxy_assign_sock(struct sk_buff *skb, struct sock *sk); 31 32#endif 33