mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
meta-flow: Autogenerate mf_field data structures.
This is a first step toward improving the abstraction of OXM and NXM in the tree. As an immediate improvement, this commit removes all of the definitions of the OXM and NXM constants from the top-level header files, because they are no longer used anywhere. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp> Acked-by: Jarno Rajahalme <jrajahalme@nicira.com>
This commit is contained in:
769
lib/meta-flow.c
769
lib/meta-flow.c
@@ -47,755 +47,7 @@ VLOG_DEFINE_THIS_MODULE(meta_flow);
|
||||
extern const struct mf_field mf_fields[MFF_N_IDS]; /* Silence a warning. */
|
||||
|
||||
const struct mf_field mf_fields[MFF_N_IDS] = {
|
||||
/* ## -------- ## */
|
||||
/* ## metadata ## */
|
||||
/* ## -------- ## */
|
||||
|
||||
{
|
||||
MFF_DP_HASH, "dp_hash", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
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,
|
||||
}, {
|
||||
MFF_RECIRC_ID, "recirc_id", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
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,
|
||||
}, {
|
||||
MFF_TUN_ID, "tun_id", "tunnel_id",
|
||||
MF_FIELD_SIZES(be64),
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
NXM_NX_TUN_ID, "NXM_NX_TUN_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),
|
||||
}, {
|
||||
MFF_TUN_SRC, "tun_src", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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),
|
||||
}, {
|
||||
MFF_TUN_DST, "tun_dst", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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),
|
||||
}, {
|
||||
MFF_TUN_FLAGS, "tun_flags", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_NONE,
|
||||
MFS_TNL_FLAGS,
|
||||
MFP_NONE,
|
||||
false,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_NONE,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_TUN_TTL, "tun_ttl", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_NONE,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_TUN_TOS, "tun_tos", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_NONE,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_METADATA, "metadata", NULL,
|
||||
MF_FIELD_SIZES(be64),
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_IN_PORT, "in_port", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_NONE,
|
||||
MFS_OFP_PORT,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_IN_PORT_OXM, "in_port_oxm", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_NONE,
|
||||
MFS_OFP_PORT_OXM,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_SKB_PRIORITY, "skb_priority", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_NONE,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_NONE,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_PKT_MARK, "pkt_mark", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
},
|
||||
|
||||
#define REGISTER(IDX) \
|
||||
{ \
|
||||
MFF_REG##IDX, "reg" #IDX, NULL, \
|
||||
MF_FIELD_SIZES(be32), \
|
||||
MFM_FULLY, \
|
||||
MFS_HEXADECIMAL, \
|
||||
MFP_NONE, \
|
||||
true, \
|
||||
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 == 8
|
||||
REGISTER(0),
|
||||
REGISTER(1),
|
||||
REGISTER(2),
|
||||
REGISTER(3),
|
||||
REGISTER(4),
|
||||
REGISTER(5),
|
||||
REGISTER(6),
|
||||
REGISTER(7),
|
||||
#else
|
||||
#error "Need to update mf_fields[] to match FLOW_N_REGS"
|
||||
#endif
|
||||
|
||||
#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
|
||||
|
||||
/* ## -- ## */
|
||||
/* ## L2 ## */
|
||||
/* ## -- ## */
|
||||
|
||||
{
|
||||
MFF_ETH_SRC, "eth_src", "dl_src",
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_NONE,
|
||||
true,
|
||||
NXM_OF_ETH_SRC, "NXM_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,
|
||||
}, {
|
||||
MFF_ETH_DST, "eth_dst", "dl_dst",
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_NONE,
|
||||
true,
|
||||
NXM_OF_ETH_DST, "NXM_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,
|
||||
}, {
|
||||
MFF_ETH_TYPE, "eth_type", "dl_type",
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_NONE,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
false,
|
||||
NXM_OF_ETH_TYPE, "NXM_OF_ETH_TYPE",
|
||||
OXM_OF_ETH_TYPE, "OXM_OF_ETH_TYPE", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_VLAN_TCI, "vlan_tci", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_DL_VLAN, "dl_vlan", NULL,
|
||||
sizeof(ovs_be16), 12,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
}, {
|
||||
MFF_VLAN_VID, "vlan_vid", NULL,
|
||||
sizeof(ovs_be16), 12,
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_DL_VLAN_PCP, "dl_vlan_pcp", NULL,
|
||||
1, 3,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_NONE,
|
||||
true,
|
||||
0, NULL,
|
||||
0, NULL, 0,
|
||||
OFPUTIL_P_ANY, /* Will be mapped to NXM and OXM. */
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_VLAN_PCP, "vlan_pcp", NULL,
|
||||
1, 3,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_VLAN_VID,
|
||||
true,
|
||||
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,
|
||||
},
|
||||
|
||||
/* ## ---- ## */
|
||||
/* ## L2.5 ## */
|
||||
/* ## ---- ## */
|
||||
{
|
||||
MFF_MPLS_LABEL, "mpls_label", NULL,
|
||||
4, 20,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_MPLS,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_MPLS_TC, "mpls_tc", NULL,
|
||||
1, 3,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_MPLS,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_MPLS_BOS, "mpls_bos", NULL,
|
||||
1, 1,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_MPLS,
|
||||
false,
|
||||
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,
|
||||
},
|
||||
|
||||
/* ## -- ## */
|
||||
/* ## L3 ## */
|
||||
/* ## -- ## */
|
||||
|
||||
{
|
||||
MFF_IPV4_SRC, "ip_src", "nw_src",
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_IPV4,
|
||||
true,
|
||||
NXM_OF_IP_SRC, "NXM_OF_IP_SRC",
|
||||
OXM_OF_IPV4_SRC, "OXM_OF_IPV4_SRC", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OF11_UP,
|
||||
FLOW_U32OFS(nw_src),
|
||||
}, {
|
||||
MFF_IPV4_DST, "ip_dst", "nw_dst",
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_IPV4,
|
||||
true,
|
||||
NXM_OF_IP_DST, "NXM_OF_IP_DST",
|
||||
OXM_OF_IPV4_DST, "OXM_OF_IPV4_DST", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OF11_UP,
|
||||
FLOW_U32OFS(nw_dst),
|
||||
},
|
||||
|
||||
{
|
||||
MFF_IPV6_SRC, "ipv6_src", NULL,
|
||||
MF_FIELD_SIZES(ipv6),
|
||||
MFM_FULLY,
|
||||
MFS_IPV6,
|
||||
MFP_IPV6,
|
||||
true,
|
||||
NXM_NX_IPV6_SRC, "NXM_NX_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),
|
||||
}, {
|
||||
MFF_IPV6_DST, "ipv6_dst", NULL,
|
||||
MF_FIELD_SIZES(ipv6),
|
||||
MFM_FULLY,
|
||||
MFS_IPV6,
|
||||
MFP_IPV6,
|
||||
true,
|
||||
NXM_NX_IPV6_DST, "NXM_NX_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),
|
||||
},
|
||||
{
|
||||
MFF_IPV6_LABEL, "ipv6_label", NULL,
|
||||
4, 20,
|
||||
MFM_FULLY,
|
||||
MFS_HEXADECIMAL,
|
||||
MFP_IPV6,
|
||||
false,
|
||||
NXM_NX_IPV6_LABEL, "NXM_NX_IPV6_LABEL",
|
||||
OXM_OF_IPV6_FLABEL, "OXM_OF_IPV6_FLABEL", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_IP_PROTO, "nw_proto", "ip_proto",
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_IP_ANY,
|
||||
false,
|
||||
NXM_OF_IP_PROTO, "NXM_OF_IP_PROTO",
|
||||
OXM_OF_IP_PROTO, "OXM_OF_IP_PROTO", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_IP_DSCP, "nw_tos", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_IP_ANY,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_IP_DSCP_SHIFTED, "ip_dscp", NULL,
|
||||
1, 6,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_IP_ANY,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_IP_ECN, "nw_ecn", "ip_ecn",
|
||||
1, 2,
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_IP_ANY,
|
||||
true,
|
||||
NXM_NX_IP_ECN, "NXM_NX_IP_ECN",
|
||||
OXM_OF_IP_ECN, "OXM_OF_IP_ECN", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_IP_TTL, "nw_ttl", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_IP_ANY,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_IP_FRAG, "ip_frag", NULL,
|
||||
1, 2,
|
||||
MFM_FULLY,
|
||||
MFS_FRAG,
|
||||
MFP_IP_ANY,
|
||||
false,
|
||||
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,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_ARP_OP, "arp_op", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_ARP,
|
||||
true,
|
||||
NXM_OF_ARP_OP, "NXM_OF_ARP_OP",
|
||||
OXM_OF_ARP_OP, "OXM_OF_ARP_OP", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ARP_SPA, "arp_spa", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_ARP,
|
||||
true,
|
||||
NXM_OF_ARP_SPA, "NXM_OF_ARP_SPA",
|
||||
OXM_OF_ARP_SPA, "OXM_OF_ARP_SPA", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OF11_UP,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ARP_TPA, "arp_tpa", NULL,
|
||||
MF_FIELD_SIZES(be32),
|
||||
MFM_FULLY,
|
||||
MFS_IPV4,
|
||||
MFP_ARP,
|
||||
true,
|
||||
NXM_OF_ARP_TPA, "NXM_OF_ARP_TPA",
|
||||
OXM_OF_ARP_TPA, "OXM_OF_ARP_TPA", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OF11_UP,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ARP_SHA, "arp_sha", NULL,
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_ARP,
|
||||
true,
|
||||
NXM_NX_ARP_SHA, "NXM_NX_ARP_SHA",
|
||||
OXM_OF_ARP_SHA, "OXM_OF_ARP_SHA", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ARP_THA, "arp_tha", NULL,
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_ARP,
|
||||
true,
|
||||
NXM_NX_ARP_THA, "NXM_NX_ARP_THA",
|
||||
OXM_OF_ARP_THA, "OXM_OF_ARP_THA", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
},
|
||||
|
||||
/* ## -- ## */
|
||||
/* ## L4 ## */
|
||||
/* ## -- ## */
|
||||
|
||||
{
|
||||
MFF_TCP_SRC, "tcp_src", "tp_src",
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_TCP,
|
||||
true,
|
||||
NXM_OF_TCP_SRC, "NXM_OF_TCP_SRC",
|
||||
OXM_OF_TCP_SRC, "OXM_OF_TCP_SRC", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
}, {
|
||||
MFF_TCP_DST, "tcp_dst", "tp_dst",
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_TCP,
|
||||
true,
|
||||
NXM_OF_TCP_DST, "NXM_OF_TCP_DST",
|
||||
OXM_OF_TCP_DST, "OXM_OF_TCP_DST", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
}, {
|
||||
MFF_TCP_FLAGS, "tcp_flags", NULL,
|
||||
2, 12,
|
||||
MFM_FULLY,
|
||||
MFS_TCP_FLAGS,
|
||||
MFP_TCP,
|
||||
false,
|
||||
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,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_UDP_SRC, "udp_src", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_UDP,
|
||||
true,
|
||||
NXM_OF_UDP_SRC, "NXM_OF_UDP_SRC",
|
||||
OXM_OF_UDP_SRC, "OXM_OF_UDP_SRC", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
}, {
|
||||
MFF_UDP_DST, "udp_dst", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_UDP,
|
||||
true,
|
||||
NXM_OF_UDP_DST, "NXM_OF_UDP_DST",
|
||||
OXM_OF_UDP_DST, "OXM_OF_UDP_DST", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
-1,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_SCTP_SRC, "sctp_src", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_SCTP,
|
||||
true,
|
||||
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,
|
||||
}, {
|
||||
MFF_SCTP_DST, "sctp_dst", NULL,
|
||||
MF_FIELD_SIZES(be16),
|
||||
MFM_FULLY,
|
||||
MFS_DECIMAL,
|
||||
MFP_SCTP,
|
||||
true,
|
||||
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,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_ICMPV4_TYPE, "icmp_type", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_ICMPV4,
|
||||
false,
|
||||
NXM_OF_ICMP_TYPE, "NXM_OF_ICMP_TYPE",
|
||||
OXM_OF_ICMPV4_TYPE, "OXM_OF_ICMPV4_TYPE", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ICMPV4_CODE, "icmp_code", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_ICMPV4,
|
||||
false,
|
||||
NXM_OF_ICMP_CODE, "NXM_OF_ICMP_CODE",
|
||||
OXM_OF_ICMPV4_CODE, "OXM_OF_ICMPV4_CODE", OFP12_VERSION,
|
||||
OFPUTIL_P_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
},
|
||||
|
||||
{
|
||||
MFF_ICMPV6_TYPE, "icmpv6_type", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_ICMPV6,
|
||||
false,
|
||||
NXM_NX_ICMPV6_TYPE, "NXM_NX_ICMPV6_TYPE",
|
||||
OXM_OF_ICMPV6_TYPE, "OXM_OF_ICMPV6_TYPE", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
}, {
|
||||
MFF_ICMPV6_CODE, "icmpv6_code", NULL,
|
||||
MF_FIELD_SIZES(u8),
|
||||
MFM_NONE,
|
||||
MFS_DECIMAL,
|
||||
MFP_ICMPV6,
|
||||
false,
|
||||
NXM_NX_ICMPV6_CODE, "NXM_NX_ICMPV6_CODE",
|
||||
OXM_OF_ICMPV6_CODE, "OXM_OF_ICMPV6_CODE", OFP12_VERSION,
|
||||
OFPUTIL_P_NXM_OXM_ANY,
|
||||
OFPUTIL_P_NONE,
|
||||
-1,
|
||||
},
|
||||
|
||||
/* ## ---- ## */
|
||||
/* ## L"5" ## */
|
||||
/* ## ---- ## */
|
||||
|
||||
{
|
||||
MFF_ND_TARGET, "nd_target", NULL,
|
||||
MF_FIELD_SIZES(ipv6),
|
||||
MFM_FULLY,
|
||||
MFS_IPV6,
|
||||
MFP_ND,
|
||||
false,
|
||||
NXM_NX_ND_TARGET, "NXM_NX_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,
|
||||
}, {
|
||||
MFF_ND_SLL, "nd_sll", NULL,
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_ND_SOLICIT,
|
||||
false,
|
||||
NXM_NX_ND_SLL, "NXM_NX_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,
|
||||
}, {
|
||||
MFF_ND_TLL, "nd_tll", NULL,
|
||||
MF_FIELD_SIZES(mac),
|
||||
MFM_FULLY,
|
||||
MFS_ETHERNET,
|
||||
MFP_ND_ADVERT,
|
||||
false,
|
||||
NXM_NX_ND_TLL, "NXM_NX_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,
|
||||
}
|
||||
#include "meta-flow.inc"
|
||||
};
|
||||
|
||||
/* Maps an NXM or OXM header value to an mf_field. */
|
||||
@@ -2132,7 +1384,7 @@ mf_set(const struct mf_field *mf,
|
||||
{
|
||||
if (!mask || is_all_ones(mask, mf->n_bytes)) {
|
||||
mf_set_value(mf, value, match);
|
||||
return mf->usable_protocols;
|
||||
return mf->usable_protocols_exact;
|
||||
} else if (is_all_zeros(mask, mf->n_bytes)) {
|
||||
mf_set_wild(mf, match);
|
||||
return OFPUTIL_P_ANY;
|
||||
@@ -2231,11 +1483,11 @@ mf_set(const struct mf_field *mf,
|
||||
|
||||
case MFF_IPV4_SRC:
|
||||
match_set_nw_src_masked(match, value->be32, mask->be32);
|
||||
goto cidr_check;
|
||||
break;
|
||||
|
||||
case MFF_IPV4_DST:
|
||||
match_set_nw_dst_masked(match, value->be32, mask->be32);
|
||||
goto cidr_check;
|
||||
break;
|
||||
|
||||
case MFF_IPV6_SRC:
|
||||
match_set_ipv6_src_masked(match, &value->ipv6, &mask->ipv6);
|
||||
@@ -2263,11 +1515,11 @@ mf_set(const struct mf_field *mf,
|
||||
|
||||
case MFF_ARP_SPA:
|
||||
match_set_nw_src_masked(match, value->be32, mask->be32);
|
||||
goto cidr_check;
|
||||
break;
|
||||
|
||||
case MFF_ARP_TPA:
|
||||
match_set_nw_dst_masked(match, value->be32, mask->be32);
|
||||
goto cidr_check;
|
||||
break;
|
||||
|
||||
case MFF_TCP_SRC:
|
||||
case MFF_UDP_SRC:
|
||||
@@ -2290,11 +1542,10 @@ mf_set(const struct mf_field *mf,
|
||||
OVS_NOT_REACHED();
|
||||
}
|
||||
|
||||
return mf->usable_protocols_bitwise;
|
||||
|
||||
cidr_check:
|
||||
return ip_is_cidr(mask->be32) ? mf->usable_protocols :
|
||||
mf->usable_protocols_bitwise;
|
||||
return ((mf->usable_protocols_bitwise == mf->usable_protocols_cidr
|
||||
|| ip_is_cidr(mask->be32))
|
||||
? mf->usable_protocols_cidr
|
||||
: mf->usable_protocols_bitwise);
|
||||
}
|
||||
|
||||
static enum ofperr
|
||||
|
Reference in New Issue
Block a user