blob: 858d9b214053ff141e5e856ce98edbf50412bc00 [file] [log] [blame]
Patrick McHardyf587de02006-12-02 22:08:46 -08001#ifndef _NF_CONNTRACK_H323_H
2#define _NF_CONNTRACK_H323_H
3
4#ifdef __KERNEL__
5
6#include <linux/netfilter/nf_conntrack_h323_asn1.h>
7
8#define RAS_PORT 1719
9#define Q931_PORT 1720
10#define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */
11
12/* This structure exists only once per master */
13struct nf_ct_h323_master {
14
15 /* Original and NATed Q.931 or H.245 signal ports */
16 __be16 sig_port[IP_CT_DIR_MAX];
17
18 /* Original and NATed RTP ports */
19 __be16 rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX];
20
21 union {
22 /* RAS connection timeout */
23 u_int32_t timeout;
24
25 /* Next TPKT length (for separate TPKT header and data) */
26 u_int16_t tpkt_len[IP_CT_DIR_MAX];
27 };
28};
29
30struct nf_conn;
31
Joe Perchesa0f4ecf2013-09-26 14:48:15 -070032int get_h225_addr(struct nf_conn *ct, unsigned char *data,
33 TransportAddress *taddr, union nf_inet_addr *addr,
34 __be16 *port);
35void nf_conntrack_h245_expect(struct nf_conn *new,
36 struct nf_conntrack_expect *this);
37void nf_conntrack_q931_expect(struct nf_conn *new,
38 struct nf_conntrack_expect *this);
Patrick McHardy051966c2012-08-26 19:14:04 +020039extern int (*set_h245_addr_hook) (struct sk_buff *skb, unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080040 unsigned char **data, int dataoff,
41 H245_TransportAddress *taddr,
Jan Engelhardt643a2c12007-12-17 22:43:50 -080042 union nf_inet_addr *addr,
Patrick McHardyf587de02006-12-02 22:08:46 -080043 __be16 port);
Patrick McHardy051966c2012-08-26 19:14:04 +020044extern int (*set_h225_addr_hook) (struct sk_buff *skb, unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080045 unsigned char **data, int dataoff,
46 TransportAddress *taddr,
Jan Engelhardt643a2c12007-12-17 22:43:50 -080047 union nf_inet_addr *addr,
Patrick McHardyf587de02006-12-02 22:08:46 -080048 __be16 port);
Herbert Xu3db05fe2007-10-15 00:53:15 -070049extern int (*set_sig_addr_hook) (struct sk_buff *skb,
Patrick McHardyf587de02006-12-02 22:08:46 -080050 struct nf_conn *ct,
51 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020052 unsigned int protoff, unsigned char **data,
Patrick McHardyf587de02006-12-02 22:08:46 -080053 TransportAddress *taddr, int count);
Herbert Xu3db05fe2007-10-15 00:53:15 -070054extern int (*set_ras_addr_hook) (struct sk_buff *skb,
Patrick McHardyf587de02006-12-02 22:08:46 -080055 struct nf_conn *ct,
56 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020057 unsigned int protoff, unsigned char **data,
Patrick McHardyf587de02006-12-02 22:08:46 -080058 TransportAddress *taddr, int count);
Herbert Xu3db05fe2007-10-15 00:53:15 -070059extern int (*nat_rtp_rtcp_hook) (struct sk_buff *skb,
Patrick McHardyf587de02006-12-02 22:08:46 -080060 struct nf_conn *ct,
61 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020062 unsigned int protoff, unsigned char **data,
63 int dataoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080064 H245_TransportAddress *taddr,
65 __be16 port, __be16 rtp_port,
66 struct nf_conntrack_expect *rtp_exp,
67 struct nf_conntrack_expect *rtcp_exp);
Herbert Xu3db05fe2007-10-15 00:53:15 -070068extern int (*nat_t120_hook) (struct sk_buff *skb, struct nf_conn *ct,
Patrick McHardyf587de02006-12-02 22:08:46 -080069 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020070 unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080071 unsigned char **data, int dataoff,
72 H245_TransportAddress *taddr, __be16 port,
73 struct nf_conntrack_expect *exp);
Herbert Xu3db05fe2007-10-15 00:53:15 -070074extern int (*nat_h245_hook) (struct sk_buff *skb, struct nf_conn *ct,
Patrick McHardyf587de02006-12-02 22:08:46 -080075 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020076 unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080077 unsigned char **data, int dataoff,
78 TransportAddress *taddr, __be16 port,
79 struct nf_conntrack_expect *exp);
Herbert Xu3db05fe2007-10-15 00:53:15 -070080extern int (*nat_callforwarding_hook) (struct sk_buff *skb,
Patrick McHardyf587de02006-12-02 22:08:46 -080081 struct nf_conn *ct,
82 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020083 unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080084 unsigned char **data, int dataoff,
85 TransportAddress *taddr,
86 __be16 port,
87 struct nf_conntrack_expect *exp);
Herbert Xu3db05fe2007-10-15 00:53:15 -070088extern int (*nat_q931_hook) (struct sk_buff *skb, struct nf_conn *ct,
Patrick McHardyf587de02006-12-02 22:08:46 -080089 enum ip_conntrack_info ctinfo,
Patrick McHardy051966c2012-08-26 19:14:04 +020090 unsigned int protoff,
Patrick McHardyf587de02006-12-02 22:08:46 -080091 unsigned char **data, TransportAddress *taddr,
92 int idx, __be16 port,
93 struct nf_conntrack_expect *exp);
94
95#endif
96
97#endif