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