File Index
Files and directories
Sign in
FILE

nf_conntrack_h323.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/netfilter/nf_conntrack_h323.h C
 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 */
17struct 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
34int get_h225_addr(struct nf_conn *ct, unsigned char *data,
35		  TransportAddress *taddr, union nf_inet_addr *addr,
36		  __be16 *port);
37
38struct nfct_h323_nat_hooks {
39	int (*set_h245_addr)(struct sk_buff *skb, unsigned int protoff,
40			     unsigned char **data, int dataoff,
41			     H245_TransportAddress *taddr,
42			     union nf_inet_addr *addr, __be16 port);
43	int (*set_h225_addr)(struct sk_buff *skb, unsigned int protoff,
44			     unsigned char **data, int dataoff,
45			     TransportAddress *taddr,
46			     union nf_inet_addr *addr, __be16 port);
47	int (*set_sig_addr)(struct sk_buff *skb,
48			    struct nf_conn *ct,
49			    enum ip_conntrack_info ctinfo,
50			    unsigned int protoff, unsigned char **data,
51			    TransportAddress *taddr, int count);
52	int (*set_ras_addr)(struct sk_buff *skb,
53			    struct nf_conn *ct,
54			    enum ip_conntrack_info ctinfo,
55			    unsigned int protoff, unsigned char **data,
56			    TransportAddress *taddr, int count);
57	int (*nat_rtp_rtcp)(struct sk_buff *skb,
58			    struct nf_conn *ct,
59			    enum ip_conntrack_info ctinfo,
60			    unsigned int protoff,
61			    unsigned char **data, int dataoff,
62			    H245_TransportAddress *taddr,
63			    __be16 port, __be16 rtp_port,
64			    struct nf_conntrack_expect *rtp_exp,
65			    struct nf_conntrack_expect *rtcp_exp);
66	int (*nat_t120)(struct sk_buff *skb,
67			struct nf_conn *ct,
68			enum ip_conntrack_info ctinfo,
69			unsigned int protoff,
70			unsigned char **data, int dataoff,
71			H245_TransportAddress *taddr, __be16 port,
72			struct nf_conntrack_expect *exp);
73	int (*nat_h245)(struct sk_buff *skb,
74			struct nf_conn *ct,
75			enum ip_conntrack_info ctinfo,
76			unsigned int protoff,
77			unsigned char **data, int dataoff,
78			TransportAddress *taddr, __be16 port,
79			struct nf_conntrack_expect *exp);
80	int (*nat_callforwarding)(struct sk_buff *skb,
81				  struct nf_conn *ct,
82				  enum ip_conntrack_info ctinfo,
83				  unsigned int protoff,
84				  unsigned char **data, int dataoff,
85				  TransportAddress *taddr, __be16 port,
86				  struct nf_conntrack_expect *exp);
87	int (*nat_q931)(struct sk_buff *skb,
88			struct nf_conn *ct,
89			enum ip_conntrack_info ctinfo,
90			unsigned int protoff,
91			unsigned char **data, TransportAddress *taddr, int idx,
92			__be16 port, struct nf_conntrack_expect *exp);
93};
94extern const struct nfct_h323_nat_hooks __rcu *nfct_h323_nat_hook;
95
96#endif
~/ Read-only file preview.