1#ifndef _NF_CONNTRACK_FTP_H
2#define _NF_CONNTRACK_FTP_H
3/* FTP tracking. */
4
5/* This enum is exposed to userspace */
6enum nf_ct_ftp_type
7{
8	/* PORT command from client */
9	NF_CT_FTP_PORT,
10	/* PASV response from server */
11	NF_CT_FTP_PASV,
12	/* EPRT command from client */
13	NF_CT_FTP_EPRT,
14	/* EPSV response from server */
15	NF_CT_FTP_EPSV,
16};
17
18#ifdef __KERNEL__
19
20#define FTP_PORT	21
21
22#define NUM_SEQ_TO_REMEMBER 2
23/* This structure exists only once per master */
24struct nf_ct_ftp_master {
25	/* Valid seq positions for cmd matching after newline */
26	u_int32_t seq_aft_nl[IP_CT_DIR_MAX][NUM_SEQ_TO_REMEMBER];
27	/* 0 means seq_match_aft_nl not set */
28	int seq_aft_nl_num[IP_CT_DIR_MAX];
29};
30
31struct nf_conntrack_expect;
32
33/* For NAT to hook in when we find a packet which describes what other
34 * connection we should expect. */
35extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff **pskb,
36				       enum ip_conntrack_info ctinfo,
37				       enum nf_ct_ftp_type type,
38				       unsigned int matchoff,
39				       unsigned int matchlen,
40				       struct nf_conntrack_expect *exp);
41#endif /* __KERNEL__ */
42
43#endif /* _NF_CONNTRACK_FTP_H */
44