1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _NF_CONNTRACK_H323_H 3 #define _NF_CONNTRACK_H323_H 4 5 #include <linux/netfilter.h> 6 #include <linux/skbuff.h> 7 #include <linux/types.h> 8 #include <linux/netfilter/nf_conntrack_h323_asn1.h> 9 #include <net/netfilter/nf_conntrack_expect.h> 10 #include <uapi/linux/netfilter/nf_conntrack_tuple_common.h> 11 12 #define RAS_PORT 1719 13 #define Q931_PORT 1720 14 #define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */ 15 16 /* This structure exists only once per master */ 17 struct nf_ct_h323_master { 18 19 /* Original and NATed Q.931 or H.245 signal ports */ 20 __be16 sig_port[IP_CT_DIR_MAX]; 21 22 /* Original and NATed RTP ports */ 23 __be16 rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX]; 24 25 union { 26 /* RAS connection timeout */ 27 u_int32_t timeout; 28 29 /* Next TPKT length (for separate TPKT header and data) */ 30 u_int16_t tpkt_len[IP_CT_DIR_MAX]; 31 }; 32 }; 33 34 int get_h225_addr(struct nf_conn *ct, unsigned char *data, 35 TransportAddress *taddr, union nf_inet_addr *addr, 36 __be16 *port); 37 void nf_conntrack_h245_expect(struct nf_conn *new, 38 struct nf_conntrack_expect *this); 39 void nf_conntrack_q931_expect(struct nf_conn *new, 40 struct nf_conntrack_expect *this); 41 extern int (*set_h245_addr_hook) (struct sk_buff *skb, unsigned int protoff, 42 unsigned char **data, int dataoff, 43 H245_TransportAddress *taddr, 44 union nf_inet_addr *addr, 45 __be16 port); 46 extern int (*set_h225_addr_hook) (struct sk_buff *skb, unsigned int protoff, 47 unsigned char **data, int dataoff, 48 TransportAddress *taddr, 49 union nf_inet_addr *addr, 50 __be16 port); 51 extern int (*set_sig_addr_hook) (struct sk_buff *skb, 52 struct nf_conn *ct, 53 enum ip_conntrack_info ctinfo, 54 unsigned int protoff, unsigned char **data, 55 TransportAddress *taddr, int count); 56 extern int (*set_ras_addr_hook) (struct sk_buff *skb, 57 struct nf_conn *ct, 58 enum ip_conntrack_info ctinfo, 59 unsigned int protoff, unsigned char **data, 60 TransportAddress *taddr, int count); 61 extern int (*nat_rtp_rtcp_hook) (struct sk_buff *skb, 62 struct nf_conn *ct, 63 enum ip_conntrack_info ctinfo, 64 unsigned int protoff, unsigned char **data, 65 int dataoff, 66 H245_TransportAddress *taddr, 67 __be16 port, __be16 rtp_port, 68 struct nf_conntrack_expect *rtp_exp, 69 struct nf_conntrack_expect *rtcp_exp); 70 extern int (*nat_t120_hook) (struct sk_buff *skb, struct nf_conn *ct, 71 enum ip_conntrack_info ctinfo, 72 unsigned int protoff, 73 unsigned char **data, int dataoff, 74 H245_TransportAddress *taddr, __be16 port, 75 struct nf_conntrack_expect *exp); 76 extern int (*nat_h245_hook) (struct sk_buff *skb, struct nf_conn *ct, 77 enum ip_conntrack_info ctinfo, 78 unsigned int protoff, 79 unsigned char **data, int dataoff, 80 TransportAddress *taddr, __be16 port, 81 struct nf_conntrack_expect *exp); 82 extern int (*nat_callforwarding_hook) (struct sk_buff *skb, 83 struct nf_conn *ct, 84 enum ip_conntrack_info ctinfo, 85 unsigned int protoff, 86 unsigned char **data, int dataoff, 87 TransportAddress *taddr, 88 __be16 port, 89 struct nf_conntrack_expect *exp); 90 extern int (*nat_q931_hook) (struct sk_buff *skb, struct nf_conn *ct, 91 enum ip_conntrack_info ctinfo, 92 unsigned int protoff, 93 unsigned char **data, TransportAddress *taddr, 94 int idx, __be16 port, 95 struct nf_conntrack_expect *exp); 96 97 #endif 98