blob: 5f818b01e0356d7eac8c80762dff87a15483fad8 [file] [log] [blame]
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08001#ifndef _NF_CONNTRACK_FTP_H
2#define _NF_CONNTRACK_FTP_H
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08003
David Howells94d0ec52012-10-09 09:48:54 +01004#include <uapi/linux/netfilter/nf_conntrack_ftp.h>
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08005
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08006
7#define FTP_PORT 21
8
Pablo Neira Ayuso7be54ca2012-09-21 16:52:08 +02009#define NF_CT_FTP_SEQ_PICKUP (1 << 0)
10
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080011#define NUM_SEQ_TO_REMEMBER 2
12/* This structure exists only once per master */
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080013struct nf_ct_ftp_master {
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080014 /* Valid seq positions for cmd matching after newline */
15 u_int32_t seq_aft_nl[IP_CT_DIR_MAX][NUM_SEQ_TO_REMEMBER];
16 /* 0 means seq_match_aft_nl not set */
Pablo Neira Ayuso7be54ca2012-09-21 16:52:08 +020017 u_int16_t seq_aft_nl_num[IP_CT_DIR_MAX];
18 /* pickup sequence tracking, useful for conntrackd */
19 u_int16_t flags[IP_CT_DIR_MAX];
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080020};
21
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080022struct nf_conntrack_expect;
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080023
24/* For NAT to hook in when we find a packet which describes what other
25 * connection we should expect. */
Herbert Xu3db05fe2007-10-15 00:53:15 -070026extern unsigned int (*nf_nat_ftp_hook)(struct sk_buff *skb,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080027 enum ip_conntrack_info ctinfo,
Jozsef Kadlecsik55a73322006-12-02 22:07:44 -080028 enum nf_ct_ftp_type type,
Patrick McHardy051966c2012-08-26 19:14:04 +020029 unsigned int protoff,
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080030 unsigned int matchoff,
31 unsigned int matchlen,
Patrick McHardy25b86e02007-05-24 16:41:50 -070032 struct nf_conntrack_expect *exp);
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080033#endif /* _NF_CONNTRACK_FTP_H */