> On Sep 16, 2015, at 1:42 PM, Joe Stringer <joestrin...@nicira.com> wrote:
> 
> On 11 September 2015 at 16:22, Jarno Rajahalme <jrajaha...@nicira.com> wrote:
>>> @@ -4177,6 +4181,32 @@ put_ct_mark(const struct flow *flow, struct flow 
>>> *base_flow,
>>> }
>>> 
>>> static void
>>> +put_ct_label(const struct flow *flow, struct flow *base_flow,
>>> +             struct ofpbuf *odp_actions, struct flow_wildcards *wc)
>>> +{
>>> +    const ovs_u128 *key;
>>> +    ovs_u128 *mask, *base;
>>> +
>>> +    key = &flow->ct_label;
>>> +    base = &base_flow->ct_label;
>>> +    mask = &wc->masks.ct_label;
>>> +
>>> +    if (!is_all_zeros(mask, sizeof(*mask)) && memcmp(key, base, 
>>> sizeof(*key))) {
>> We have u128 specific functions for both uses here.
>> 
>> Also, what if we have multiple ct actions with labels?
> 
> Can you elaborate what you mean here?
> 
> If the mask expects the label to be modified, and the current value is
> different from when it came in, we will apply the (flattened) changes.
> 
> If multiple ct() actions are executed in a single flow, none of them
> should see the changes from the previous label change because they
> should only appear after recirculation. (This isn't the case in this
> version, but it will be in the next series I send out).

That fixes it then :-)

  Jarno

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to