: Check TCP checksum in ipt_REJECT
Subsystems (2)
PATCH 7/7 : Check TCP checksum in ipt_REJECT
[NETFILTER]: Check TCP checksum in ipt_REJECT
Signed-off-by Patrick McHardy <[email protected]>
---
commit d7edb3501fc521edf0d856d30fd6bad8019ed369
tree 44f3b9cbb38d0be5f40c676ed87dcdf3346213cc
parent f324916223389c944e50fa8b2c514bacf3f460c5
author Patrick McHardy <[email protected]> Mon, 20 Jun 2005 18:56:16 committer Patrick McHardy <[email protected]> Mon, 20 Jun 2005 18:56:16
net/ipv4/netfilter/ipt_REJECT.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-)
net/ipv4/netfilter/ipt_REJECT.c +12 -1
@@ -104,10 +104,12 @@ static inline struct rtable *route_reverstatic void send_reset (struct sk_buff *oldskb,int hook) {struct sk_buff *nskb; +struct iphdr *iph = oldskb->nh.iph;struct tcphdr _otcph, *oth, *tcph;struct rtable *rt;u_int16_t tmp_port;u_int32_t tmp_addr; +unsigned int tcplen;int needs_ack;int hh_len;
@@ -124,7 +126,16 @@ static void send_reset(struct sk_buff *oif (oth->rst)return ; -/* FIXME: Check checksum --RR */ +/* Check checksum */ + tcplen = oldskb->len - iph->ihl *4 ; +if (((hook !=NF_IP_LOCAL_IN && oldskb->ip_summed !=CHECKSUM_HW ) || + (hook ==NF_IP_LOCAL_IN && + oldskb->ip_summed !=CHECKSUM_UNNECESSARY )) && +csum_tcpudp_magic (iph->saddr, iph->daddr, tcplen,IPPROTO_TCP , + oldskb->ip_summed ==CHECKSUM_HW ? oldskb->csum : +skb_checksum (oldskb, iph->ihl *4 , tcplen,0 ))) +return ; +if ((rt =route_reverse (oldskb, oth, hook)) ==NULL )return ;