X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Fpatches-3.7%2F604-netfilter_cisco_794x_iphone.patch;h=210f7fb6b30786a280674a3e4b4c0fd3140a42f8;hb=7d9a07b8551f0a3ec2e5a24c31ea1a60ecac2cad;hp=6aaf71b809fc1cf68ff39c0697267ec26a9165e0;hpb=036cd9c74513d11769363da5f164df1b301b6a71;p=openwrt.git diff --git a/target/linux/generic/patches-3.7/604-netfilter_cisco_794x_iphone.patch b/target/linux/generic/patches-3.7/604-netfilter_cisco_794x_iphone.patch index 6aaf71b809..210f7fb6b3 100644 --- a/target/linux/generic/patches-3.7/604-netfilter_cisco_794x_iphone.patch +++ b/target/linux/generic/patches-3.7/604-netfilter_cisco_794x_iphone.patch @@ -26,7 +26,7 @@ char buffer[INET6_ADDRSTRLEN + sizeof("[]:nnnnn")]; unsigned int buflen; union nf_inet_addr newaddr; -@@ -107,7 +110,8 @@ static int map_addr(struct sk_buff *skb, +@@ -107,7 +108,8 @@ static int map_addr(struct sk_buff *skb, } else if (nf_inet_addr_cmp(&ct->tuplehash[dir].tuple.dst.u3, addr) && ct->tuplehash[dir].tuple.dst.u.udp.port == port) { newaddr = ct->tuplehash[!dir].tuple.src.u3; @@ -36,7 +36,7 @@ } else return 1; -@@ -144,6 +148,7 @@ static unsigned int nf_nat_sip(struct sk +@@ -144,6 +146,7 @@ static unsigned int nf_nat_sip(struct sk enum ip_conntrack_info ctinfo; struct nf_conn *ct = nf_ct_get(skb, &ctinfo); enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo); @@ -44,7 +44,7 @@ unsigned int coff, matchoff, matchlen; enum sip_header_types hdr; union nf_inet_addr addr; -@@ -258,6 +263,20 @@ next: +@@ -258,6 +261,20 @@ next: !map_sip_addr(skb, protoff, dataoff, dptr, datalen, SIP_HDR_TO)) return NF_DROP; @@ -55,17 +55,17 @@ + if (!skb_make_writable(skb, skb->len)) + return NF_DROP; + -+ uh = (struct udphdr *)(skb->data + ip_hdrlen(skb)); ++ uh = (void *)skb->data + protoff; + uh->dest = ct_sip_info->forced_dport; + -+ if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, 0, 0, NULL, 0)) ++ if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, protoff, 0, 0, NULL, 0)) + return NF_DROP; + } + return NF_ACCEPT; } -@@ -311,8 +332,10 @@ static unsigned int nf_nat_sip_expect(st +@@ -311,8 +328,10 @@ static unsigned int nf_nat_sip_expect(st enum ip_conntrack_info ctinfo; struct nf_conn *ct = nf_ct_get(skb, &ctinfo); enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo); @@ -76,7 +76,7 @@ char buffer[INET6_ADDRSTRLEN + sizeof("[]:nnnnn")]; unsigned int buflen; -@@ -326,8 +350,9 @@ static unsigned int nf_nat_sip_expect(st +@@ -326,8 +345,9 @@ static unsigned int nf_nat_sip_expect(st /* If the signalling port matches the connection's source port in the * original direction, try to use the destination port in the opposite * direction. */