netfilter: nat: remove csum_recalc hook
We can now use direct calls. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
03fe5efc4c
commit
dac3fe7259
|
@ -4,15 +4,14 @@
|
|||
|
||||
struct nf_nat_l3proto {
|
||||
u8 l3proto;
|
||||
|
||||
void (*csum_recalc)(struct sk_buff *skb, u8 proto,
|
||||
void *data, __sum16 *check,
|
||||
int datalen, int oldlen);
|
||||
};
|
||||
|
||||
unsigned int nf_nat_manip_pkt(struct sk_buff *skb, struct nf_conn *ct,
|
||||
enum nf_nat_manip_type mtype,
|
||||
enum ip_conntrack_dir dir);
|
||||
void nf_nat_csum_recalc(struct sk_buff *skb,
|
||||
u8 nfproto, u8 proto, void *data, __sum16 *check,
|
||||
int datalen, int oldlen);
|
||||
|
||||
int nf_nat_l3proto_register(const struct nf_nat_l3proto *);
|
||||
void nf_nat_l3proto_unregister(const struct nf_nat_l3proto *);
|
||||
|
|
|
@ -97,7 +97,6 @@ bool __nf_nat_mangle_tcp_packet(struct sk_buff *skb,
|
|||
const char *rep_buffer,
|
||||
unsigned int rep_len, bool adjust)
|
||||
{
|
||||
const struct nf_nat_l3proto *l3proto;
|
||||
struct tcphdr *tcph;
|
||||
int oldlen, datalen;
|
||||
|
||||
|
@ -117,9 +116,8 @@ bool __nf_nat_mangle_tcp_packet(struct sk_buff *skb,
|
|||
|
||||
datalen = skb->len - protoff;
|
||||
|
||||
l3proto = __nf_nat_l3proto_find(nf_ct_l3num(ct));
|
||||
l3proto->csum_recalc(skb, IPPROTO_TCP, tcph, &tcph->check,
|
||||
datalen, oldlen);
|
||||
nf_nat_csum_recalc(skb, nf_ct_l3num(ct), IPPROTO_TCP,
|
||||
tcph, &tcph->check, datalen, oldlen);
|
||||
|
||||
if (adjust && rep_len != match_len)
|
||||
nf_ct_seqadj_set(ct, ctinfo, tcph->seq,
|
||||
|
@ -149,7 +147,6 @@ nf_nat_mangle_udp_packet(struct sk_buff *skb,
|
|||
const char *rep_buffer,
|
||||
unsigned int rep_len)
|
||||
{
|
||||
const struct nf_nat_l3proto *l3proto;
|
||||
struct udphdr *udph;
|
||||
int datalen, oldlen;
|
||||
|
||||
|
@ -175,9 +172,8 @@ nf_nat_mangle_udp_packet(struct sk_buff *skb,
|
|||
if (!udph->check && skb->ip_summed != CHECKSUM_PARTIAL)
|
||||
return true;
|
||||
|
||||
l3proto = __nf_nat_l3proto_find(nf_ct_l3num(ct));
|
||||
l3proto->csum_recalc(skb, IPPROTO_UDP, udph, &udph->check,
|
||||
datalen, oldlen);
|
||||
nf_nat_csum_recalc(skb, nf_ct_l3num(ct), IPPROTO_TCP,
|
||||
udph, &udph->check, datalen, oldlen);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -535,9 +535,28 @@ static void nf_nat_ipv6_csum_recalc(struct sk_buff *skb,
|
|||
}
|
||||
#endif
|
||||
|
||||
void nf_nat_csum_recalc(struct sk_buff *skb,
|
||||
u8 nfproto, u8 proto, void *data, __sum16 *check,
|
||||
int datalen, int oldlen)
|
||||
{
|
||||
switch (nfproto) {
|
||||
case NFPROTO_IPV4:
|
||||
nf_nat_ipv4_csum_recalc(skb, proto, data, check,
|
||||
datalen, oldlen);
|
||||
return;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
case NFPROTO_IPV6:
|
||||
nf_nat_ipv6_csum_recalc(skb, proto, data, check,
|
||||
datalen, oldlen);
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
WARN_ON_ONCE(1);
|
||||
}
|
||||
|
||||
static const struct nf_nat_l3proto nf_nat_l3proto_ipv4 = {
|
||||
.l3proto = NFPROTO_IPV4,
|
||||
.csum_recalc = nf_nat_ipv4_csum_recalc,
|
||||
};
|
||||
|
||||
int nf_nat_icmp_reply_translation(struct sk_buff *skb,
|
||||
|
@ -788,7 +807,6 @@ void nf_nat_l3proto_exit(void)
|
|||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
static const struct nf_nat_l3proto nf_nat_l3proto_ipv6 = {
|
||||
.l3proto = NFPROTO_IPV6,
|
||||
.csum_recalc = nf_nat_ipv6_csum_recalc,
|
||||
};
|
||||
|
||||
int nf_nat_icmpv6_reply_translation(struct sk_buff *skb,
|
||||
|
|
Loading…
Reference in New Issue