[NETFILTER]: Convert old checksum helper names

Kill the defines again, convert to the new checksum helper names and
remove the dependency of NET_ACT_NAT on NETFILTER.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Patrick McHardy 2007-11-30 01:17:11 +11:00 committed by David S. Miller
parent a99a00cf1a
commit be0ea7d5da
12 changed files with 40 additions and 45 deletions

View File

@ -298,11 +298,6 @@ extern void nf_invalidate_cache(int pf);
Returns true or false. */ Returns true or false. */
extern int skb_make_writable(struct sk_buff *skb, unsigned int writable_len); extern int skb_make_writable(struct sk_buff *skb, unsigned int writable_len);
#define nf_csum_replace4 csum_replace4
#define nf_csum_replace2 csum_replace2
#define nf_proto_csum_replace4 inet_proto_csum_replace4
#define nf_proto_csum_replace2 inet_proto_csum_replace2
struct nf_afinfo { struct nf_afinfo {
unsigned short family; unsigned short family;
__sum16 (*checksum)(struct sk_buff *skb, unsigned int hook, __sum16 (*checksum)(struct sk_buff *skb, unsigned int hook,

View File

@ -38,7 +38,7 @@ set_ect_ip(struct sk_buff *skb, const struct ipt_ECN_info *einfo)
oldtos = iph->tos; oldtos = iph->tos;
iph->tos &= ~IPT_ECN_IP_MASK; iph->tos &= ~IPT_ECN_IP_MASK;
iph->tos |= (einfo->ip_ect & IPT_ECN_IP_MASK); iph->tos |= (einfo->ip_ect & IPT_ECN_IP_MASK);
nf_csum_replace2(&iph->check, htons(oldtos), htons(iph->tos)); csum_replace2(&iph->check, htons(oldtos), htons(iph->tos));
} }
return true; return true;
} }
@ -71,8 +71,8 @@ set_ect_tcp(struct sk_buff *skb, const struct ipt_ECN_info *einfo)
if (einfo->operation & IPT_ECN_OP_SET_CWR) if (einfo->operation & IPT_ECN_OP_SET_CWR)
tcph->cwr = einfo->proto.tcp.cwr; tcph->cwr = einfo->proto.tcp.cwr;
nf_proto_csum_replace2(&tcph->check, skb, inet_proto_csum_replace2(&tcph->check, skb,
oldval, ((__be16 *)tcph)[6], 0); oldval, ((__be16 *)tcph)[6], 0);
return true; return true;
} }

View File

@ -38,7 +38,7 @@ target(struct sk_buff *skb,
iph = ip_hdr(skb); iph = ip_hdr(skb);
oldtos = iph->tos; oldtos = iph->tos;
iph->tos = (iph->tos & IPTOS_PREC_MASK) | tosinfo->tos; iph->tos = (iph->tos & IPTOS_PREC_MASK) | tosinfo->tos;
nf_csum_replace2(&iph->check, htons(oldtos), htons(iph->tos)); csum_replace2(&iph->check, htons(oldtos), htons(iph->tos));
} }
return XT_CONTINUE; return XT_CONTINUE;
} }

View File

@ -54,8 +54,8 @@ ipt_ttl_target(struct sk_buff *skb,
} }
if (new_ttl != iph->ttl) { if (new_ttl != iph->ttl) {
nf_csum_replace2(&iph->check, htons(iph->ttl << 8), csum_replace2(&iph->check, htons(iph->ttl << 8),
htons(new_ttl << 8)); htons(new_ttl << 8));
iph->ttl = new_ttl; iph->ttl = new_ttl;
} }

View File

