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>
This commit is contained in:
committed by
David S. Miller
parent
f350a0a873
commit
a3433f35a5
@@ -736,27 +736,19 @@ static bool tcp_in_window(const struct nf_conn *ct,
|
||||
return res;
|
||||
}
|
||||
|
||||
#define TH_FIN 0x01
|
||||
#define TH_SYN 0x02
|
||||
#define TH_RST 0x04
|
||||
#define TH_PUSH 0x08
|
||||
#define TH_ACK 0x10
|
||||
#define TH_URG 0x20
|
||||
#define TH_ECE 0x40
|
||||
#define TH_CWR 0x80
|
||||
|
||||
/* table of valid flag combinations - PUSH, ECE and CWR are always valid */
|
||||
static const u8 tcp_valid_flags[(TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG) + 1] =
|
||||
static const u8 tcp_valid_flags[(TCPHDR_FIN|TCPHDR_SYN|TCPHDR_RST|TCPHDR_ACK|
|
||||
TCPHDR_URG) + 1] =
|
||||
{
|
||||
[TH_SYN] = 1,
|
||||
[TH_SYN|TH_URG] = 1,
|
||||
[TH_SYN|TH_ACK] = 1,
|
||||
[TH_RST] = 1,
|
||||
[TH_RST|TH_ACK] = 1,
|
||||
[TH_FIN|TH_ACK] = 1,
|
||||
[TH_FIN|TH_ACK|TH_URG] = 1,
|
||||
[TH_ACK] = 1,
|
||||
[TH_ACK|TH_URG] = 1,
|
||||
[TCPHDR_SYN] = 1,
|
||||
[TCPHDR_SYN|TCPHDR_URG] = 1,
|
||||
[TCPHDR_SYN|TCPHDR_ACK] = 1,
|
||||
[TCPHDR_RST] = 1,
|
||||
[TCPHDR_RST|TCPHDR_ACK] = 1,
|
||||
[TCPHDR_FIN|TCPHDR_ACK] = 1,
|
||||
[TCPHDR_FIN|TCPHDR_ACK|TCPHDR_URG] = 1,
|
||||
[TCPHDR_ACK] = 1,
|
||||
[TCPHDR_ACK|TCPHDR_URG] = 1,
|
||||
};
|
||||
|
||||
/* 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,
|
||||
}
|
||||
|
||||
/* Check TCP flags. */
|
||||
tcpflags = (((u_int8_t *)th)[13] & ~(TH_ECE|TH_CWR|TH_PUSH));
|
||||
tcpflags = (tcp_flag_byte(th) & ~(TCPHDR_ECE|TCPHDR_CWR|TCPHDR_PSH));
|
||||
if (!tcp_valid_flags[tcpflags]) {
|
||||
if (LOG_INVALID(net, IPPROTO_TCP))
|
||||
nf_log_packet(pf, 0, skb, NULL, NULL, NULL,
|
||||
|
@@ -220,15 +220,13 @@ tcpmss_tg6(struct sk_buff *skb, const struct xt_action_param *par)
|
||||
}
|
||||
#endif
|
||||
|
||||
#define TH_SYN 0x02
|
||||
|
||||
/* Must specify -p tcp --syn */
|
||||
static inline bool find_syn_match(const struct xt_entry_match *m)
|
||||
{
|
||||
const struct xt_tcp *tcpinfo = (const struct xt_tcp *)m->data;
|
||||
|
||||
if (strcmp(m->u.kernel.match->name, "tcp") == 0 &&
|
||||
tcpinfo->flg_cmp & TH_SYN &&
|
||||
tcpinfo->flg_cmp & TCPHDR_SYN &&
|
||||
!(tcpinfo->invflags & XT_TCP_INV_FLAGS))
|
||||
return true;
|
||||
|
||||
|
Reference in New Issue
Block a user