/*
- * Copyright (c) 2011, 2012, 2013 Nicira, Inc.
+ * Copyright (c) 2011, 2012, 2013, 2014 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
MFP_NONE,
false,
NXM_NX_DP_HASH, "NXM_NX_DP_HASH",
- NXM_NX_DP_HASH, "NXM_NX_DP_HASH",
+ NXM_NX_DP_HASH, "NXM_NX_DP_HASH", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE,
false,
NXM_NX_RECIRC_ID, "NXM_NX_RECIRC_ID",
- NXM_NX_RECIRC_ID, "NXM_NX_RECIRC_ID",
+ NXM_NX_RECIRC_ID, "NXM_NX_RECIRC_ID", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE,
true,
NXM_NX_TUN_ID, "NXM_NX_TUN_ID",
- OXM_OF_TUNNEL_ID, "OXM_OF_TUNNEL_ID",
+ OXM_OF_TUNNEL_ID, "OXM_OF_TUNNEL_ID", OFP13_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
FLOW_U32OFS(tunnel.tun_id),
MFP_NONE,
true,
NXM_NX_TUN_IPV4_SRC, "NXM_NX_TUN_IPV4_SRC",
- NXM_NX_TUN_IPV4_SRC, "NXM_NX_TUN_IPV4_SRC",
+ NXM_NX_TUN_IPV4_SRC, "NXM_NX_TUN_IPV4_SRC", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
FLOW_U32OFS(tunnel.ip_src),
MFP_NONE,
true,
NXM_NX_TUN_IPV4_DST, "NXM_NX_TUN_IPV4_DST",
- NXM_NX_TUN_IPV4_DST, "NXM_NX_TUN_IPV4_DST",
+ NXM_NX_TUN_IPV4_DST, "NXM_NX_TUN_IPV4_DST", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
FLOW_U32OFS(tunnel.ip_dst),
MFP_NONE,
false,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_NONE,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
false,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_NONE,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
false,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_NONE,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
true,
OXM_OF_METADATA, "OXM_OF_METADATA",
- OXM_OF_METADATA, "OXM_OF_METADATA",
+ OXM_OF_METADATA, "OXM_OF_METADATA", OFP12_VERSION,
OFPUTIL_P_NXM_OF11_UP,
OFPUTIL_P_NXM_OF11_UP,
-1,
MFP_NONE,
true,
NXM_OF_IN_PORT, "NXM_OF_IN_PORT",
- NXM_OF_IN_PORT, "NXM_OF_IN_PORT",
+ NXM_OF_IN_PORT, "NXM_OF_IN_PORT", 0,
OFPUTIL_P_ANY, /* OF11+ via mapping to 32 bits. */
OFPUTIL_P_NONE,
-1,
MFP_NONE,
true,
OXM_OF_IN_PORT, "OXM_OF_IN_PORT",
- OXM_OF_IN_PORT, "OXM_OF_IN_PORT",
+ OXM_OF_IN_PORT, "OXM_OF_IN_PORT", OFP12_VERSION,
OFPUTIL_P_OF11_UP,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
false,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_NONE,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
true,
NXM_NX_PKT_MARK, "NXM_NX_PKT_MARK",
- NXM_NX_PKT_MARK, "NXM_NX_PKT_MARK",
+ NXM_NX_PKT_MARK, "NXM_NX_PKT_MARK", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE, \
true, \
NXM_NX_REG(IDX), "NXM_NX_REG" #IDX, \
- NXM_NX_REG(IDX), "NXM_NX_REG" #IDX, \
+ NXM_NX_REG(IDX), "NXM_NX_REG" #IDX, 0, \
OFPUTIL_P_NXM_OXM_ANY, \
OFPUTIL_P_NXM_OXM_ANY, \
-1, \
}
-#if FLOW_N_REGS > 0
+#if FLOW_N_REGS == 8
REGISTER(0),
-#endif
-#if FLOW_N_REGS > 1
REGISTER(1),
-#endif
-#if FLOW_N_REGS > 2
REGISTER(2),
-#endif
-#if FLOW_N_REGS > 3
REGISTER(3),
-#endif
-#if FLOW_N_REGS > 4
REGISTER(4),
-#endif
-#if FLOW_N_REGS > 5
REGISTER(5),
-#endif
-#if FLOW_N_REGS > 6
REGISTER(6),
-#endif
-#if FLOW_N_REGS > 7
REGISTER(7),
+#else
+#error "Need to update mf_fields[] to match FLOW_N_REGS"
#endif
-#if FLOW_N_REGS > 8
-#error
+
+#define XREGISTER(IDX) \
+ { \
+ MFF_XREG##IDX, "xreg" #IDX, NULL, \
+ MF_FIELD_SIZES(be64), \
+ MFM_FULLY, \
+ MFS_HEXADECIMAL, \
+ MFP_NONE, \
+ true, \
+ OXM_OF_PKT_REG(IDX), "OXM_OF_PKT_REG" #IDX, \
+ OXM_OF_PKT_REG(IDX), "OXM_OF_PKT_REG" #IDX, OFP15_VERSION, \
+ OFPUTIL_P_NXM_OXM_ANY, \
+ OFPUTIL_P_NXM_OXM_ANY, \
+ -1, \
+ }
+#if FLOW_N_XREGS == 4
+ XREGISTER(0),
+ XREGISTER(1),
+ XREGISTER(2),
+ XREGISTER(3),
+#else
+#error "Need to update mf_fields[] to match FLOW_N_XREGS"
#endif
/* ## -- ## */
MFP_NONE,
true,
NXM_OF_ETH_SRC, "NXM_OF_ETH_SRC",
- OXM_OF_ETH_SRC, "OXM_OF_ETH_SRC",
+ OXM_OF_ETH_SRC, "OXM_OF_ETH_SRC", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP, /* Bitwise masking only with NXM and OF11+! */
-1,
MFP_NONE,
true,
NXM_OF_ETH_DST, "NXM_OF_ETH_DST",
- OXM_OF_ETH_DST, "OXM_OF_ETH_DST",
+ OXM_OF_ETH_DST, "OXM_OF_ETH_DST", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP, /* Bitwise masking only with NXM and OF11+! */
-1,
MFP_NONE,
false,
NXM_OF_ETH_TYPE, "NXM_OF_ETH_TYPE",
- OXM_OF_ETH_TYPE, "OXM_OF_ETH_TYPE",
+ OXM_OF_ETH_TYPE, "OXM_OF_ETH_TYPE", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NONE,
-1,
MFP_NONE,
true,
NXM_OF_VLAN_TCI, "NXM_OF_VLAN_TCI",
- NXM_OF_VLAN_TCI, "NXM_OF_VLAN_TCI",
+ NXM_OF_VLAN_TCI, "NXM_OF_VLAN_TCI", 0,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE,
true,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE,
true,
OXM_OF_VLAN_VID, "OXM_OF_VLAN_VID",
- OXM_OF_VLAN_VID, "OXM_OF_VLAN_VID",
+ OXM_OF_VLAN_VID, "OXM_OF_VLAN_VID", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_NONE,
true,
0, NULL,
- 0, NULL,
+ 0, NULL, 0,
OFPUTIL_P_ANY, /* Will be mapped to NXM and OXM. */
OFPUTIL_P_NONE,
-1,
MFP_VLAN_VID,
true,
OXM_OF_VLAN_PCP, "OXM_OF_VLAN_PCP",
- OXM_OF_VLAN_PCP, "OXM_OF_VLAN_PCP",
+ OXM_OF_VLAN_PCP, "OXM_OF_VLAN_PCP", OFP12_VERSION,
OFPUTIL_P_ANY, /* Will be mapped to OF10 and NXM. */
OFPUTIL_P_NONE,
-1,
MFP_MPLS,
true,
OXM_OF_MPLS_LABEL, "OXM_OF_MPLS_LABEL",
- OXM_OF_MPLS_LABEL, "OXM_OF_MPLS_LABEL",
+ OXM_OF_MPLS_LABEL, "OXM_OF_MPLS_LABEL", OFP12_VERSION,
OFPUTIL_P_NXM_OF11_UP,
OFPUTIL_P_NONE,
-1,
MFP_MPLS,
true,
OXM_OF_MPLS_TC, "OXM_OF_MPLS_TC",
- OXM_OF_MPLS_TC, "OXM_OF_MPLS_TC",
+ OXM_OF_MPLS_TC, "OXM_OF_MPLS_TC", OFP12_VERSION,
OFPUTIL_P_NXM_OF11_UP,
OFPUTIL_P_NONE,
-1,
MFP_MPLS,
false,
OXM_OF_MPLS_BOS, "OXM_OF_MPLS_BOS",
- OXM_OF_MPLS_BOS, "OXM_OF_MPLS_BOS",
+ OXM_OF_MPLS_BOS, "OXM_OF_MPLS_BOS", OFP13_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NONE,
-1,
MFP_IPV4,
true,
NXM_OF_IP_SRC, "NXM_OF_IP_SRC",
- OXM_OF_IPV4_SRC, "OXM_OF_IPV4_SRC",
+ OXM_OF_IPV4_SRC, "OXM_OF_IPV4_SRC", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP,
FLOW_U32OFS(nw_src),
MFP_IPV4,
true,
NXM_OF_IP_DST, "NXM_OF_IP_DST",
- OXM_OF_IPV4_DST, "OXM_OF_IPV4_DST",
+ OXM_OF_IPV4_DST, "OXM_OF_IPV4_DST", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP,
FLOW_U32OFS(nw_dst),
MFP_IPV6,
true,
NXM_NX_IPV6_SRC, "NXM_NX_IPV6_SRC",
- OXM_OF_IPV6_SRC, "OXM_OF_IPV6_SRC",
+ OXM_OF_IPV6_SRC, "OXM_OF_IPV6_SRC", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
FLOW_U32OFS(ipv6_src),
MFP_IPV6,
true,
NXM_NX_IPV6_DST, "NXM_NX_IPV6_DST",
- OXM_OF_IPV6_DST, "OXM_OF_IPV6_DST",
+ OXM_OF_IPV6_DST, "OXM_OF_IPV6_DST", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
FLOW_U32OFS(ipv6_dst),
MFP_IPV6,
false,
NXM_NX_IPV6_LABEL, "NXM_NX_IPV6_LABEL",
- OXM_OF_IPV6_FLABEL, "OXM_OF_IPV6_FLABEL",
+ OXM_OF_IPV6_FLABEL, "OXM_OF_IPV6_FLABEL", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_IP_ANY,
false,
NXM_OF_IP_PROTO, "NXM_OF_IP_PROTO",
- OXM_OF_IP_PROTO, "OXM_OF_IP_PROTO",
+ OXM_OF_IP_PROTO, "OXM_OF_IP_PROTO", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NONE,
-1,
MFP_IP_ANY,
true,
NXM_OF_IP_TOS, "NXM_OF_IP_TOS",
- NXM_OF_IP_TOS, "NXM_OF_IP_TOS",
+ NXM_OF_IP_TOS, "NXM_OF_IP_TOS", 0,
OFPUTIL_P_ANY, /* Will be shifted for OXM. */
OFPUTIL_P_NONE,
-1,
MFP_IP_ANY,
true,
OXM_OF_IP_DSCP, "OXM_OF_IP_DSCP",
- OXM_OF_IP_DSCP, "OXM_OF_IP_DSCP",
+ OXM_OF_IP_DSCP, "OXM_OF_IP_DSCP", OFP12_VERSION,
OFPUTIL_P_ANY, /* Will be shifted for non-OXM. */
OFPUTIL_P_NONE,
-1,
MFP_IP_ANY,
true,
NXM_NX_IP_ECN, "NXM_NX_IP_ECN",
- OXM_OF_IP_ECN, "OXM_OF_IP_ECN",
+ OXM_OF_IP_ECN, "OXM_OF_IP_ECN", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NONE,
-1,
MFP_IP_ANY,
true,
NXM_NX_IP_TTL, "NXM_NX_IP_TTL",
- NXM_NX_IP_TTL, "NXM_NX_IP_TTL",
+ NXM_NX_IP_TTL, "NXM_NX_IP_TTL", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NONE,
-1,
MFP_IP_ANY,
false,
NXM_NX_IP_FRAG, "NXM_NX_IP_FRAG",
- NXM_NX_IP_FRAG, "NXM_NX_IP_FRAG",
+ NXM_NX_IP_FRAG, "NXM_NX_IP_FRAG", 0,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_ARP,
true,
NXM_OF_ARP_OP, "NXM_OF_ARP_OP",
- OXM_OF_ARP_OP, "OXM_OF_ARP_OP",
+ OXM_OF_ARP_OP, "OXM_OF_ARP_OP", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NONE,
-1,
MFP_ARP,
true,
NXM_OF_ARP_SPA, "NXM_OF_ARP_SPA",
- OXM_OF_ARP_SPA, "OXM_OF_ARP_SPA",
+ OXM_OF_ARP_SPA, "OXM_OF_ARP_SPA", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP,
-1,
MFP_ARP,
true,
NXM_OF_ARP_TPA, "NXM_OF_ARP_TPA",
- OXM_OF_ARP_TPA, "OXM_OF_ARP_TPA",
+ OXM_OF_ARP_TPA, "OXM_OF_ARP_TPA", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OF11_UP,
-1,
MFP_ARP,
true,
NXM_NX_ARP_SHA, "NXM_NX_ARP_SHA",
- OXM_OF_ARP_SHA, "OXM_OF_ARP_SHA",
+ OXM_OF_ARP_SHA, "OXM_OF_ARP_SHA", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_ARP,
true,
NXM_NX_ARP_THA, "NXM_NX_ARP_THA",
- OXM_OF_ARP_THA, "OXM_OF_ARP_THA",
+ OXM_OF_ARP_THA, "OXM_OF_ARP_THA", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_TCP,
true,
NXM_OF_TCP_SRC, "NXM_OF_TCP_SRC",
- OXM_OF_TCP_SRC, "OXM_OF_TCP_SRC",
+ OXM_OF_TCP_SRC, "OXM_OF_TCP_SRC", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_TCP,
true,
NXM_OF_TCP_DST, "NXM_OF_TCP_DST",
- OXM_OF_TCP_DST, "OXM_OF_TCP_DST",
+ OXM_OF_TCP_DST, "OXM_OF_TCP_DST", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_TCP,
false,
NXM_NX_TCP_FLAGS, "NXM_NX_TCP_FLAGS",
- NXM_NX_TCP_FLAGS, "NXM_NX_TCP_FLAGS",
+ OXM_OF_TCP_FLAGS, "OXM_OF_TCP_FLAGS", OFP15_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_UDP,
true,
NXM_OF_UDP_SRC, "NXM_OF_UDP_SRC",
- OXM_OF_UDP_SRC, "OXM_OF_UDP_SRC",
+ OXM_OF_UDP_SRC, "OXM_OF_UDP_SRC", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_UDP,
true,
NXM_OF_UDP_DST, "NXM_OF_UDP_DST",
- OXM_OF_UDP_DST, "OXM_OF_UDP_DST",
+ OXM_OF_UDP_DST, "OXM_OF_UDP_DST", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_SCTP,
true,
OXM_OF_SCTP_SRC, "OXM_OF_SCTP_SRC",
- OXM_OF_SCTP_SRC, "OXM_OF_SCTP_SRC",
+ OXM_OF_SCTP_SRC, "OXM_OF_SCTP_SRC", OFP12_VERSION,
OFPUTIL_P_NXM_OF11_UP,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_SCTP,
true,
OXM_OF_SCTP_DST, "OXM_OF_SCTP_DST",
- OXM_OF_SCTP_DST, "OXM_OF_SCTP_DST",
+ OXM_OF_SCTP_DST, "OXM_OF_SCTP_DST", OFP12_VERSION,
OFPUTIL_P_NXM_OF11_UP,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_ICMPV4,
false,
NXM_OF_ICMP_TYPE, "NXM_OF_ICMP_TYPE",
- OXM_OF_ICMPV4_TYPE, "OXM_OF_ICMPV4_TYPE",
+ OXM_OF_ICMPV4_TYPE, "OXM_OF_ICMPV4_TYPE", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NONE,
-1,
MFP_ICMPV4,
false,
NXM_OF_ICMP_CODE, "NXM_OF_ICMP_CODE",
- OXM_OF_ICMPV4_CODE, "OXM_OF_ICMPV4_CODE",
+ OXM_OF_ICMPV4_CODE, "OXM_OF_ICMPV4_CODE", OFP12_VERSION,
OFPUTIL_P_ANY,
OFPUTIL_P_NONE,
-1,
MFP_ICMPV6,
false,
NXM_NX_ICMPV6_TYPE, "NXM_NX_ICMPV6_TYPE",
- OXM_OF_ICMPV6_TYPE, "OXM_OF_ICMPV6_TYPE",
+ OXM_OF_ICMPV6_TYPE, "OXM_OF_ICMPV6_TYPE", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NONE,
-1,
MFP_ICMPV6,
false,
NXM_NX_ICMPV6_CODE, "NXM_NX_ICMPV6_CODE",
- OXM_OF_ICMPV6_CODE, "OXM_OF_ICMPV6_CODE",
+ OXM_OF_ICMPV6_CODE, "OXM_OF_ICMPV6_CODE", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NONE,
-1,
MFP_ND,
false,
NXM_NX_ND_TARGET, "NXM_NX_ND_TARGET",
- OXM_OF_IPV6_ND_TARGET, "OXM_OF_IPV6_ND_TARGET",
+ OXM_OF_IPV6_ND_TARGET, "OXM_OF_IPV6_ND_TARGET", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_ND_SOLICIT,
false,
NXM_NX_ND_SLL, "NXM_NX_ND_SLL",
- OXM_OF_IPV6_ND_SLL, "OXM_OF_IPV6_ND_SLL",
+ OXM_OF_IPV6_ND_SLL, "OXM_OF_IPV6_ND_SLL", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
MFP_ND_ADVERT,
false,
NXM_NX_ND_TLL, "NXM_NX_ND_TLL",
- OXM_OF_IPV6_ND_TLL, "OXM_OF_IPV6_ND_TLL",
+ OXM_OF_IPV6_ND_TLL, "OXM_OF_IPV6_ND_TLL", OFP12_VERSION,
OFPUTIL_P_NXM_OXM_ANY,
OFPUTIL_P_NXM_OXM_ANY,
-1,
return NULL;
}
+uint32_t
+mf_oxm_header(enum mf_field_id id, enum ofp_version oxm_version)
+{
+ const struct mf_field *field = mf_from_id(id);
+
+ return (oxm_version >= field->oxm_version
+ ? field->oxm_header
+ : field->nxm_header);
+}
+
/* Returns true if 'wc' wildcards all the bits in field 'mf', false if 'wc'
* specifies at least one bit in the field.
*
return !wc->masks.pkt_mark;
CASE_MFF_REGS:
return !wc->masks.regs[mf->id - MFF_REG0];
+ CASE_MFF_XREGS:
+ return !flow_get_xreg(&wc->masks, mf->id - MFF_XREG0);
case MFF_ETH_SRC:
return eth_addr_is_zero(wc->masks.dl_src);
case MFF_SKB_PRIORITY:
case MFF_PKT_MARK:
CASE_MFF_REGS:
+ CASE_MFF_XREGS:
case MFF_ETH_SRC:
case MFF_ETH_DST:
case MFF_ETH_TYPE:
value->be32 = htonl(flow->regs[mf->id - MFF_REG0]);
break;
+ CASE_MFF_XREGS:
+ value->be64 = htonll(flow_get_xreg(flow, mf->id - MFF_XREG0));
+ break;
+
case MFF_ETH_SRC:
memcpy(value->mac, flow->dl_src, ETH_ADDR_LEN);
break;
match_set_reg(match, mf->id - MFF_REG0, ntohl(value->be32));
break;
+ CASE_MFF_XREGS:
+ match_set_xreg(match, mf->id - MFF_XREG0, ntohll(value->be64));
+ break;
+
case MFF_ETH_SRC:
match_set_dl_src(match, value->mac);
break;
flow->regs[mf->id - MFF_REG0] = ntohl(value->be32);
break;
+ CASE_MFF_XREGS:
+ flow_set_xreg(flow, mf->id - MFF_XREG0, ntohll(value->be64));
+ break;
+
case MFF_ETH_SRC:
memcpy(flow->dl_src, value->mac, ETH_ADDR_LEN);
break;
match_set_reg_masked(match, mf->id - MFF_REG0, 0, 0);
break;
+ CASE_MFF_XREGS:
+ match_set_xreg_masked(match, mf->id - MFF_XREG0, 0, 0);
+ break;
+
case MFF_ETH_SRC:
memset(match->flow.dl_src, 0, ETH_ADDR_LEN);
memset(match->wc.masks.dl_src, 0, ETH_ADDR_LEN);
ntohl(value->be32), ntohl(mask->be32));
break;
+ CASE_MFF_XREGS:
+ match_set_xreg_masked(match, mf->id - MFF_XREG0,
+ ntohll(value->be64), ntohll(mask->be64));
+ break;
+
case MFF_PKT_MARK:
match_set_pkt_mark_masked(match, ntohl(value->be32),
ntohl(mask->be32));