|
@@ -71,11 +71,10 @@ static void __nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl)
|
|
|
if (ct == NULL)
|
|
|
return;
|
|
|
|
|
|
- family = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num;
|
|
|
- rcu_read_lock();
|
|
|
+ family = nf_ct_l3num(ct);
|
|
|
l3proto = __nf_nat_l3proto_find(family);
|
|
|
if (l3proto == NULL)
|
|
|
- goto out;
|
|
|
+ return;
|
|
|
|
|
|
dir = CTINFO2DIR(ctinfo);
|
|
|
if (dir == IP_CT_DIR_ORIGINAL)
|
|
@@ -84,8 +83,6 @@ static void __nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl)
|
|
|
statusbit = IPS_SRC_NAT;
|
|
|
|
|
|
l3proto->decode_session(skb, ct, dir, statusbit, fl);
|
|
|
-out:
|
|
|
- rcu_read_unlock();
|
|
|
}
|
|
|
|
|
|
int nf_xfrm_me_harder(struct net *net, struct sk_buff *skb, unsigned int family)
|