nf_conntrack_h323.h 3.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#ifndef _NF_CONNTRACK_H323_H
#define _NF_CONNTRACK_H323_H

#ifdef __KERNEL__

#include <linux/netfilter/nf_conntrack_h323_asn1.h>

#define RAS_PORT 1719
#define Q931_PORT 1720
#define H323_RTP_CHANNEL_MAX 4	/* Audio, video, FAX and other */

/* This structure exists only once per master */
struct nf_ct_h323_master {

	/* Original and NATed Q.931 or H.245 signal ports */
	__be16 sig_port[IP_CT_DIR_MAX];

	/* Original and NATed RTP ports */
	__be16 rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX];

	union {
		/* RAS connection timeout */
		u_int32_t timeout;

		/* Next TPKT length (for separate TPKT header and data) */
		u_int16_t tpkt_len[IP_CT_DIR_MAX];
	};
};

struct nf_conn;

32 33 34 35 36 37 38
int get_h225_addr(struct nf_conn *ct, unsigned char *data,
		  TransportAddress *taddr, union nf_inet_addr *addr,
		  __be16 *port);
void nf_conntrack_h245_expect(struct nf_conn *new,
			      struct nf_conntrack_expect *this);
void nf_conntrack_q931_expect(struct nf_conn *new,
			      struct nf_conntrack_expect *this);
39
extern int (*set_h245_addr_hook) (struct sk_buff *skb, unsigned int protoff,
40 41
				  unsigned char **data, int dataoff,
				  H245_TransportAddress *taddr,
42
				  union nf_inet_addr *addr,
43
				  __be16 port);
44
extern int (*set_h225_addr_hook) (struct sk_buff *skb, unsigned int protoff,
45 46
				  unsigned char **data, int dataoff,
				  TransportAddress *taddr,
47
				  union nf_inet_addr *addr,
48
				  __be16 port);
49
extern int (*set_sig_addr_hook) (struct sk_buff *skb,
50 51
				 struct nf_conn *ct,
				 enum ip_conntrack_info ctinfo,
52
				 unsigned int protoff, unsigned char **data,
53
				 TransportAddress *taddr, int count);
54
extern int (*set_ras_addr_hook) (struct sk_buff *skb,
55 56
				 struct nf_conn *ct,
				 enum ip_conntrack_info ctinfo,
57
				 unsigned int protoff, unsigned char **data,
58
				 TransportAddress *taddr, int count);
59
extern int (*nat_rtp_rtcp_hook) (struct sk_buff *skb,
60 61
				 struct nf_conn *ct,
				 enum ip_conntrack_info ctinfo,
62 63
				 unsigned int protoff, unsigned char **data,
				 int dataoff,
64 65 66 67
				 H245_TransportAddress *taddr,
				 __be16 port, __be16 rtp_port,
				 struct nf_conntrack_expect *rtp_exp,
				 struct nf_conntrack_expect *rtcp_exp);
68
extern int (*nat_t120_hook) (struct sk_buff *skb, struct nf_conn *ct,
69
			     enum ip_conntrack_info ctinfo,
70
			     unsigned int protoff,
71 72 73
			     unsigned char **data, int dataoff,
			     H245_TransportAddress *taddr, __be16 port,
			     struct nf_conntrack_expect *exp);
74
extern int (*nat_h245_hook) (struct sk_buff *skb, struct nf_conn *ct,
75
			     enum ip_conntrack_info ctinfo,
76
			     unsigned int protoff,
77 78 79
			     unsigned char **data, int dataoff,
			     TransportAddress *taddr, __be16 port,
			     struct nf_conntrack_expect *exp);
80
extern int (*nat_callforwarding_hook) (struct sk_buff *skb,
81 82
				       struct nf_conn *ct,
				       enum ip_conntrack_info ctinfo,
83
				       unsigned int protoff,
84 85 86 87
				       unsigned char **data, int dataoff,
				       TransportAddress *taddr,
				       __be16 port,
				       struct nf_conntrack_expect *exp);
88
extern int (*nat_q931_hook) (struct sk_buff *skb, struct nf_conn *ct,
89
			     enum ip_conntrack_info ctinfo,
90
			     unsigned int protoff,
91 92 93 94 95 96 97
			     unsigned char **data, TransportAddress *taddr,
			     int idx, __be16 port,
			     struct nf_conntrack_expect *exp);

#endif

#endif