blob: 47727d7546ea63359306180cf340bdc5d4dd61ef [file] [log] [blame]
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08001#ifndef _NF_CONNTRACK_FTP_H
2#define _NF_CONNTRACK_FTP_H
3/* FTP tracking. */
4
5/* This enum is exposed to userspace */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -08006enum nf_ct_ftp_type
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08007{
8 /* PORT command from client */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -08009 NF_CT_FTP_PORT,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080010 /* PASV response from server */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080011 NF_CT_FTP_PASV,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080012 /* EPRT command from client */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080013 NF_CT_FTP_EPRT,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080014 /* EPSV response from server */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080015 NF_CT_FTP_EPSV,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080016};
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 */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080024struct nf_ct_ftp_master {
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080025 /* 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
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080031struct nf_conntrack_expect;
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080032
33/* For NAT to hook in when we find a packet which describes what other
34 * connection we should expect. */
Herbert Xu3db05fe2007-10-15 00:53:15 -070035extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff *skb,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080036 enum ip_conntrack_info ctinfo,
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080037 enum nf_ct_ftp_type type,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080038 unsigned int matchoff,
39 unsigned int matchlen,
Patrick McHardy25b86e02007-05-24 16:41:50 -070040 struct nf_conntrack_expect *exp);
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080041#endif /* __KERNEL__ */
42
43#endif /* _NF_CONNTRACK_FTP_H */