true,
NXM_NX_TUN_ID, "NXM_NX_TUN_ID",
NXM_NX_TUN_ID, "NXM_NX_TUN_ID",
+ }, {
+ MFF_METADATA, "metadata", NULL,
+ MF_FIELD_SIZES(be64),
+ MFM_FULLY, 0,
+ MFS_HEXADECIMAL,
+ MFP_NONE,
+ true,
+ OXM_OF_METADATA, "OXM_OF_METADATA",
+ OXM_OF_METADATA, "OXM_OF_METADATA",
}, {
MFF_IN_PORT, "in_port", NULL,
MF_FIELD_SIZES(be16),
case MFF_TUN_ID:
return !wc->tun_id_mask;
+ case MFF_METADATA:
+ return !wc->metadata_mask;
#if FLOW_N_REGS > 0
case MFF_REG0:
case MFF_TUN_ID:
mask->be64 = wc->tun_id_mask;
break;
+ case MFF_METADATA:
+ mask->be64 = wc->metadata_mask;
+ break;
#if FLOW_N_REGS > 0
case MFF_REG0:
{
switch (mf->id) {
case MFF_TUN_ID:
+ case MFF_METADATA:
case MFF_IN_PORT:
#if FLOW_N_REGS > 0
case MFF_REG0:
case MFF_TUN_ID:
value->be64 = flow->tun_id;
break;
+ case MFF_METADATA:
+ value->be64 = flow->metadata;
+ break;
case MFF_IN_PORT:
value->be16 = htons(flow->in_port);
case MFF_TUN_ID:
cls_rule_set_tun_id(rule, value->be64);
break;
+ case MFF_METADATA:
+ cls_rule_set_metadata(rule, value->be64);
+ break;
case MFF_IN_PORT:
cls_rule_set_in_port(rule, ntohs(value->be16));
case MFF_TUN_ID:
flow->tun_id = value->be64;
break;
+ case MFF_METADATA:
+ flow->metadata = value->be64;
+ break;
case MFF_IN_PORT:
flow->in_port = ntohs(value->be16);
case MFF_TUN_ID:
cls_rule_set_tun_id_masked(rule, htonll(0), htonll(0));
break;
+ case MFF_METADATA:
+ cls_rule_set_metadata_masked(rule, htonll(0), htonll(0));
case MFF_IN_PORT:
rule->wc.wildcards |= FWW_IN_PORT;
case MFF_TUN_ID:
cls_rule_set_tun_id_masked(rule, value->be64, mask->be64);
break;
+ case MFF_METADATA:
+ cls_rule_set_metadata_masked(rule, value->be64, mask->be64);
+ break;
#if FLOW_N_REGS > 0
case MFF_REG0:
switch (mf->id) {
case MFF_TUN_ID:
+ case MFF_METADATA:
case MFF_IN_PORT:
#if FLOW_N_REGS > 0
case MFF_REG0: