diff options
| author | Patrick McHardy <kaber@trash.net> | 2013-07-28 16:54:10 -0400 |
|---|---|---|
| committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-07-31 13:54:51 -0400 |
| commit | 2d89c68ac78ae432038ef23371d2fa949d725d43 (patch) | |
| tree | 9eb19fc7550976ff633849e95c752a34f19df4f2 /include | |
| parent | 0658cdc8f3babb4a441f5a803a0b644fafcbf9ef (diff) | |
netfilter: nf_nat: change sequence number adjustments to 32 bits
Using 16 bits is too small, when many adjustments happen the offsets might
overflow and break the connection.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/netfilter.h | 2 | ||||
| -rw-r--r-- | include/net/netfilter/nf_conntrack.h | 2 | ||||
| -rw-r--r-- | include/net/netfilter/nf_nat.h | 2 | ||||
| -rw-r--r-- | include/net/netfilter/nf_nat_helper.h | 6 |
4 files changed, 6 insertions, 6 deletions
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index f4bbf2cd22d8..655d5d198d49 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h | |||
| @@ -330,7 +330,7 @@ extern struct nfq_ct_hook __rcu *nfq_ct_hook; | |||
| 330 | 330 | ||
| 331 | struct nfq_ct_nat_hook { | 331 | struct nfq_ct_nat_hook { |
| 332 | void (*seq_adjust)(struct sk_buff *skb, struct nf_conn *ct, | 332 | void (*seq_adjust)(struct sk_buff *skb, struct nf_conn *ct, |
| 333 | u32 ctinfo, int off); | 333 | u32 ctinfo, s32 off); |
| 334 | }; | 334 | }; |
| 335 | extern struct nfq_ct_nat_hook __rcu *nfq_ct_nat_hook; | 335 | extern struct nfq_ct_nat_hook __rcu *nfq_ct_nat_hook; |
| 336 | #else | 336 | #else |
diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 939aced35a02..e5eb8b62538c 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h | |||
| @@ -234,7 +234,7 @@ static inline bool nf_ct_kill(struct nf_conn *ct) | |||
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | /* These are for NAT. Icky. */ | 236 | /* These are for NAT. Icky. */ |
| 237 | extern s16 (*nf_ct_nat_offset)(const struct nf_conn *ct, | 237 | extern s32 (*nf_ct_nat_offset)(const struct nf_conn *ct, |
| 238 | enum ip_conntrack_dir dir, | 238 | enum ip_conntrack_dir dir, |
| 239 | u32 seq); | 239 | u32 seq); |
| 240 | 240 | ||
diff --git a/include/net/netfilter/nf_nat.h b/include/net/netfilter/nf_nat.h index ad14a799fd2e..e2441413675c 100644 --- a/include/net/netfilter/nf_nat.h +++ b/include/net/netfilter/nf_nat.h | |||
| @@ -19,7 +19,7 @@ struct nf_nat_seq { | |||
| 19 | u_int32_t correction_pos; | 19 | u_int32_t correction_pos; |
| 20 | 20 | ||
| 21 | /* sequence number offset before and after last modification */ | 21 | /* sequence number offset before and after last modification */ |
| 22 | int16_t offset_before, offset_after; | 22 | int32_t offset_before, offset_after; |
| 23 | }; | 23 | }; |
| 24 | 24 | ||
| 25 | #include <linux/list.h> | 25 | #include <linux/list.h> |
diff --git a/include/net/netfilter/nf_nat_helper.h b/include/net/netfilter/nf_nat_helper.h index b4d6bfc2af03..194c34794923 100644 --- a/include/net/netfilter/nf_nat_helper.h +++ b/include/net/netfilter/nf_nat_helper.h | |||
| @@ -41,7 +41,7 @@ extern int nf_nat_mangle_udp_packet(struct sk_buff *skb, | |||
| 41 | 41 | ||
| 42 | extern void nf_nat_set_seq_adjust(struct nf_conn *ct, | 42 | extern void nf_nat_set_seq_adjust(struct nf_conn *ct, |
| 43 | enum ip_conntrack_info ctinfo, | 43 | enum ip_conntrack_info ctinfo, |
| 44 | __be32 seq, s16 off); | 44 | __be32 seq, s32 off); |
| 45 | extern int nf_nat_seq_adjust(struct sk_buff *skb, | 45 | extern int nf_nat_seq_adjust(struct sk_buff *skb, |
| 46 | struct nf_conn *ct, | 46 | struct nf_conn *ct, |
| 47 | enum ip_conntrack_info ctinfo, | 47 | enum ip_conntrack_info ctinfo, |
| @@ -56,11 +56,11 @@ extern int (*nf_nat_seq_adjust_hook)(struct sk_buff *skb, | |||
| 56 | extern void nf_nat_follow_master(struct nf_conn *ct, | 56 | extern void nf_nat_follow_master(struct nf_conn *ct, |
| 57 | struct nf_conntrack_expect *this); | 57 | struct nf_conntrack_expect *this); |
| 58 | 58 | ||
| 59 | extern s16 nf_nat_get_offset(const struct nf_conn *ct, | 59 | extern s32 nf_nat_get_offset(const struct nf_conn *ct, |
| 60 | enum ip_conntrack_dir dir, | 60 | enum ip_conntrack_dir dir, |
| 61 | u32 seq); | 61 | u32 seq); |
| 62 | 62 | ||
| 63 | extern void nf_nat_tcp_seq_adjust(struct sk_buff *skb, struct nf_conn *ct, | 63 | extern void nf_nat_tcp_seq_adjust(struct sk_buff *skb, struct nf_conn *ct, |
| 64 | u32 dir, int off); | 64 | u32 dir, s32 off); |
| 65 | 65 | ||
| 66 | #endif | 66 | #endif |
