--- zzzz-none-000/linux-2.6.28.10/net/ipv6/udp.c 2009-05-02 18:54:43.000000000 +0000 +++ fusiv-7390-686/linux-2.6.28.10/net/ipv6/udp.c 2011-12-21 09:12:23.000000000 +0000 @@ -116,10 +116,18 @@ if (unlikely(sk = skb_steal_sock(skb))) return sk; - else - return __udp6_lib_lookup(dev_net(skb->dst->dev), &iph->saddr, sport, - &iph->daddr, dport, inet6_iif(skb), - udptable); +#ifdef CONFIG_AVM_PA + sk = __udp6_lib_lookup(dev_net(skb->dst->dev), &iph->saddr, sport, + &iph->daddr, dport, inet6_iif(skb), + udptable); + if (sk) + avm_pa_add_local_session(skb, sk); + return sk; +#else + return __udp6_lib_lookup(dev_net(skb->dst->dev), &iph->saddr, sport, + &iph->daddr, dport, inet6_iif(skb), + udptable); +#endif } /* @@ -789,6 +797,7 @@ opt = ipv6_fixup_options(&opt_space, opt); fl.proto = sk->sk_protocol; + fl.mark = sk->sk_mark; if (!ipv6_addr_any(daddr)) ipv6_addr_copy(&fl.fl6_dst, daddr); else