/* 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); } } }
/* 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); OFPACT_LEARN_SPEC_FOR_EACH (spec, learn) { if (spec->src_type == NX_LEARN_SRC_FIELD) { mf_write_subfield_flow(&spec->src, &value, &wc->masks); } } }