I think it makes the code more readable. No functional change. Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com> --- lib/bfd.c | 36 ++++++++++++---------------- lib/cfm.c | 9 +++---- lib/flow.c | 42 ++++++++++++++++---------------- lib/flow.h | 47 +++++++++++++----------------------- lib/odp-util.c | 2 +- lib/tnl-neigh-cache.c | 6 ++--- lib/tnl-ports.c | 2 +- ofproto/netflow.c | 6 ++--- ofproto/ofproto-dpif-xlate.c | 57 +++++++++++++++++++------------------------- ofproto/tunnel.c | 2 +- 10 files changed, 92 insertions(+), 117 deletions(-)
diff --git a/lib/bfd.c b/lib/bfd.c index 87f3322..203a56e 100644 --- a/lib/bfd.c +++ b/lib/bfd.c @@ -648,30 +648,24 @@ bfd_should_process_flow(const struct bfd *bfd_, const struct flow *flow, { struct bfd *bfd = CONST_CAST(struct bfd *, bfd_); - if (!eth_addr_is_zero(bfd->rmt_eth_dst)) { - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); - - if (!eth_addr_equals(bfd->rmt_eth_dst, flow->dl_dst)) { - return false; - } + if (!eth_addr_is_zero(bfd->rmt_eth_dst) + && !eth_addr_equals(bfd->rmt_eth_dst, + FLOW_WC_GET_AND_MASK_WC(flow, wc, dl_dst))) { + return false; } - if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - if (flow->nw_proto == IPPROTO_UDP && !(flow->nw_frag & FLOW_NW_FRAG_LATER)) { - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); - if (flow->tp_dst == htons(BFD_DEST_PORT)) { - bool check_tnl_key; - - atomic_read_relaxed(&bfd->check_tnl_key, &check_tnl_key); - if (check_tnl_key) { - memset(&wc->masks.tunnel.tun_id, 0xff, - sizeof wc->masks.tunnel.tun_id); - return flow->tunnel.tun_id == htonll(0); - } - return true; - } + if (flow->dl_type == htons(ETH_TYPE_IP) + && FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == IPPROTO_UDP + && !(flow->nw_frag & FLOW_NW_FRAG_LATER) + && FLOW_WC_GET_AND_MASK_WC(flow, wc, tp_dst) == htons(BFD_DEST_PORT)) { + bool check_tnl_key; + + atomic_read_relaxed(&bfd->check_tnl_key, &check_tnl_key); + if (check_tnl_key) { + return FLOW_WC_GET_AND_MASK_WC(flow, wc, tunnel.tun_id) + == htonll(0); } + return true; } return false; } diff --git a/lib/cfm.c b/lib/cfm.c index 7bc22e3..3c55333 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -731,16 +731,17 @@ cfm_should_process_flow(const struct cfm *cfm_, const struct flow *flow, return false; } - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); - if (OVS_UNLIKELY(!eth_addr_equals(flow->dl_dst, cfm_ccm_addr(cfm)))) { + if (OVS_UNLIKELY( + !eth_addr_equals(FLOW_WC_GET_AND_MASK_WC(flow, wc, dl_dst), + cfm_ccm_addr(cfm)))) { return false; } atomic_read_relaxed(&cfm->check_tnl_key, &check_tnl_key); if (check_tnl_key) { - memset(&wc->masks.tunnel.tun_id, 0xff, sizeof wc->masks.tunnel.tun_id); - return flow->tunnel.tun_id == htonll(0); + return FLOW_WC_GET_AND_MASK_WC(flow, wc, tunnel.tun_id) + == htonll(0); } return true; } diff --git a/lib/flow.c b/lib/flow.c index ba4f8c7..8f052ba 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -855,8 +855,8 @@ void flow_unwildcard_tp_ports(const struct flow *flow, struct flow_wildcards *wc) { if (flow->nw_proto != IPPROTO_ICMP) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); + WC_MASK_FIELD(wc, tp_src); + WC_MASK_FIELD(wc, tp_dst); } else { wc->masks.tp_src = htons(0xff); wc->masks.tp_dst = htons(0xff); @@ -1478,8 +1478,8 @@ flow_wildcards_clear_non_packet_fields(struct flow_wildcards *wc) /* Update this function whenever struct flow changes. */ BUILD_ASSERT_DECL(FLOW_WC_SEQ == 36); - memset(&wc->masks.metadata, 0, sizeof wc->masks.metadata); - memset(&wc->masks.regs, 0, sizeof wc->masks.regs); + WC_UNMASK_FIELD(wc, metadata); + WC_UNMASK_FIELD(wc, regs); wc->masks.actset_output = 0; wc->masks.conj_id = 0; } @@ -1834,21 +1834,21 @@ flow_mask_hash_fields(const struct flow *flow, struct flow_wildcards *wc, { switch (fields) { case NX_HASH_FIELDS_ETH_SRC: - memset(&wc->masks.dl_src, 0xff, sizeof wc->masks.dl_src); + WC_MASK_FIELD(wc, dl_src); break; case NX_HASH_FIELDS_SYMMETRIC_L4: - memset(&wc->masks.dl_src, 0xff, sizeof wc->masks.dl_src); - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); + WC_MASK_FIELD(wc, dl_src); + WC_MASK_FIELD(wc, dl_dst); if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_src, 0xff, sizeof wc->masks.nw_src); - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); + WC_MASK_FIELD(wc, nw_src); + WC_MASK_FIELD(wc, nw_dst); } else if (flow->dl_type == htons(ETH_TYPE_IPV6)) { - memset(&wc->masks.ipv6_src, 0xff, sizeof wc->masks.ipv6_src); - memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); + WC_MASK_FIELD(wc, ipv6_src); + WC_MASK_FIELD(wc, ipv6_dst); } if (is_ip_any(flow)) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); + WC_MASK_FIELD(wc, nw_proto); flow_unwildcard_tp_ports(flow, wc); } wc->masks.vlan_tci |= htons(VLAN_VID_MASK | VLAN_CFI); @@ -1856,25 +1856,25 @@ flow_mask_hash_fields(const struct flow *flow, struct flow_wildcards *wc, case NX_HASH_FIELDS_SYMMETRIC_L3L4_UDP: if (is_ip_any(flow) && flow->nw_proto == IPPROTO_UDP) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); + WC_MASK_FIELD(wc, tp_src); + WC_MASK_FIELD(wc, tp_dst); } /* no break */ case NX_HASH_FIELDS_SYMMETRIC_L3L4: if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_src, 0xff, sizeof wc->masks.nw_src); - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); + WC_MASK_FIELD(wc, nw_src); + WC_MASK_FIELD(wc, nw_dst); } else if (flow->dl_type == htons(ETH_TYPE_IPV6)) { - memset(&wc->masks.ipv6_src, 0xff, sizeof wc->masks.ipv6_src); - memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); + WC_MASK_FIELD(wc, ipv6_src); + WC_MASK_FIELD(wc, ipv6_dst); } else { break; /* non-IP flow */ } - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); + WC_MASK_FIELD(wc, nw_proto); if (flow->nw_proto == IPPROTO_TCP || flow->nw_proto == IPPROTO_SCTP) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); + WC_MASK_FIELD(wc, tp_src); + WC_MASK_FIELD(wc, tp_dst); } break; diff --git a/lib/flow.h b/lib/flow.h index ea24e28..fb5e006 100644 --- a/lib/flow.h +++ b/lib/flow.h @@ -861,13 +861,18 @@ pkt_metadata_from_flow(struct pkt_metadata *md, const struct flow *flow) #define FLOW_WC_GET_AND_MASK_WC(FLOW, WC, FIELD) \ (((WC) ? WC_MASK_FIELD(WC, FIELD) : NULL), ((FLOW)->FIELD)) +/* Like the above, but only unwildcards the set bits in 'MASK'. 'MASK' is also + * applied to the returned value. */ + +#define FLOW_WC_GET_AND_MASK_WC_MASKED(FLOW, WC, FIELD, MASK) \ + (((WC) ? WC_MASK_FIELD_MASK(WC, FIELD, MASK) : 0), \ + (((FLOW)->FIELD) & (MASK))) + static inline bool is_vlan(const struct flow *flow, struct flow_wildcards *wc) { - if (wc) { - WC_MASK_FIELD_MASK(wc, vlan_tci, htons(VLAN_CFI)); - } - return (flow->vlan_tci & htons(VLAN_CFI)) != 0; + return FLOW_WC_GET_AND_MASK_WC_MASKED(flow, wc, vlan_tci, + htons(VLAN_CFI)) != 0; } static inline bool is_ip_any(const struct flow *flow) @@ -879,10 +884,7 @@ static inline bool is_ip_proto(const struct flow *flow, uint8_t ip_proto, struct flow_wildcards *wc) { if (is_ip_any(flow)) { - if (wc) { - WC_MASK_FIELD(wc, nw_proto); - } - return flow->nw_proto == ip_proto; + return FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == ip_proto; } return false; } @@ -909,10 +911,7 @@ static inline bool is_icmpv4(const struct flow *flow, struct flow_wildcards *wc) { if (flow->dl_type == htons(ETH_TYPE_IP)) { - if (wc) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - } - return flow->nw_proto == IPPROTO_ICMP; + return FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == IPPROTO_ICMP; } return false; } @@ -921,10 +920,7 @@ static inline bool is_icmpv6(const struct flow *flow, struct flow_wildcards *wc) { if (flow->dl_type == htons(ETH_TYPE_IPV6)) { - if (wc) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - } - return flow->nw_proto == IPPROTO_ICMPV6; + return FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == IPPROTO_ICMPV6; } return false; } @@ -933,15 +929,12 @@ static inline bool is_nd(const struct flow *flow, struct flow_wildcards *wc) { if (is_icmpv6(flow, wc)) { - if (wc) { - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); - } - if (flow->tp_dst != htons(0)) { + if (FLOW_WC_GET_AND_MASK_WC(flow, wc, tp_dst) != htons(0)) { return false; } if (wc) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); + WC_MASK_FIELD(wc, tp_src); } return (flow->tp_src == htons(ND_NEIGHBOR_SOLICIT) || flow->tp_src == htons(ND_NEIGHBOR_ADVERT)); @@ -952,10 +945,7 @@ static inline bool is_nd(const struct flow *flow, static inline bool is_igmp(const struct flow *flow, struct flow_wildcards *wc) { if (flow->dl_type == htons(ETH_TYPE_IP)) { - if (wc) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - } - return flow->nw_proto == IPPROTO_IGMP; + return FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == IPPROTO_IGMP; } return false; } @@ -965,7 +955,7 @@ static inline bool is_mld(const struct flow *flow, { if (is_icmpv6(flow, wc)) { if (wc) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); + WC_MASK_FIELD(wc, tp_src); } return (flow->tp_src == htons(MLD_QUERY) || flow->tp_src == htons(MLD_REPORT) @@ -979,10 +969,7 @@ static inline bool is_mld_query(const struct flow *flow, struct flow_wildcards *wc) { if (is_icmpv6(flow, wc)) { - if (wc) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); - } - return flow->tp_src == htons(MLD_QUERY); + return FLOW_WC_GET_AND_MASK_WC(flow, wc, tp_src) == htons(MLD_QUERY); } return false; } diff --git a/lib/odp-util.c b/lib/odp-util.c index 6d29b67..c1f22fc 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -5493,7 +5493,7 @@ static void pop_vlan(struct flow *base, struct ofpbuf *odp_actions, struct flow_wildcards *wc) { - memset(&wc->masks.vlan_tci, 0xff, sizeof wc->masks.vlan_tci); + WC_MASK_FIELD(wc, vlan_tci); if (base->vlan_tci & htons(VLAN_CFI)) { nl_msg_put_flag(odp_actions, OVS_ACTION_ATTR_POP_VLAN); diff --git a/lib/tnl-neigh-cache.c b/lib/tnl-neigh-cache.c index 499efff..37900e2 100644 --- a/lib/tnl-neigh-cache.c +++ b/lib/tnl-neigh-cache.c @@ -178,9 +178,9 @@ tnl_nd_snoop(const struct flow *flow, struct flow_wildcards *wc, return EINVAL; } - memset(&wc->masks.ipv6_src, 0xff, sizeof wc->masks.ipv6_src); - memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); - memset(&wc->masks.nd_target, 0xff, sizeof wc->masks.nd_target); + WC_MASK_FIELD(wc, ipv6_src); + WC_MASK_FIELD(wc, ipv6_dst); + WC_MASK_FIELD(wc, nd_target); tnl_neigh_set__(name, &flow->nd_target, flow->arp_tha); return 0; diff --git a/lib/tnl-ports.c b/lib/tnl-ports.c index ffa1389..9d928f4 100644 --- a/lib/tnl-ports.c +++ b/lib/tnl-ports.c @@ -137,7 +137,7 @@ map_insert(odp_port_t port, struct eth_addr mac, struct in6_addr *addr, match.wc.masks.ipv6_dst = in6addr_exact; } match.wc.masks.vlan_tci = OVS_BE16_MAX; - memset(&match.wc.masks.dl_dst, 0xff, sizeof (struct eth_addr)); + WC_MASK_FIELD(&match.wc, dl_dst); cls_rule_init(&p->cr, &match, 0); /* Priority == 0. */ ovs_refcount_init(&p->ref_cnt); diff --git a/ofproto/netflow.c b/ofproto/netflow.c index 55f7814..cd2b932 100644 --- a/ofproto/netflow.c +++ b/ofproto/netflow.c @@ -95,9 +95,9 @@ netflow_mask_wc(const struct flow *flow, struct flow_wildcards *wc) if (flow->dl_type != htons(ETH_TYPE_IP)) { return; } - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - memset(&wc->masks.nw_src, 0xff, sizeof wc->masks.nw_src); - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); + WC_MASK_FIELD(wc, nw_proto); + WC_MASK_FIELD(wc, nw_src); + WC_MASK_FIELD(wc, nw_dst); flow_unwildcard_tp_ports(flow, wc); wc->masks.nw_tos |= IP_DSCP_MASK; } diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c index 0403c98..573e639 100644 --- a/ofproto/ofproto-dpif-xlate.c +++ b/ofproto/ofproto-dpif-xlate.c @@ -1393,7 +1393,7 @@ static bool stp_should_process_flow(const struct flow *flow, struct flow_wildcards *wc) { /* is_stp() also checks dl_type, but dl_type is always set in 'wc'. */ - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); + WC_MASK_FIELD(wc, dl_dst); return is_stp(flow); } @@ -1969,19 +1969,15 @@ is_gratuitous_arp(const struct flow *flow, struct flow_wildcards *wc) return false; } - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); - if (!eth_addr_is_broadcast(flow->dl_dst)) { + if (!eth_addr_is_broadcast(FLOW_WC_GET_AND_MASK_WC(flow, wc, dl_dst))) { return false; } - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - if (flow->nw_proto == ARP_OP_REPLY) { + if (FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == ARP_OP_REPLY) { return true; - } else if (flow->nw_proto == ARP_OP_REQUEST) { - memset(&wc->masks.nw_src, 0xff, sizeof wc->masks.nw_src); - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); - - return flow->nw_src == flow->nw_dst; + } else if (FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_proto) == ARP_OP_REQUEST) { + return FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_src) + == FLOW_WC_GET_AND_MASK_WC(flow, wc, nw_dst); } else { return false; } @@ -2408,10 +2404,10 @@ static bool is_ip_local_multicast(const struct flow *flow, struct flow_wildcards *wc) { if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); - return ip_is_local_multicast(flow->nw_dst); + return ip_is_local_multicast(FLOW_WC_GET_AND_MASK_WC(flow, wc, + nw_dst)); } else if (flow->dl_type == htons(ETH_TYPE_IPV6)) { - memset(&wc->masks.ipv6_dst, 0xff, sizeof wc->masks.ipv6_dst); + WC_MASK_FIELD(wc, ipv6_dst); return ipv6_is_all_hosts(&flow->ipv6_dst); } else { return false; @@ -2430,8 +2426,8 @@ xlate_normal(struct xlate_ctx *ctx) uint16_t vlan; uint16_t vid; - memset(&wc->masks.dl_src, 0xff, sizeof wc->masks.dl_src); - memset(&wc->masks.dl_dst, 0xff, sizeof wc->masks.dl_dst); + WC_MASK_FIELD(wc, dl_src); + WC_MASK_FIELD(wc, dl_dst); wc->masks.vlan_tci |= htons(VLAN_VID_MASK | VLAN_CFI); in_xbundle = lookup_input_bundle(ctx->xbridge, flow->in_port.ofp_port, @@ -2502,7 +2498,7 @@ xlate_normal(struct xlate_ctx *ctx) struct mcast_group *grp = NULL; if (is_igmp(flow, wc)) { - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); + WC_MASK_FIELD(wc, tp_src); if (mcast_snooping_is_membership(flow->tp_src) || mcast_snooping_is_query(flow->tp_src)) { if (ctx->xin->may_learn && ctx->xin->packet) { @@ -3151,7 +3147,7 @@ compose_output_action__(struct xlate_ctx *ctx, ofp_port_t ofp_port, flow_nw_tos = flow->nw_tos; if (count_skb_priorities(xport)) { - memset(&wc->masks.skb_priority, 0xff, sizeof wc->masks.skb_priority); + WC_MASK_FIELD(wc, skb_priority); if (dscp_from_skb_priority(xport, flow->skb_priority, &dscp)) { wc->masks.nw_tos |= IP_DSCP_MASK; flow->nw_tos &= ~IP_DSCP_MASK; @@ -4787,8 +4783,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; case OFPACT_ENQUEUE: - memset(&wc->masks.skb_priority, 0xff, - sizeof wc->masks.skb_priority); + WC_MASK_FIELD(wc, skb_priority); xlate_enqueue_action(ctx, ofpact_get_ENQUEUE(a)); break; @@ -4813,13 +4808,13 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; case OFPACT_STRIP_VLAN: - memset(&wc->masks.vlan_tci, 0xff, sizeof wc->masks.vlan_tci); + WC_MASK_FIELD(wc, vlan_tci); flow->vlan_tci = htons(0); break; case OFPACT_PUSH_VLAN: /* XXX 802.1AD(QinQ) */ - memset(&wc->masks.vlan_tci, 0xff, sizeof wc->masks.vlan_tci); + WC_MASK_FIELD(wc, vlan_tci); flow->vlan_tci = htons(VLAN_CFI); break; @@ -4835,14 +4830,14 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, case OFPACT_SET_IPV4_SRC: if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_src, 0xff, sizeof wc->masks.nw_src); + WC_MASK_FIELD(wc, nw_src); flow->nw_src = ofpact_get_SET_IPV4_SRC(a)->ipv4; } break; case OFPACT_SET_IPV4_DST: if (flow->dl_type == htons(ETH_TYPE_IP)) { - memset(&wc->masks.nw_dst, 0xff, sizeof wc->masks.nw_dst); + WC_MASK_FIELD(wc, nw_dst); flow->nw_dst = ofpact_get_SET_IPV4_DST(a)->ipv4; } break; @@ -4872,16 +4867,16 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, case OFPACT_SET_L4_SRC_PORT: if (is_ip_any(flow) && !(flow->nw_frag & FLOW_NW_FRAG_LATER)) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - memset(&wc->masks.tp_src, 0xff, sizeof wc->masks.tp_src); + WC_MASK_FIELD(wc, nw_proto); + WC_MASK_FIELD(wc, tp_src); flow->tp_src = htons(ofpact_get_SET_L4_SRC_PORT(a)->port); } break; case OFPACT_SET_L4_DST_PORT: if (is_ip_any(flow) && !(flow->nw_frag & FLOW_NW_FRAG_LATER)) { - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); - memset(&wc->masks.tp_dst, 0xff, sizeof wc->masks.tp_dst); + WC_MASK_FIELD(wc, nw_proto); + WC_MASK_FIELD(wc, tp_dst); flow->tp_dst = htons(ofpact_get_SET_L4_DST_PORT(a)->port); } break; @@ -4902,14 +4897,12 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; case OFPACT_SET_QUEUE: - memset(&wc->masks.skb_priority, 0xff, - sizeof wc->masks.skb_priority); + WC_MASK_FIELD(wc, skb_priority); xlate_set_queue_action(ctx, ofpact_get_SET_QUEUE(a)->queue_id); break; case OFPACT_POP_QUEUE: - memset(&wc->masks.skb_priority, 0xff, - sizeof wc->masks.skb_priority); + WC_MASK_FIELD(wc, skb_priority); flow->skb_priority = ctx->orig_skb_priority; break; @@ -5024,7 +5017,7 @@ do_xlate_actions(const struct ofpact *ofpacts, size_t ofpacts_len, break; } case OFPACT_FIN_TIMEOUT: - memset(&wc->masks.nw_proto, 0xff, sizeof wc->masks.nw_proto); + WC_MASK_FIELD(wc, nw_proto); xlate_fin_timeout(ctx, ofpact_get_FIN_TIMEOUT(a)); break; diff --git a/ofproto/tunnel.c b/ofproto/tunnel.c index 9a69071..4b48c37 100644 --- a/ofproto/tunnel.c +++ b/ofproto/tunnel.c @@ -383,7 +383,7 @@ tnl_wc_init(struct flow *flow, struct flow_wildcards *wc) wc->masks.tunnel.tp_src = 0; wc->masks.tunnel.tp_dst = 0; - memset(&wc->masks.pkt_mark, 0xff, sizeof wc->masks.pkt_mark); + WC_MASK_FIELD(wc, pkt_mark); if (is_ip_any(flow) && IP_ECN_is_ce(flow->tunnel.ip_tos)) { -- 2.9.3 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev