fm->ofpacts_len = ofpacts->size;
}
+/* Perform a bitwise-OR on 'wc''s fields that are relevant as sources in
+ * the learn action 'learn'. */
+void
+learn_mask(const struct ofpact_learn *learn, struct flow_wildcards *wc)
+{
+ const struct ofpact_learn_spec *spec;
+ union mf_subvalue value;
+
+ memset(&value, 0xff, sizeof value);
+ for (spec = learn->specs; spec < &learn->specs[learn->n_specs]; spec++) {
+ if (spec->src_type == NX_LEARN_SRC_FIELD) {
+ mf_write_subfield_flow(&spec->src, &value, &wc->masks);
+ }
+ }
+}
+
static void
learn_parse_load_immediate(const char *s, struct ofpact_learn_spec *spec)
{