@ -372,10 +372,10 @@ manip_pkt(u_int16_t proto,
iph = (void *)skb->data + iphdroff; iph = (void *)skb->data + iphdroff;
if (maniptype == IP_NAT_MANIP_SRC) { if (maniptype == IP_NAT_MANIP_SRC) {
nf_csum_replace4(&iph->check, iph->saddr, target->src.u3.ip); csum_replace4(&iph->check, iph->saddr, target->src.u3.ip);
iph->saddr = target->src.u3.ip; iph->saddr = target->src.u3.ip;
} else { } else {
nf_csum_replace4(&iph->check, iph->daddr, target->dst.u3.ip); csum_replace4(&iph->check, iph->daddr, target->dst.u3.ip);
iph->daddr = target->dst.u3.ip; iph->daddr = target->dst.u3.ip;
} }
return 1; return 1;

View File

@ -180,8 +180,8 @@ nf_nat_mangle_tcp_packet(struct sk_buff *skb,
datalen, 0)); datalen, 0));
} }
} else } else
nf_proto_csum_replace2(&tcph->check, skb, inet_proto_csum_replace2(&tcph->check, skb,
htons(oldlen), htons(datalen), 1); htons(oldlen), htons(datalen), 1);
if (rep_len != match_len) { if (rep_len != match_len) {
set_bit(IPS_SEQ_ADJUST_BIT, &ct->status); set_bit(IPS_SEQ_ADJUST_BIT, &ct->status);
@ -270,8 +270,8 @@ nf_nat_mangle_udp_packet(struct sk_buff *skb,
udph->check = CSUM_MANGLED_0; udph->check = CSUM_MANGLED_0;
} }
} else } else
nf_proto_csum_replace2(&udph->check, skb, inet_proto_csum_replace2(&udph->check, skb,
htons(oldlen), htons(datalen), 1); htons(oldlen), htons(datalen), 1);
return 1; return 1;
} }
@ -310,10 +310,10 @@ sack_adjust(struct sk_buff *skb,
ntohl(sack->start_seq), new_start_seq, ntohl(sack->start_seq), new_start_seq,
ntohl(sack->end_seq), new_end_seq); ntohl(sack->end_seq), new_end_seq);
nf_proto_csum_replace4(&tcph->check, skb, inet_proto_csum_replace4(&tcph->check, skb,
sack->start_seq, new_start_seq, 0); sack->start_seq, new_start_seq, 0);
nf_proto_csum_replace4(&tcph->check, skb, inet_proto_csum_replace4(&tcph->check, skb,
sack->end_seq, new_end_seq, 0); sack->end_seq, new_end_seq, 0);
sack->start_seq = new_start_seq; sack->start_seq = new_start_seq;
sack->end_seq = new_end_seq; sack->end_seq = new_end_seq;
sackoff += sizeof(*sack); sackoff += sizeof(*sack);
@ -397,8 +397,8 @@ nf_nat_seq_adjust(struct sk_buff *skb,
else else
newack = htonl(ntohl(tcph->ack_seq) - other_way->offset_before); newack = htonl(ntohl(tcph->ack_seq) - other_way->offset_before);
nf_proto_csum_replace4(&tcph->check, skb, tcph->seq, newseq, 0); inet_proto_csum_replace4(&tcph->check, skb, tcph->seq, newseq, 0);
nf_proto_csum_replace4(&tcph->check, skb, tcph->ack_seq, newack, 0); inet_proto_csum_replace4(&tcph->check, skb, tcph->ack_seq, newack, 0);
pr_debug("Adjusting sequence number from %u->%u, ack from %u->%u\n", pr_debug("Adjusting sequence number from %u->%u, ack from %u->%u\n",
ntohl(tcph->seq), ntohl(newseq), ntohl(tcph->ack_seq), ntohl(tcph->seq), ntohl(newseq), ntohl(tcph->ack_seq),

View File

@ -65,8 +65,8 @@ icmp_manip_pkt(struct sk_buff *skb,
return 0; return 0;
hdr = (struct icmphdr *)(skb->data + hdroff); hdr = (struct icmphdr *)(skb->data + hdroff);
nf_proto_csum_replace2(&hdr->checksum, skb, inet_proto_csum_replace2(&hdr->checksum, skb,
hdr->un.echo.id, tuple->src.u.icmp.id, 0); hdr->un.echo.id, tuple->src.u.icmp.id, 0);
hdr->un.echo.id = tuple->src.u.icmp.id; hdr->un.echo.id = tuple->src.u.icmp.id;
return 1; return 1;
} }

View File

@ -132,8 +132,8 @@ tcp_manip_pkt(struct sk_buff *skb,
if (hdrsize < sizeof(*hdr)) if (hdrsize < sizeof(*hdr))
return 1; return 1;
nf_proto_csum_replace4(&hdr->check, skb, oldip, newip, 1); inet_proto_csum_replace4(&hdr->check, skb, oldip, newip, 1);
nf_proto_csum_replace2(&hdr->check, skb, oldport, newport, 0); inet_proto_csum_replace2(&hdr->check, skb, oldport, newport, 0);
return 1; return 1;
} }

View File

@ -117,9 +117,9 @@ udp_manip_pkt(struct sk_buff *skb,
portptr = &hdr->dest; portptr = &hdr->dest;
} }
if (hdr->check || skb->ip_summed == CHECKSUM_PARTIAL) { if (hdr->check || skb->ip_summed == CHECKSUM_PARTIAL) {
nf_proto_csum_replace4(&hdr->check, skb, oldip, newip, 1); inet_proto_csum_replace4(&hdr->check, skb, oldip, newip, 1);
nf_proto_csum_replace2(&hdr->check, skb, *portptr, newport, inet_proto_csum_replace2(&hdr->check, skb, *portptr, newport,
0); 0);
if (!hdr->check) if (!hdr->check)
hdr->check = CSUM_MANGLED_0; hdr->check = CSUM_MANGLED_0;
} }

View File

