33 lines
852 B
C
33 lines
852 B
C
#ifndef _NF_TPROXY_CORE_H
|
|
#define _NF_TPROXY_CORE_H
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/in.h>
|
|
#include <linux/skbuff.h>
|
|
#include <net/sock.h>
|
|
#include <net/inet_sock.h>
|
|
#include <net/tcp.h>
|
|
|
|
/* look up and get a reference to a matching socket */
|
|
extern struct sock *
|
|
nf_tproxy_get_sock_v4(struct net *net, const u8 protocol,
|
|
const __be32 saddr, const __be32 daddr,
|
|
const __be16 sport, const __be16 dport,
|
|
const struct net_device *in, bool listening);
|
|
|
|
static inline void
|
|
nf_tproxy_put_sock(struct sock *sk)
|
|
{
|
|
/* TIME_WAIT inet sockets have to be handled differently */
|
|
if ((sk->sk_protocol == IPPROTO_TCP) && (sk->sk_state == TCP_TIME_WAIT))
|
|
inet_twsk_put(inet_twsk(sk));
|
|
else
|
|
sock_put(sk);
|
|
}
|
|
|
|
/* assign a socket to the skb -- consumes sk */
|
|
int
|
|
nf_tproxy_assign_sock(struct sk_buff *skb, struct sock *sk);
|
|
|
|
#endif
|