|
|
@@ -143,6 +143,7 @@ static void __ovs_ct_update_key(struct sw_flow_key *key, u8 state,
|
|
|
* previously sent the packet to conntrack via the ct action.
|
|
|
*/
|
|
|
static void ovs_ct_update_key(const struct sk_buff *skb,
|
|
|
+ const struct ovs_conntrack_info *info,
|
|
|
struct sw_flow_key *key, bool post_ct)
|
|
|
{
|
|
|
const struct nf_conntrack_zone *zone = &nf_ct_zone_dflt;
|
|
|
@@ -160,13 +161,15 @@ static void ovs_ct_update_key(const struct sk_buff *skb,
|
|
|
zone = nf_ct_zone(ct);
|
|
|
} else if (post_ct) {
|
|
|
state = OVS_CS_F_TRACKED | OVS_CS_F_INVALID;
|
|
|
+ if (info)
|
|
|
+ zone = &info->zone;
|
|
|
}
|
|
|
__ovs_ct_update_key(key, state, zone, ct);
|
|
|
}
|
|
|
|
|
|
void ovs_ct_fill_key(const struct sk_buff *skb, struct sw_flow_key *key)
|
|
|
{
|
|
|
- ovs_ct_update_key(skb, key, false);
|
|
|
+ ovs_ct_update_key(skb, NULL, key, false);
|
|
|
}
|
|
|
|
|
|
int ovs_ct_put_key(const struct sw_flow_key *key, struct sk_buff *skb)
|
|
|
@@ -420,7 +423,7 @@ static int __ovs_ct_lookup(struct net *net, struct sw_flow_key *key,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ovs_ct_update_key(skb, key, true);
|
|
|
+ ovs_ct_update_key(skb, info, key, true);
|
|
|
|
|
|
return 0;
|
|
|
}
|