aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/meta-flow.c47
-rw-r--r--lib/meta-flow.h9
2 files changed, 50 insertions, 6 deletions
diff --git a/lib/meta-flow.c b/lib/meta-flow.c
index 84ba88bf..3db528fb 100644
--- a/lib/meta-flow.c
+++ b/lib/meta-flow.c
@@ -54,6 +54,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
true,
NXM_NX_TUN_ID, "NXM_NX_TUN_ID",
+ 0, NULL,
}, {
MFF_IN_PORT, "in_port", NULL,
MF_FIELD_SIZES(be16),
@@ -62,6 +63,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
false,
NXM_OF_IN_PORT, "NXM_OF_IN_PORT",
+ OXM_OF_IN_PORT, "OXM_OF_IN_PORT",
},
#define REGISTER(IDX) \
@@ -73,7 +75,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE, \
true, \
NXM_NX_REG(IDX), \
- "NXM_NX_REG" #IDX \
+ "NXM_NX_REG" #IDX, \
+ 0, NULL, \
}
#if FLOW_N_REGS > 0
REGISTER(0),
@@ -115,6 +118,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
true,
NXM_OF_ETH_SRC, "NXM_OF_ETH_SRC",
+ OXM_OF_ETH_SRC, "OXM_OF_ETH_SRC",
}, {
MFF_ETH_DST, "eth_dst", "dl_dst",
MF_FIELD_SIZES(mac),
@@ -123,6 +127,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
true,
NXM_OF_ETH_DST, "NXM_OF_ETH_DST",
+ OXM_OF_ETH_DST, "OXM_OF_ETH_DST",
}, {
MFF_ETH_TYPE, "eth_type", "dl_type",
MF_FIELD_SIZES(be16),
@@ -131,6 +136,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
false,
NXM_OF_ETH_TYPE, "NXM_OF_ETH_TYPE",
+ OXM_OF_ETH_TYPE, "OXM_OF_ETH_TYPE",
},
{
@@ -141,6 +147,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_NONE,
true,
NXM_OF_VLAN_TCI, "NXM_OF_VLAN_TCI",
+ 0, NULL,
}, {
MFF_VLAN_VID, "dl_vlan", NULL,
sizeof(ovs_be16), 12,
@@ -148,7 +155,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFS_DECIMAL,
MFP_NONE,
true,
- 0, NULL
+ 0, NULL,
+ OXM_OF_VLAN_VID, "OXM_OF_VLAN_VID",
}, {
MFF_VLAN_PCP, "dl_vlan_pcp", NULL,
1, 3,
@@ -156,7 +164,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFS_DECIMAL,
MFP_NONE,
true,
- 0, NULL
+ 0, NULL,
+ OXM_OF_VLAN_PCP, "OXM_OF_VLAN_PCP",
},
/* ## -- ## */
@@ -171,6 +180,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IPV4,
true,
NXM_OF_IP_SRC, "NXM_OF_IP_SRC",
+ OXM_OF_IPV4_SRC, "OXM_OF_IPV4_SRC",
}, {
MFF_IPV4_DST, "ip_dst", "nw_dst",
MF_FIELD_SIZES(be32),
@@ -179,6 +189,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IPV4,
true,
NXM_OF_IP_DST, "NXM_OF_IP_DST",
+ OXM_OF_IPV4_DST, "OXM_OF_IPV4_DST",
},
{
@@ -189,6 +200,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IPV6,
true,
NXM_NX_IPV6_SRC, "NXM_NX_IPV6_SRC",
+ OXM_OF_IPV6_SRC, "OXM_OF_IPV6_SRC",
}, {
MFF_IPV6_DST, "ipv6_dst", NULL,
MF_FIELD_SIZES(ipv6),
@@ -197,6 +209,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IPV6,
true,
NXM_NX_IPV6_DST, "NXM_NX_IPV6_DST",
+ OXM_OF_IPV6_DST, "OXM_OF_IPV6_DST",
},
{
MFF_IPV6_LABEL, "ipv6_label", NULL,
@@ -206,6 +219,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IPV6,
false,
NXM_NX_IPV6_LABEL, "NXM_NX_IPV6_LABEL",
+ OXM_OF_IPV6_FLABEL, "OXM_OF_IPV6_FLABEL",
},
{
@@ -216,6 +230,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IP_ANY,
false,
NXM_OF_IP_PROTO, "NXM_OF_IP_PROTO",
+ OXM_OF_IP_PROTO, "OXM_OF_IP_PROTO",
}, {
MFF_IP_DSCP, "nw_tos", NULL,
MF_FIELD_SIZES(u8),
@@ -223,7 +238,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFS_DECIMAL,
MFP_IP_ANY,
true,
- NXM_OF_IP_TOS, "NXM_OF_IP_TOS"
+ NXM_OF_IP_TOS, "NXM_OF_IP_TOS",
+ OXM_OF_IP_DSCP, "OXM_OF_IP_DSCP",
}, {
MFF_IP_ECN, "nw_ecn", NULL,
1, 2,
@@ -232,6 +248,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_IP_ANY,
true,
NXM_NX_IP_ECN, "NXM_NX_IP_ECN",
+ OXM_OF_IP_ECN, "OXM_OF_IP_ECN",
}, {
MFF_IP_TTL, "nw_ttl", NULL,
MF_FIELD_SIZES(u8),
@@ -239,7 +256,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFS_DECIMAL,
MFP_IP_ANY,
true,
- NXM_NX_IP_TTL, "NXM_NX_IP_TTL"
+ NXM_NX_IP_TTL, "NXM_NX_IP_TTL",
+ 0, NULL,
}, {
MFF_IP_FRAG, "ip_frag", NULL,
1, 2,
@@ -247,7 +265,8 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFS_FRAG,
MFP_IP_ANY,
false,
- NXM_NX_IP_FRAG, "NXM_NX_IP_FRAG"
+ NXM_NX_IP_FRAG, "NXM_NX_IP_FRAG",
+ 0, NULL,
},
{
@@ -258,6 +277,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ARP,
false,
NXM_OF_ARP_OP, "NXM_OF_ARP_OP",
+ OXM_OF_ARP_OP, "OXM_OF_ARP_OP",
}, {
MFF_ARP_SPA, "arp_spa", NULL,
MF_FIELD_SIZES(be32),
@@ -266,6 +286,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ARP,
false,
NXM_OF_ARP_SPA, "NXM_OF_ARP_SPA",
+ OXM_OF_ARP_SPA, "OXM_OF_ARP_SPA",
}, {
MFF_ARP_TPA, "arp_tpa", NULL,
MF_FIELD_SIZES(be32),
@@ -274,6 +295,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ARP,
false,
NXM_OF_ARP_TPA, "NXM_OF_ARP_TPA",
+ OXM_OF_ARP_TPA, "OXM_OF_ARP_TPA",
}, {
MFF_ARP_SHA, "arp_sha", NULL,
MF_FIELD_SIZES(mac),
@@ -282,6 +304,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ARP,
false,
NXM_NX_ARP_SHA, "NXM_NX_ARP_SHA",
+ OXM_OF_ARP_SHA, "OXM_OF_ARP_SHA",
}, {
MFF_ARP_THA, "arp_tha", NULL,
MF_FIELD_SIZES(mac),
@@ -290,6 +313,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ARP,
false,
NXM_NX_ARP_THA, "NXM_NX_ARP_THA",
+ OXM_OF_ARP_THA, "OXM_OF_ARP_THA",
},
/* ## -- ## */
@@ -304,6 +328,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_TCP,
true,
NXM_OF_TCP_SRC, "NXM_OF_TCP_SRC",
+ OXM_OF_TCP_SRC, "OXM_OF_TCP_SRC",
}, {
MFF_TCP_DST, "tcp_dst", "tp_dst",
MF_FIELD_SIZES(be16),
@@ -312,6 +337,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_TCP,
true,
NXM_OF_TCP_DST, "NXM_OF_TCP_DST",
+ OXM_OF_TCP_DST, "OXM_OF_TCP_DST",
},
{
@@ -322,6 +348,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_UDP,
true,
NXM_OF_UDP_SRC, "NXM_OF_UDP_SRC",
+ OXM_OF_UDP_SRC, "OXM_OF_UDP_SRC",
}, {
MFF_UDP_DST, "udp_dst", NULL,
MF_FIELD_SIZES(be16),
@@ -330,6 +357,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_UDP,
true,
NXM_OF_UDP_DST, "NXM_OF_UDP_DST",
+ OXM_OF_UDP_DST, "OXM_OF_UDP_DST",
},
{
@@ -340,6 +368,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ICMPV4,
false,
NXM_OF_ICMP_TYPE, "NXM_OF_ICMP_TYPE",
+ OXM_OF_ICMPV4_TYPE, "OXM_OF_ICMPV4_TYPE",
}, {
MFF_ICMPV4_CODE, "icmp_code", NULL,
MF_FIELD_SIZES(u8),
@@ -348,6 +377,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ICMPV4,
false,
NXM_OF_ICMP_CODE, "NXM_OF_ICMP_CODE",
+ OXM_OF_ICMPV4_CODE, "OXM_OF_ICMPV4_CODE",
},
{
@@ -358,6 +388,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ICMPV6,
false,
NXM_NX_ICMPV6_TYPE, "NXM_NX_ICMPV6_TYPE",
+ OXM_OF_ICMPV6_TYPE, "OXM_OF_ICMPV6_TYPE",
}, {
MFF_ICMPV6_CODE, "icmpv6_code", NULL,
MF_FIELD_SIZES(u8),
@@ -366,6 +397,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ICMPV6,
false,
NXM_NX_ICMPV6_CODE, "NXM_NX_ICMPV6_CODE",
+ OXM_OF_ICMPV6_CODE, "OXM_OF_ICMPV6_CODE",
},
/* ## ---- ## */
@@ -380,6 +412,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ND,
false,
NXM_NX_ND_TARGET, "NXM_NX_ND_TARGET",
+ OXM_OF_IPV6_ND_TARGET, "OXM_OF_IPV6_ND_TARGET",
}, {
MFF_ND_SLL, "nd_sll", NULL,
MF_FIELD_SIZES(mac),
@@ -388,6 +421,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ND_SOLICIT,
false,
NXM_NX_ND_SLL, "NXM_NX_ND_SLL",
+ OXM_OF_IPV6_ND_SLL, "OXM_OF_IPV6_ND_SLL",
}, {
MFF_ND_TLL, "nd_tll", NULL,
MF_FIELD_SIZES(mac),
@@ -396,6 +430,7 @@ static const struct mf_field mf_fields[MFF_N_IDS] = {
MFP_ND_ADVERT,
false,
NXM_NX_ND_TLL, "NXM_NX_ND_TLL",
+ OXM_OF_IPV6_ND_TLL, "OXM_OF_IPV6_ND_TLL",
}
};
diff --git a/lib/meta-flow.h b/lib/meta-flow.h
index 91d52c7d..6340b3e9 100644
--- a/lib/meta-flow.h
+++ b/lib/meta-flow.h
@@ -196,6 +196,15 @@ struct mf_field {
* NULL for the following members, respectively. */
uint32_t nxm_header; /* An NXM_* constant (a few fields have 0). */
const char *nxm_name; /* The "NXM_*" constant's name. */
+
+ /* OXM properties */
+ uint32_t oxm_header; /* Field id in the OXM basic class,
+ * an OXM_* constant.
+ * Ignored if oxm_name is NULL */
+ const char *oxm_name; /* The OXM_* constant's name,
+ * NULL if the field is not present
+ * in the OXM basic class */
+
};
/* The representation of a field's value. */