- switch (mf->id) {
- case MFF_IN_PORT:
- case MFF_ETH_SRC:
- case MFF_ETH_TYPE:
- case MFF_IP_PROTO:
- case MFF_IP_DSCP:
- case MFF_IP_ECN:
- case MFF_IP_TTL:
- case MFF_IPV6_LABEL:
- case MFF_ARP_OP:
- case MFF_ARP_SHA:
- case MFF_ARP_THA:
- case MFF_ND_TARGET:
- case MFF_ND_SLL:
- case MFF_ND_TLL:
- assert(mf->fww_bit != 0);
- memset(mask, wc->wildcards & mf->fww_bit ? 0x00 : 0xff, mf->n_bytes);
- break;
-
- case MFF_TUN_ID:
- mask->be64 = wc->tun_id_mask;
- break;
-
-#if FLOW_N_REGS > 0
- case MFF_REG0:
-#endif
-#if FLOW_N_REGS > 1
- case MFF_REG1:
-#endif
-#if FLOW_N_REGS > 2
- case MFF_REG2:
-#endif
-#if FLOW_N_REGS > 3
- case MFF_REG3:
-#endif
-#if FLOW_N_REGS > 4
- case MFF_REG4:
-#endif
-#if FLOW_N_REGS > 5
- case MFF_REG5:
-#endif
-#if FLOW_N_REGS > 6
- case MFF_REG6:
-#endif
-#if FLOW_N_REGS > 7
- case MFF_REG7:
-#endif
-#if FLOW_N_REGS > 8
-#error
-#endif
- mask->be32 = htonl(wc->reg_masks[mf->id - MFF_REG0]);
- break;
-
- case MFF_ETH_DST:
- memcpy(mask->mac, flow_wildcards_to_dl_dst_mask(wc->wildcards),
- ETH_ADDR_LEN);
- break;
-
- case MFF_VLAN_TCI:
- mask->be16 = wc->vlan_tci_mask;
- break;
- case MFF_VLAN_VID:
- mask->be16 = wc->vlan_tci_mask & htons(VLAN_VID_MASK);
- break;
- case MFF_VLAN_PCP:
- mask->u8 = vlan_tci_to_pcp(wc->vlan_tci_mask);
- break;
-
- case MFF_IPV4_SRC:
- mask->be32 = wc->nw_src_mask;
- break;
- case MFF_IPV4_DST:
- mask->be32 = wc->nw_dst_mask;
- break;
-
- case MFF_IPV6_SRC:
- mask->ipv6 = wc->ipv6_src_mask;
- break;
- case MFF_IPV6_DST:
- mask->ipv6 = wc->ipv6_dst_mask;
- break;
-
- case MFF_IP_FRAG:
- mask->u8 = wc->nw_frag_mask & FLOW_NW_FRAG_MASK;
- break;
-
- case MFF_ARP_SPA:
- mask->be32 = wc->nw_src_mask;
- break;
- case MFF_ARP_TPA:
- mask->be32 = wc->nw_dst_mask;
- break;
-
- case MFF_TCP_SRC:
- case MFF_UDP_SRC:
- mask->be16 = wc->tp_src_mask;
- break;
- case MFF_TCP_DST:
- case MFF_UDP_DST:
- mask->be16 = wc->tp_dst_mask;
- break;
-
- case MFF_ICMPV4_TYPE:
- case MFF_ICMPV6_TYPE:
- mask->u8 = ntohs(wc->tp_src_mask);
- break;
- case MFF_ICMPV4_CODE:
- case MFF_ICMPV6_CODE:
- mask->u8 = ntohs(wc->tp_dst_mask);
- break;
-
- case MFF_N_IDS:
- default:
- NOT_REACHED();
- }