> 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