diff options
-rw-r--r-- | lib/meta-flow.c | 47 | ||||
-rw-r--r-- | lib/meta-flow.h | 9 |
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. */ |