diff options
author | Changli Gao <xiaosuo@gmail.com> | 2010-06-12 10:01:43 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-15 14:56:19 -0400 |
commit | a3433f35a55f7604742cae620c6dc6edfc70db6a (patch) | |
tree | 4ce6d169e402c03a48319a9db4055cc31df00d42 /net/netfilter | |
parent | f350a0a87374418635689471606454abc7beaa3a (diff) |
tcp: unify tcp flag macros
unify tcp flag macros: TCPHDR_FIN, TCPHDR_SYN, TCPHDR_RST, TCPHDR_PSH,
TCPHDR_ACK, TCPHDR_URG, TCPHDR_ECE and TCPHDR_CWR. TCBCB_FLAG_* are replaced
with the corresponding TCPHDR_*.
Signed-off-by: Changli Gao <xiaosuo@gmail.com>
----
include/net/tcp.h | 24 ++++++-------
net/ipv4/tcp.c | 8 ++--
net/ipv4/tcp_input.c | 2 -
net/ipv4/tcp_output.c | 59 ++++++++++++++++-----------------
net/netfilter/nf_conntrack_proto_tcp.c | 32 ++++++-----------
net/netfilter/xt_TCPMSS.c | 4 --
6 files changed, 58 insertions(+), 71 deletions(-)
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/netfilter')
-rw-r--r-- | net/netfilter/nf_conntrack_proto_tcp.c | 32 | ||||
-rw-r--r-- | net/netfilter/xt_TCPMSS.c | 4 |
2 files changed, 13 insertions, 23 deletions
diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c index 9dd8cd4fb6e6..802dbffae8b4 100644 --- a/net/netfilter/nf_conntrack_proto_tcp.c +++ b/net/netfilter/nf_conntrack_proto_tcp.c | |||
@@ -736,27 +736,19 @@ static bool tcp_in_window(const struct nf_conn *ct, | |||
736 | return res; | 736 | return res; |
737 | } | 737 | } |
738 | 738 | ||
739 | #define TH_FIN 0x01 | ||
740 | #define TH_SYN 0x02 | ||
741 | #define TH_RST 0x04 | ||
742 | #define TH_PUSH 0x08 | ||
743 | #define TH_ACK 0x10 | ||
744 | #define TH_URG 0x20 | ||
745 | #define TH_ECE 0x40 | ||
746 | #define TH_CWR 0x80 | ||
747 | |||
748 | /* table of valid flag combinations - PUSH, ECE and CWR are always valid */ | 739 | /* table of valid flag combinations - PUSH, ECE and CWR are always valid */ |
749 | static const u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG) + 1] = | 740 | static const u8 tcp_valid_flags[(TCPHDR_FIN|TCPHDR_SYN|TCPHDR_RST|TCPHDR_ACK| |
741 | TCPHDR_URG) + 1] = | ||
750 | { | 742 | { |
751 | [TH_SYN] = 1, | 743 | [TCPHDR_SYN] = 1, |
752 | [TH_SYN|TH_URG] = 1, | 744 | [TCPHDR_SYN|TCPHDR_URG] = 1, |
753 | [TH_SYN|TH_ACK] = 1, | 745 | [TCPHDR_SYN|TCPHDR_ACK] = 1, |
754 | [TH_RST] = 1, | 746 | [TCPHDR_RST] = 1, |
755 | [TH_RST|TH_ACK] = 1, | 747 | [TCPHDR_RST|TCPHDR_ACK] = 1, |
756 | [TH_FIN|TH_ACK] = 1, | 748 | [TCPHDR_FIN|TCPHDR_ACK] = 1, |
757 | [TH_FIN|TH_ACK|TH_URG] = 1, | 749 | [TCPHDR_FIN|TCPHDR_ACK|TCPHDR_URG] = 1, |
758 | [TH_ACK] = 1, | 750 | [TCPHDR_ACK] = 1, |
759 | [TH_ACK|TH_URG] = 1, | 751 | [TCPHDR_ACK|TCPHDR_URG] = 1, |
760 | }; | 752 | }; |
761 | 753 | ||
762 | /* Protect conntrack agaist broken packets. Code taken from ipt_unclean.c. */ | 754 | /* Protect conntrack agaist broken packets. Code taken from ipt_unclean.c. */ |
@@ -803,7 +795,7 @@ static int tcp_error(struct net *net, struct nf_conn *tmpl, | |||
803 | } | 795 | } |
804 | 796 | ||
805 | /* Check TCP flags. */ | 797 | /* Check TCP flags. */ |
806 | tcpflags = (((u_int8_t *)th)[13] & ~(TH_ECE|TH_CWR|TH_PUSH)); | 798 | tcpflags = (tcp_flag_byte(th) & ~(TCPHDR_ECE|TCPHDR_CWR|TCPHDR_PSH)); |
807 | if (!tcp_valid_flags[tcpflags]) { | 799 | if (!tcp_valid_flags[tcpflags]) { |
808 | if (LOG_INVALID(net, IPPROTO_TCP)) | 800 | if (LOG_INVALID(net, IPPROTO_TCP)) |
809 | nf_log_packet(pf, 0, skb, NULL, NULL, NULL, | 801 | nf_log_packet(pf, 0, skb, NULL, NULL, NULL, |
diff --git a/net/netfilter/xt_TCPMSS.c b/net/netfilter/xt_TCPMSS.c index 1841388c770a..eb81c380da1b 100644 --- a/net/netfilter/xt_TCPMSS.c +++ b/net/netfilter/xt_TCPMSS.c | |||
@@ -220,15 +220,13 @@ tcpmss_tg6(struct sk_buff *skb, const struct xt_action_param *par) | |||
220 | } | 220 | } |
221 | #endif | 221 | #endif |
222 | 222 | ||
223 | #define TH_SYN 0x02 | ||
224 | |||
225 | /* Must specify -p tcp --syn */ | 223 | /* Must specify -p tcp --syn */ |
226 | static inline bool find_syn_match(const struct xt_entry_match *m) | 224 | static inline bool find_syn_match(const struct xt_entry_match *m) |
227 | { | 225 | { |
228 | const struct xt_tcp *tcpinfo = (const struct xt_tcp *)m->data; | 226 | const struct xt_tcp *tcpinfo = (const struct xt_tcp *)m->data; |
229 | 227 | ||
230 | if (strcmp(m->u.kernel.match->name, "tcp") == 0 && | 228 | if (strcmp(m->u.kernel.match->name, "tcp") == 0 && |
231 | tcpinfo->flg_cmp & TH_SYN && | 229 | tcpinfo->flg_cmp & TCPHDR_SYN && |
232 | !(tcpinfo->invflags & XT_TCP_INV_FLAGS)) | 230 | !(tcpinfo->invflags & XT_TCP_INV_FLAGS)) |
233 | return true; | 231 | return true; |
234 | 232 | ||