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