|
@@ -45,6 +45,8 @@ synproxy_send_tcp(const struct synproxy_net *snet,
|
|
struct iphdr *niph, struct tcphdr *nth,
|
|
struct iphdr *niph, struct tcphdr *nth,
|
|
unsigned int tcp_hdr_size)
|
|
unsigned int tcp_hdr_size)
|
|
{
|
|
{
|
|
|
|
+ struct net *net = nf_ct_net(snet->tmpl);
|
|
|
|
+
|
|
nth->check = ~tcp_v4_check(tcp_hdr_size, niph->saddr, niph->daddr, 0);
|
|
nth->check = ~tcp_v4_check(tcp_hdr_size, niph->saddr, niph->daddr, 0);
|
|
nskb->ip_summed = CHECKSUM_PARTIAL;
|
|
nskb->ip_summed = CHECKSUM_PARTIAL;
|
|
nskb->csum_start = (unsigned char *)nth - nskb->head;
|
|
nskb->csum_start = (unsigned char *)nth - nskb->head;
|
|
@@ -52,7 +54,7 @@ synproxy_send_tcp(const struct synproxy_net *snet,
|
|
|
|
|
|
skb_dst_set_noref(nskb, skb_dst(skb));
|
|
skb_dst_set_noref(nskb, skb_dst(skb));
|
|
nskb->protocol = htons(ETH_P_IP);
|
|
nskb->protocol = htons(ETH_P_IP);
|
|
- if (ip_route_me_harder(nskb, RTN_UNSPEC))
|
|
|
|
|
|
+ if (ip_route_me_harder(net, nskb, RTN_UNSPEC))
|
|
goto free_nskb;
|
|
goto free_nskb;
|
|
|
|
|
|
if (nfct) {
|
|
if (nfct) {
|