2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 06:15:47 +00:00

flow: New function flow_wildcards_is_catchall().

This will be used in an upcoming commit.
This commit is contained in:
Ben Pfaff
2011-09-12 16:38:52 -07:00
parent 993410fbc7
commit ecf1e7ac2b
2 changed files with 31 additions and 0 deletions

View File

@@ -606,6 +606,8 @@ flow_wildcards_is_exact(const struct flow_wildcards *wc)
{
int i;
BUILD_ASSERT_DECL(FLOW_WC_SEQ == 1);
if (wc->wildcards
|| wc->tun_id_mask != htonll(UINT64_MAX)
|| wc->nw_src_mask != htonl(UINT32_MAX)
@@ -625,6 +627,34 @@ flow_wildcards_is_exact(const struct flow_wildcards *wc)
return true;
}
/* Returns true if 'wc' matches every packet, false if 'wc' fixes any bits or
* fields. */
bool
flow_wildcards_is_catchall(const struct flow_wildcards *wc)
{
int i;
BUILD_ASSERT_DECL(FLOW_WC_SEQ == 1);
if (wc->wildcards != FWW_ALL
|| wc->tun_id_mask != htonll(0)
|| wc->nw_src_mask != htonl(0)
|| wc->nw_dst_mask != htonl(0)
|| wc->vlan_tci_mask != htons(0)
|| !ipv6_mask_is_any(&wc->ipv6_src_mask)
|| !ipv6_mask_is_any(&wc->ipv6_dst_mask)) {
return false;
}
for (i = 0; i < FLOW_N_REGS; i++) {
if (wc->reg_masks[i] != 0) {
return false;
}
}
return true;
}
/* Initializes 'dst' as the combination of wildcards in 'src1' and 'src2'.
* That is, a bit or a field is wildcarded in 'dst' if it is wildcarded in
* 'src1' or 'src2' or both. */