|
@@ -2253,14 +2253,20 @@ static int masked_set_action_to_set_action_attr(const struct nlattr *a,
|
|
struct sk_buff *skb)
|
|
struct sk_buff *skb)
|
|
{
|
|
{
|
|
const struct nlattr *ovs_key = nla_data(a);
|
|
const struct nlattr *ovs_key = nla_data(a);
|
|
|
|
+ struct nlattr *nla;
|
|
size_t key_len = nla_len(ovs_key) / 2;
|
|
size_t key_len = nla_len(ovs_key) / 2;
|
|
|
|
|
|
/* Revert the conversion we did from a non-masked set action to
|
|
/* Revert the conversion we did from a non-masked set action to
|
|
* masked set action.
|
|
* masked set action.
|
|
*/
|
|
*/
|
|
- if (nla_put(skb, OVS_ACTION_ATTR_SET, nla_len(a) - key_len, ovs_key))
|
|
|
|
|
|
+ nla = nla_nest_start(skb, OVS_ACTION_ATTR_SET);
|
|
|
|
+ if (!nla)
|
|
return -EMSGSIZE;
|
|
return -EMSGSIZE;
|
|
|
|
|
|
|
|
+ if (nla_put(skb, nla_type(ovs_key), key_len, nla_data(ovs_key)))
|
|
|
|
+ return -EMSGSIZE;
|
|
|
|
+
|
|
|
|
+ nla_nest_end(skb, nla);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|