@ -95,8 +95,9 @@ tcpmss_mangle_packet(struct sk_buff *skb,
opt[i+2] = (newmss & 0xff00) >> 8; opt[i+2] = (newmss & 0xff00) >> 8;
opt[i+3] = newmss & 0x00ff; opt[i+3] = newmss & 0x00ff;
nf_proto_csum_replace2(&tcph->check, skb, inet_proto_csum_replace2(&tcph->check, skb,
htons(oldmss), htons(newmss), 0); htons(oldmss), htons(newmss),
0);
return 0; return 0;
} }
} }
@ -117,19 +118,19 @@ tcpmss_mangle_packet(struct sk_buff *skb,
opt = (u_int8_t *)tcph + sizeof(struct tcphdr); opt = (u_int8_t *)tcph + sizeof(struct tcphdr);
memmove(opt + TCPOLEN_MSS, opt, tcplen - sizeof(struct tcphdr)); memmove(opt + TCPOLEN_MSS, opt, tcplen - sizeof(struct tcphdr));
nf_proto_csum_replace2(&tcph->check, skb, inet_proto_csum_replace2(&tcph->check, skb,
htons(tcplen), htons(tcplen + TCPOLEN_MSS), 1); htons(tcplen), htons(tcplen + TCPOLEN_MSS), 1);
opt[0] = TCPOPT_MSS; opt[0] = TCPOPT_MSS;
opt[1] = TCPOLEN_MSS; opt[1] = TCPOLEN_MSS;
opt[2] = (newmss & 0xff00) >> 8; opt[2] = (newmss & 0xff00) >> 8;
opt[3] = newmss & 0x00ff; opt[3] = newmss & 0x00ff;
nf_proto_csum_replace4(&tcph->check, skb, 0, *((__be32 *)opt), 0); inet_proto_csum_replace4(&tcph->check, skb, 0, *((__be32 *)opt), 0);
oldval = ((__be16 *)tcph)[6]; oldval = ((__be16 *)tcph)[6];
tcph->doff += TCPOLEN_MSS/4; tcph->doff += TCPOLEN_MSS/4;
nf_proto_csum_replace2(&tcph->check, skb, inet_proto_csum_replace2(&tcph->check, skb,
oldval, ((__be16 *)tcph)[6], 0); oldval, ((__be16 *)tcph)[6], 0);
return TCPOLEN_MSS; return TCPOLEN_MSS;
} }
@ -152,7 +153,7 @@ xt_tcpmss_target4(struct sk_buff *skb,
if (ret > 0) { if (ret > 0) {
iph = ip_hdr(skb); iph = ip_hdr(skb);
newlen = htons(ntohs(iph->tot_len) + ret); newlen = htons(ntohs(iph->tot_len) + ret);
nf_csum_replace2(&iph->check, iph->tot_len, newlen); csum_replace2(&iph->check, iph->tot_len, newlen);
iph->tot_len = newlen; iph->tot_len = newlen;
} }
return XT_CONTINUE; return XT_CONTINUE;

View File

@ -445,7 +445,6 @@ config NET_ACT_IPT
config NET_ACT_NAT config NET_ACT_NAT
tristate "Stateless NAT" tristate "Stateless NAT"
depends on NET_CLS_ACT depends on NET_CLS_ACT
select NETFILTER
---help--- ---help---
Say Y here to do stateless NAT on IPv4 packets. You should use Say Y here to do stateless NAT on IPv4 packets. You should use
netfilter for NAT unless you know what you are doing. netfilter for NAT unless you know what you are doing.

View File

@ -151,7 +151,7 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
else else
iph->daddr = new_addr; iph->daddr = new_addr;
nf_csum_replace4(&iph->check, addr, new_addr); csum_replace4(&iph->check, addr, new_addr);
} }
ihl = iph->ihl * 4; ihl = iph->ihl * 4;
@ -169,7 +169,7 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
goto drop; goto drop;
tcph = (void *)(skb_network_header(skb) + ihl); tcph = (void *)(skb_network_header(skb) + ihl);
nf_proto_csum_replace4(&tcph->check, skb, addr, new_addr, 1); inet_proto_csum_replace4(&tcph->check, skb, addr, new_addr, 1);
break; break;
} }
case IPPROTO_UDP: case IPPROTO_UDP:
@ -184,8 +184,8 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
udph = (void *)(skb_network_header(skb) + ihl); udph = (void *)(skb_network_header(skb) + ihl);
if (udph->check || skb->ip_summed == CHECKSUM_PARTIAL) { if (udph->check || skb->ip_summed == CHECKSUM_PARTIAL) {
nf_proto_csum_replace4(&udph->check, skb, addr, inet_proto_csum_replace4(&udph->check, skb, addr,
new_addr, 1); new_addr, 1);
if (!udph->check) if (!udph->check)
udph->check = CSUM_MANGLED_0; udph->check = CSUM_MANGLED_0;
} }
@ -232,8 +232,8 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
else else
iph->saddr = new_addr; iph->saddr = new_addr;
nf_proto_csum_replace4(&icmph->checksum, skb, addr, new_addr, inet_proto_csum_replace4(&icmph->checksum, skb, addr, new_addr,
1); 1);
break; break;
} }
default: default: