|
@@ -31,6 +31,7 @@
|
|
|
#ifdef CONFIG_XFRM
|
|
|
static void nat_decode_session(struct sk_buff *skb, struct flowi *fl)
|
|
|
{
|
|
|
+ struct flowi4 *fl4 = &fl->u.ip4;
|
|
|
const struct nf_conn *ct;
|
|
|
const struct nf_conntrack_tuple *t;
|
|
|
enum ip_conntrack_info ctinfo;
|
|
@@ -49,25 +50,25 @@ static void nat_decode_session(struct sk_buff *skb, struct flowi *fl)
|
|
|
statusbit = IPS_SRC_NAT;
|
|
|
|
|
|
if (ct->status & statusbit) {
|
|
|
- fl->fl4_dst = t->dst.u3.ip;
|
|
|
+ fl4->daddr = t->dst.u3.ip;
|
|
|
if (t->dst.protonum == IPPROTO_TCP ||
|
|
|
t->dst.protonum == IPPROTO_UDP ||
|
|
|
t->dst.protonum == IPPROTO_UDPLITE ||
|
|
|
t->dst.protonum == IPPROTO_DCCP ||
|
|
|
t->dst.protonum == IPPROTO_SCTP)
|
|
|
- fl->fl4_dport = t->dst.u.tcp.port;
|
|
|
+ fl4->uli.ports.dport = t->dst.u.tcp.port;
|
|
|
}
|
|
|
|
|
|
statusbit ^= IPS_NAT_MASK;
|
|
|
|
|
|
if (ct->status & statusbit) {
|
|
|
- fl->fl4_src = t->src.u3.ip;
|
|
|
+ fl4->saddr = t->src.u3.ip;
|
|
|
if (t->dst.protonum == IPPROTO_TCP ||
|
|
|
t->dst.protonum == IPPROTO_UDP ||
|
|
|
t->dst.protonum == IPPROTO_UDPLITE ||
|
|
|
t->dst.protonum == IPPROTO_DCCP ||
|
|
|
t->dst.protonum == IPPROTO_SCTP)
|
|
|
- fl->fl4_sport = t->src.u.tcp.port;
|
|
|
+ fl4->uli.ports.sport = t->src.u.tcp.port;
|
|
|
}
|
|
|
}
|
|
|
#endif
|