Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 1 | #ifndef _NF_CONNTRACK_FTP_H |
| 2 | #define _NF_CONNTRACK_FTP_H |
| 3 | /* FTP tracking. */ |
| 4 | |
| 5 | /* This enum is exposed to userspace */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 6 | enum nf_ct_ftp_type |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 7 | { |
| 8 | /* PORT command from client */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 9 | NF_CT_FTP_PORT, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 10 | /* PASV response from server */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 11 | NF_CT_FTP_PASV, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 12 | /* EPRT command from client */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 13 | NF_CT_FTP_EPRT, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 14 | /* EPSV response from server */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 15 | NF_CT_FTP_EPSV, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 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 */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 24 | struct nf_ct_ftp_master { |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 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 | |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 31 | struct nf_conntrack_expect; |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 32 | |
| 33 | /* For NAT to hook in when we find a packet which describes what other |
| 34 | * connection we should expect. */ |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 35 | extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff **pskb, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 36 | enum ip_conntrack_info ctinfo, |
Jozsef Kadlecsik | 55a7332 | 2006-12-02 22:07:44 -0800 | [diff] [blame] | 37 | enum nf_ct_ftp_type type, |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 38 | unsigned int matchoff, |
| 39 | unsigned int matchlen, |
Patrick McHardy | 25b86e0 | 2007-05-24 16:41:50 -0700 | [diff] [blame] | 40 | struct nf_conntrack_expect *exp); |
Yasuyuki Kozakai | 9fb9cbb | 2005-11-09 16:38:16 -0800 | [diff] [blame] | 41 | #endif /* __KERNEL__ */ |
| 42 | |
| 43 | #endif /* _NF_CONNTRACK_FTP_H */ |