if (entry->mark) {
ds_put_format(ds, ",mark=%"PRIu32, entry->mark);
}
- if (!ovs_u128_is_zero(&entry->labels)) {
+ if (!ovs_u128_is_zero(entry->labels)) {
ovs_be128 value;
ds_put_cstr(ds, ",labels=");
if (ufidp) {
CMAP_FOR_EACH_WITH_HASH (netdev_flow, node, dp_netdev_flow_hash(ufidp),
&pmd->flow_table) {
- if (ovs_u128_equals(&netdev_flow->ufid, ufidp)) {
+ if (ovs_u128_equals(netdev_flow->ufid, *ufidp)) {
return netdev_flow;
}
}
/* Userspace datapath doesn't support conntrack. */
if (flow->ct_state || flow->ct_zone || flow->ct_mark
- || !ovs_u128_is_zero(&flow->ct_label)) {
+ || !ovs_u128_is_zero(flow->ct_label)) {
return EINVAL;
}
PMD_ID_NULL, &reply, &flow);
if (!error
&& (!ufid || (flow.ufid_present
- && ovs_u128_equals(ufid, &flow.ufid)))) {
+ && ovs_u128_equals(*ufid, flow.ufid)))) {
enable_feature = true;
}
miniflow_push_uint32(mf, ct_mark, md->ct_mark);
miniflow_pad_to_64(mf, ct_mark);
- if (!ovs_u128_is_zero(&md->ct_label)) {
+ if (!ovs_u128_is_zero(md->ct_label)) {
miniflow_push_words(mf, ct_label, &md->ct_label,
sizeof md->ct_label / sizeof(uint64_t));
}
if (flow->ct_mark != 0) {
match_set_ct_mark(flow_metadata, flow->ct_mark);
}
- if (!ovs_u128_is_zero(&flow->ct_label)) {
+ if (!ovs_u128_is_zero(flow->ct_label)) {
match_set_ct_label(flow_metadata, flow->ct_label);
}
}
if (!flow->ct_mark) {
WC_UNMASK_FIELD(wc, ct_mark);
}
- if (ovs_u128_is_zero(&flow->ct_label)) {
+ if (ovs_u128_is_zero(flow->ct_label)) {
WC_UNMASK_FIELD(wc, ct_label);
}
for (int i = 0; i < FLOW_N_REGS; i++) {
static void
format_ct_label_masked(struct ds *s, const ovs_u128 *key, const ovs_u128 *mask)
{
- if (!ovs_u128_is_zero(mask)) {
+ if (!ovs_u128_is_zero(*mask)) {
ovs_be128 value = hton128(*key);
ds_put_format(s, "%sct_label=%s", colors.param, colors.end);
ds_put_hex(s, &value, sizeof value);
format_uint32_masked(s, "ct_mark", f->ct_mark, wc->masks.ct_mark);
}
- if (!ovs_u128_is_zero(&wc->masks.ct_label)) {
+ if (!ovs_u128_is_zero(wc->masks.ct_label)) {
format_ct_label_masked(s, &f->ct_label, &wc->masks.ct_label);
}
case MFF_CT_MARK:
return !wc->masks.ct_mark;
case MFF_CT_LABEL:
- return ovs_u128_is_zero(&wc->masks.ct_label);
+ return ovs_u128_is_zero(wc->masks.ct_label);
CASE_MFF_REGS:
return !wc->masks.regs[mf->id - MFF_REG0];
CASE_MFF_XREGS:
nl_msg_put_unspec(actions, OVS_CT_ATTR_MARK, &ct_mark,
sizeof(ct_mark));
}
- if (!ovs_u128_is_zero(&ct_label.mask)) {
+ if (!ovs_u128_is_zero(ct_label.mask)) {
nl_msg_put_unspec(actions, OVS_CT_ATTR_LABELS, &ct_label,
sizeof ct_label);
}
format_u128(struct ds *ds, const ovs_u128 *key, const ovs_u128 *mask,
bool verbose)
{
- if (verbose || (mask && !ovs_u128_is_zero(mask))) {
+ if (verbose || (mask && !ovs_u128_is_zero(*mask))) {
ovs_be128 value;
value = hton128(*key);
ds_put_hex(ds, &value, sizeof value);
- if (mask && !(ovs_u128_is_ones(mask))) {
+ if (mask && !(ovs_u128_is_ones(*mask))) {
value = hton128(*mask);
ds_put_char(ds, '/');
ds_put_hex(ds, &value, sizeof value);
if (md->ct_mark) {
nl_msg_put_u32(buf, OVS_KEY_ATTR_CT_MARK, md->ct_mark);
}
- if (!ovs_u128_is_zero(&md->ct_label)) {
+ if (!ovs_u128_is_zero(md->ct_label)) {
nl_msg_put_unspec(buf, OVS_KEY_ATTR_CT_LABELS, &md->ct_label,
sizeof(md->ct_label));
}
/* Returns non-zero if the parameters have equal value. */
static inline int
-ovs_u128_equals(const ovs_u128 *a, const ovs_u128 *b)
+ovs_u128_equals(const ovs_u128 a, const ovs_u128 b)
{
- return (a->u64.hi == b->u64.hi) && (a->u64.lo == b->u64.lo);
+ return (a.u64.hi == b.u64.hi) && (a.u64.lo == b.u64.lo);
}
/* Returns true if 'val' is 0. */
static inline bool
-ovs_u128_is_zero(const ovs_u128 *val)
+ovs_u128_is_zero(const ovs_u128 val)
{
- return !(val->u64.hi || val->u64.lo);
+ return !(val.u64.hi || val.u64.lo);
}
/* Returns true if 'val' is all ones. */
static inline bool
-ovs_u128_is_ones(const ovs_u128 *val)
+ovs_u128_is_ones(const ovs_u128 val)
{
- return ovs_u128_equals(val, &OVS_U128_MAX);
+ return ovs_u128_equals(val, OVS_U128_MAX);
}
/* Returns non-zero if the parameters have equal value. */
static inline int
-ovs_be128_equals(const ovs_be128 *a, const ovs_be128 *b)
+ovs_be128_equals(const ovs_be128 a, const ovs_be128 b)
{
- return (a->be64.hi == b->be64.hi) && (a->be64.lo == b->be64.lo);
+ return (a.be64.hi == b.be64.hi) && (a.be64.lo == b.be64.lo);
}
/* Returns true if 'val' is 0. */
static inline bool
-ovs_be128_is_zero(const ovs_be128 *val)
+ovs_be128_is_zero(const ovs_be128 val)
{
- return !(val->be64.hi || val->be64.lo);
+ return !(val.be64.hi || val.be64.lo);
}
static inline ovs_u128
CMAP_FOR_EACH_WITH_HASH (ukey, cmap_node,
get_ukey_hash(ufid, pmd_id), cmap) {
- if (ovs_u128_equals(&ukey->ufid, ufid)) {
+ if (ovs_u128_equals(ukey->ufid, *ufid)) {
return ukey;
}
}
put_ct_label(const struct flow *flow, struct ofpbuf *odp_actions,
struct flow_wildcards *wc)
{
- if (!ovs_u128_is_zero(&wc->masks.ct_label)) {
+ if (!ovs_u128_is_zero(wc->masks.ct_label)) {
struct {
ovs_u128 key;
ovs_u128 mask;
|| ((ct_state & (CS_SRC_NAT | CS_DST_NAT)) && !support->ct_state_nat)
|| (ct_zone && !support->ct_zone)
|| (ct_mark && !support->ct_mark)
- || (!ovs_u128_is_zero(&ct_label) && !support->ct_label)) {
+ || (!ovs_u128_is_zero(ct_label) && !support->ct_label)) {
return OFPERR_OFPBMC_BAD_MASK;
}
set_bit128(&in1, i, n_bits);
hash(in0, sizeof(ovs_u128), 0, &out0);
hash(&in1, sizeof(ovs_u128), 0, &out1);
- if (!ovs_u128_equals(&out0, &out1)) {
+ if (!ovs_u128_equals(out0, out1)) {
printf("%s hash not the same for non-64 aligned data "
"%016"PRIx64"%016"PRIx64" != %016"PRIx64"%016"PRIx64"\n",
name, out0.u64.lo, out0.u64.hi, out1.u64.lo, out1.u64.hi);
set_bit128(in1, i, n_bits);
hash(in0, sizeof(ovs_u128) * 16, 0, &out0);
hash(in1, sizeof(ovs_u128) * 16, 0, &out1);
- if (!ovs_u128_equals(&out0, &out1)) {
+ if (!ovs_u128_equals(out0, out1)) {
printf("%s hash not the same for non-64 aligned data "
"%016"PRIx64"%016"PRIx64" != %016"PRIx64"%016"PRIx64"\n",
name, out0.u64.lo, out0.u64.hi, out1.u64.lo, out1.u64.hi);