I think it makes the code more readable. No functional change.
Signed-off-by: Daniele Di Proietto <[email protected]>
---
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
[email protected]
http://openvswitch.org/mailman/listinfo/dev