[ovs-dev] [PATCH v4 11/22] Move lib/match.h to include/openvswitch directory

ben at skyportsystems.com ben at skyportsystems.com
Tue Mar 22 23:17:42 UTC 2016


From: Ben Warren <ben at skyportsystems.com>

Signed-off-by: Ben Warren <ben at skyportsystems.com>
---
 include/openvswitch/automake.mk |   1 +
 include/openvswitch/match.h     | 214 ++++++++++++++++++++++++++++++++++++++++
 lib/automake.mk                 |   1 -
 lib/classifier.h                |   2 +-
 lib/dpctl.c                     |   2 +-
 lib/dpif-netdev.c               |   2 +-
 lib/flow.c                      |   2 +-
 lib/learn.c                     |   2 +-
 lib/match.c                     |   3 +-
 lib/match.h                     | 214 ----------------------------------------
 lib/ofp-util.h                  |   2 +-
 lib/tun-metadata.c              |   2 +-
 ofproto/bond.c                  |   2 +-
 ofproto/connmgr.h               |   2 +-
 ovn/controller/ofctrl.c         |   2 +-
 ovn/controller/physical.c       |   2 +-
 ovn/lib/expr.c                  |   2 +-
 ovn/lib/expr.h                  |   2 +-
 tests/test-odp.c                |   2 +-
 tests/test-ovn.c                |   2 +-
 20 files changed, 232 insertions(+), 231 deletions(-)
 create mode 100644 include/openvswitch/match.h
 delete mode 100644 lib/match.h

diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk
index 184dd89..0d79bb4 100644
--- a/include/openvswitch/automake.mk
+++ b/include/openvswitch/automake.mk
@@ -5,6 +5,7 @@ openvswitchinclude_HEADERS = \
 	include/openvswitch/flow.h \
 	include/openvswitch/geneve.h \
 	include/openvswitch/list.h \
+	include/openvswitch/match.h \
 	include/openvswitch/ofpbuf.h \
 	include/openvswitch/ofp-errors.h \
 	include/openvswitch/ofp-parse.h \
diff --git a/include/openvswitch/match.h b/include/openvswitch/match.h
new file mode 100644
index 0000000..3dc2521
--- /dev/null
+++ b/include/openvswitch/match.h
@@ -0,0 +1,214 @@
+/*
+ * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MATCH_H
+#define MATCH_H 1
+
+#include "openvswitch/flow.h"
+#include "openvswitch/packets.h"
+#include "openvswitch/tun-metadata.h"
+
+struct ds;
+
+/* A flow classification match.
+ *
+ * Use one of the match_*() functions to initialize a "struct match".
+ *
+ * The match_*() functions below maintain the following important invariant.
+ * If a bit or a field is wildcarded in 'wc', then the corresponding bit or
+ * field in 'flow' is set to all-0-bits.  (The match_zero_wildcarded_fields()
+ * function can be used to restore this invariant after adding wildcards.) */
+struct match {
+    struct flow flow;
+    struct flow_wildcards wc;
+    struct tun_metadata_allocation tun_md;
+};
+
+/* Initializer for a "struct match" that matches every packet. */
+#define MATCH_CATCHALL_INITIALIZER { .flow = { .dl_type = 0 } }
+
+void match_init(struct match *,
+                const struct flow *, const struct flow_wildcards *);
+void match_wc_init(struct match *match, const struct flow *flow);
+void match_init_catchall(struct match *);
+
+void match_zero_wildcarded_fields(struct match *);
+
+void match_set_dp_hash(struct match *, uint32_t value);
+void match_set_dp_hash_masked(struct match *, uint32_t value, uint32_t mask);
+
+void match_set_recirc_id(struct match *, uint32_t value);
+
+void match_set_conj_id(struct match *, uint32_t value);
+
+void match_set_reg(struct match *, unsigned int reg_idx, uint32_t value);
+void match_set_reg_masked(struct match *, unsigned int reg_idx,
+                          uint32_t value, uint32_t mask);
+void match_set_xreg(struct match *, unsigned int xreg_idx, uint64_t value);
+void match_set_xreg_masked(struct match *, unsigned int xreg_idx,
+                           uint64_t value, uint64_t mask);
+void match_set_actset_output(struct match *, ofp_port_t actset_output);
+void match_set_metadata(struct match *, ovs_be64 metadata);
+void match_set_metadata_masked(struct match *,
+                               ovs_be64 metadata, ovs_be64 mask);
+void match_set_tun_id(struct match *, ovs_be64 tun_id);
+void match_set_tun_id_masked(struct match *, ovs_be64 tun_id, ovs_be64 mask);
+void match_set_tun_src(struct match *match, ovs_be32 src);
+void match_set_tun_src_masked(struct match *match, ovs_be32 src, ovs_be32 mask);
+void match_set_tun_dst(struct match *match, ovs_be32 dst);
+void match_set_tun_dst_masked(struct match *match, ovs_be32 dst, ovs_be32 mask);
+void match_set_tun_ipv6_src(struct match *, const struct in6_addr *);
+void match_set_tun_ipv6_src_masked(struct match *, const struct in6_addr *,
+                                   const struct in6_addr *);
+void match_set_tun_ipv6_dst(struct match *, const struct in6_addr *);
+void match_set_tun_ipv6_dst_masked(struct match *, const struct in6_addr *,
+                                   const struct in6_addr *);
+void match_set_tun_ttl(struct match *match, uint8_t ttl);
+void match_set_tun_ttl_masked(struct match *match, uint8_t ttl, uint8_t mask);
+void match_set_tun_tos(struct match *match, uint8_t tos);
+void match_set_tun_tos_masked(struct match *match, uint8_t tos, uint8_t mask);
+void match_set_tun_flags(struct match *match, uint16_t flags);
+void match_set_tun_flags_masked(struct match *match, uint16_t flags, uint16_t mask);
+void match_set_tun_gbp_id_masked(struct match *match, ovs_be16 gbp_id, ovs_be16 mask);
+void match_set_tun_gbp_id(struct match *match, ovs_be16 gbp_id);
+void match_set_tun_gbp_flags_masked(struct match *match, uint8_t flags, uint8_t mask);
+void match_set_tun_gbp_flags(struct match *match, uint8_t flags);
+void match_set_in_port(struct match *, ofp_port_t ofp_port);
+void match_set_pkt_mark(struct match *, uint32_t pkt_mark);
+void match_set_pkt_mark_masked(struct match *, uint32_t pkt_mark, uint32_t mask);
+void match_set_ct_state(struct match *, uint32_t ct_state);
+void match_set_ct_state_masked(struct match *, uint32_t ct_state, uint32_t mask);
+void match_set_ct_zone(struct match *, uint16_t ct_zone);
+void match_set_ct_mark(struct match *, uint32_t ct_mark);
+void match_set_ct_mark_masked(struct match *, uint32_t ct_mark, uint32_t mask);
+void match_set_ct_label(struct match *, ovs_u128 ct_label);
+void match_set_ct_label_masked(struct match *, ovs_u128 ct_label, ovs_u128 mask);
+void match_set_skb_priority(struct match *, uint32_t skb_priority);
+void match_set_dl_type(struct match *, ovs_be16);
+void match_set_dl_src(struct match *, const struct eth_addr );
+void match_set_dl_src_masked(struct match *, const struct eth_addr dl_src,
+                             const struct eth_addr mask);
+void match_set_dl_dst(struct match *, const struct eth_addr);
+void match_set_dl_dst_masked(struct match *, const struct eth_addr dl_dst,
+                             const struct eth_addr mask);
+void match_set_dl_tci(struct match *, ovs_be16 tci);
+void match_set_dl_tci_masked(struct match *, ovs_be16 tci, ovs_be16 mask);
+void match_set_any_vid(struct match *);
+void match_set_dl_vlan(struct match *, ovs_be16);
+void match_set_vlan_vid(struct match *, ovs_be16);
+void match_set_vlan_vid_masked(struct match *, ovs_be16 vid, ovs_be16 mask);
+void match_set_any_pcp(struct match *);
+void match_set_dl_vlan_pcp(struct match *, uint8_t);
+void match_set_any_mpls_lse(struct match *, int idx);
+void match_set_mpls_lse(struct match *, int idx, ovs_be32);
+void match_set_any_mpls_label(struct match *, int idx);
+void match_set_mpls_label(struct match *, int idx, ovs_be32);
+void match_set_any_mpls_tc(struct match *, int idx);
+void match_set_mpls_tc(struct match *, int idx, uint8_t);
+void match_set_any_mpls_bos(struct match *, int idx);
+void match_set_mpls_bos(struct match *, int idx, uint8_t);
+void match_set_any_mpls_ttl(struct match *, int idx);
+void match_set_mpls_ttl(struct match *, int idx, uint8_t);
+void match_set_tp_src(struct match *, ovs_be16);
+void match_set_mpls_lse(struct match *, int idx, ovs_be32 lse);
+void match_set_tp_src_masked(struct match *, ovs_be16 port, ovs_be16 mask);
+void match_set_tp_dst(struct match *, ovs_be16);
+void match_set_tp_dst_masked(struct match *, ovs_be16 port, ovs_be16 mask);
+void match_set_tcp_flags(struct match *, ovs_be16);
+void match_set_tcp_flags_masked(struct match *, ovs_be16 flags, ovs_be16 mask);
+void match_set_nw_proto(struct match *, uint8_t);
+void match_set_nw_src(struct match *, ovs_be32);
+void match_set_nw_src_masked(struct match *, ovs_be32 ip, ovs_be32 mask);
+void match_set_nw_dst(struct match *, ovs_be32);
+void match_set_nw_dst_masked(struct match *, ovs_be32 ip, ovs_be32 mask);
+void match_set_nw_dscp(struct match *, uint8_t);
+void match_set_nw_ecn(struct match *, uint8_t);
+void match_set_nw_ttl(struct match *, uint8_t);
+void match_set_nw_frag(struct match *, uint8_t nw_frag);
+void match_set_nw_frag_masked(struct match *, uint8_t nw_frag, uint8_t mask);
+void match_set_icmp_type(struct match *, uint8_t);
+void match_set_icmp_code(struct match *, uint8_t);
+void match_set_arp_sha(struct match *, const struct eth_addr);
+void match_set_arp_sha_masked(struct match *,
+                              const struct eth_addr arp_sha,
+                              const struct eth_addr mask);
+void match_set_arp_tha(struct match *, const struct eth_addr);
+void match_set_arp_tha_masked(struct match *,
+                              const struct eth_addr arp_tha,
+                              const struct eth_addr mask);
+void match_set_ipv6_src(struct match *, const struct in6_addr *);
+void match_set_ipv6_src_masked(struct match *, const struct in6_addr *,
+                               const struct in6_addr *);
+void match_set_ipv6_dst(struct match *, const struct in6_addr *);
+void match_set_ipv6_dst_masked(struct match *, const struct in6_addr *,
+                               const struct in6_addr *);
+void match_set_ipv6_label(struct match *, ovs_be32);
+void match_set_ipv6_label_masked(struct match *, ovs_be32, ovs_be32);
+void match_set_nd_target(struct match *, const struct in6_addr *);
+void match_set_nd_target_masked(struct match *, const struct in6_addr *,
+                                const struct in6_addr *);
+
+bool match_equal(const struct match *, const struct match *);
+uint32_t match_hash(const struct match *, uint32_t basis);
+
+void match_init_hidden_fields(struct match *);
+bool match_has_default_hidden_fields(const struct match *);
+
+void match_format(const struct match *, struct ds *, int priority);
+char *match_to_string(const struct match *, int priority);
+void match_print(const struct match *);
+
+/* Compressed match. */
+
+/* A sparse representation of a "struct match".
+ *
+ * 'flows' is used for allocating both 'flow' and 'mask' with one
+ * miniflow_alloc() call.
+ *
+ * There are two invariants:
+ *
+ *   - The same invariant as "struct match", that is, a 1-bit in the 'flow'
+ *     must correspond to a 1-bit in 'mask'.
+ *
+ *   - 'flow' and 'mask' have the same 'map'.  This implies that 'flow' and
+ *     'mask' have the same part of "struct flow" at the same offset into
+ *     'values', which makes minimatch_matches_flow() faster.
+ */
+struct minimatch {
+    union {
+        struct {
+            struct miniflow *flow;
+            struct minimask *mask;
+        };
+        struct miniflow *flows[2];
+    };
+};
+
+void minimatch_init(struct minimatch *, const struct match *);
+void minimatch_clone(struct minimatch *, const struct minimatch *);
+void minimatch_move(struct minimatch *dst, struct minimatch *src);
+void minimatch_destroy(struct minimatch *);
+
+void minimatch_expand(const struct minimatch *, struct match *);
+
+bool minimatch_equal(const struct minimatch *a, const struct minimatch *b);
+
+bool minimatch_matches_flow(const struct minimatch *, const struct flow *);
+
+void minimatch_format(const struct minimatch *, struct ds *, int priority);
+char *minimatch_to_string(const struct minimatch *, int priority);
+
+#endif /* match.h */
diff --git a/lib/automake.mk b/lib/automake.mk
index 7b829d0..b9e26e4 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -115,7 +115,6 @@ lib_libopenvswitch_la_SOURCES = \
 	lib/mac-learning.c \
 	lib/mac-learning.h \
 	lib/match.c \
-	lib/match.h \
 	lib/mcast-snooping.c \
 	lib/mcast-snooping.h \
 	lib/memory.c \
diff --git a/lib/classifier.h b/lib/classifier.h
index 889dc1e..975a4f0 100644
--- a/lib/classifier.h
+++ b/lib/classifier.h
@@ -299,7 +299,7 @@
  * parallel to the rule's removal. */
 
 #include "cmap.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "meta-flow.h"
 #include "pvector.h"
 #include "rculist.h"
diff --git a/lib/dpctl.c b/lib/dpctl.c
index 5f70031..11b6ed0 100644
--- a/lib/dpctl.c
+++ b/lib/dpctl.c
@@ -34,7 +34,7 @@
 #include "dpif.h"
 #include "openvswitch/dynamic-string.h"
 #include "flow.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "netdev.h"
 #include "netdev-dpdk.h"
 #include "netlink.h"
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
index 119dc2d..a3c9b08 100644
--- a/lib/dpif-netdev.c
+++ b/lib/dpif-netdev.c
@@ -45,7 +45,7 @@
 #include "hmapx.h"
 #include "latch.h"
 #include "openvswitch/list.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "netdev.h"
 #include "netdev-dpdk.h"
 #include "netdev-vport.h"
diff --git a/lib/flow.c b/lib/flow.c
index b9ce331..560a90f 100644
--- a/lib/flow.c
+++ b/lib/flow.c
@@ -32,7 +32,7 @@
 #include "openvswitch/dynamic-string.h"
 #include "hash.h"
 #include "jhash.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "dp-packet.h"
 #include "openflow/openflow.h"
 #include "packets.h"
diff --git a/lib/learn.c b/lib/learn.c
index effb827..1a9dc2d 100644
--- a/lib/learn.c
+++ b/lib/learn.c
@@ -21,7 +21,7 @@
 #include "byte-order.h"
 #include "colors.h"
 #include "openvswitch/dynamic-string.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "meta-flow.h"
 #include "nx-match.h"
 #include "ofp-actions.h"
diff --git a/lib/match.c b/lib/match.c
index fd571d9..42955b8 100644
--- a/lib/match.c
+++ b/lib/match.c
@@ -15,8 +15,9 @@
  */
 
 #include <config.h>
-#include "match.h"
+#include "openvswitch/match.h"
 #include <stdlib.h>
+#include "flow.h"
 #include "byte-order.h"
 #include "colors.h"
 #include "openvswitch/dynamic-string.h"
diff --git a/lib/match.h b/lib/match.h
deleted file mode 100644
index 0a6ac29..0000000
--- a/lib/match.h
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef MATCH_H
-#define MATCH_H 1
-
-#include "flow.h"
-#include "packets.h"
-#include "tun-metadata.h"
-
-struct ds;
-
-/* A flow classification match.
- *
- * Use one of the match_*() functions to initialize a "struct match".
- *
- * The match_*() functions below maintain the following important invariant.
- * If a bit or a field is wildcarded in 'wc', then the corresponding bit or
- * field in 'flow' is set to all-0-bits.  (The match_zero_wildcarded_fields()
- * function can be used to restore this invariant after adding wildcards.) */
-struct match {
-    struct flow flow;
-    struct flow_wildcards wc;
-    struct tun_metadata_allocation tun_md;
-};
-
-/* Initializer for a "struct match" that matches every packet. */
-#define MATCH_CATCHALL_INITIALIZER { .flow = { .dl_type = 0 } }
-
-void match_init(struct match *,
-                const struct flow *, const struct flow_wildcards *);
-void match_wc_init(struct match *match, const struct flow *flow);
-void match_init_catchall(struct match *);
-
-void match_zero_wildcarded_fields(struct match *);
-
-void match_set_dp_hash(struct match *, uint32_t value);
-void match_set_dp_hash_masked(struct match *, uint32_t value, uint32_t mask);
-
-void match_set_recirc_id(struct match *, uint32_t value);
-
-void match_set_conj_id(struct match *, uint32_t value);
-
-void match_set_reg(struct match *, unsigned int reg_idx, uint32_t value);
-void match_set_reg_masked(struct match *, unsigned int reg_idx,
-                          uint32_t value, uint32_t mask);
-void match_set_xreg(struct match *, unsigned int xreg_idx, uint64_t value);
-void match_set_xreg_masked(struct match *, unsigned int xreg_idx,
-                           uint64_t value, uint64_t mask);
-void match_set_actset_output(struct match *, ofp_port_t actset_output);
-void match_set_metadata(struct match *, ovs_be64 metadata);
-void match_set_metadata_masked(struct match *,
-                               ovs_be64 metadata, ovs_be64 mask);
-void match_set_tun_id(struct match *, ovs_be64 tun_id);
-void match_set_tun_id_masked(struct match *, ovs_be64 tun_id, ovs_be64 mask);
-void match_set_tun_src(struct match *match, ovs_be32 src);
-void match_set_tun_src_masked(struct match *match, ovs_be32 src, ovs_be32 mask);
-void match_set_tun_dst(struct match *match, ovs_be32 dst);
-void match_set_tun_dst_masked(struct match *match, ovs_be32 dst, ovs_be32 mask);
-void match_set_tun_ipv6_src(struct match *, const struct in6_addr *);
-void match_set_tun_ipv6_src_masked(struct match *, const struct in6_addr *,
-                                   const struct in6_addr *);
-void match_set_tun_ipv6_dst(struct match *, const struct in6_addr *);
-void match_set_tun_ipv6_dst_masked(struct match *, const struct in6_addr *,
-                                   const struct in6_addr *);
-void match_set_tun_ttl(struct match *match, uint8_t ttl);
-void match_set_tun_ttl_masked(struct match *match, uint8_t ttl, uint8_t mask);
-void match_set_tun_tos(struct match *match, uint8_t tos);
-void match_set_tun_tos_masked(struct match *match, uint8_t tos, uint8_t mask);
-void match_set_tun_flags(struct match *match, uint16_t flags);
-void match_set_tun_flags_masked(struct match *match, uint16_t flags, uint16_t mask);
-void match_set_tun_gbp_id_masked(struct match *match, ovs_be16 gbp_id, ovs_be16 mask);
-void match_set_tun_gbp_id(struct match *match, ovs_be16 gbp_id);
-void match_set_tun_gbp_flags_masked(struct match *match, uint8_t flags, uint8_t mask);
-void match_set_tun_gbp_flags(struct match *match, uint8_t flags);
-void match_set_in_port(struct match *, ofp_port_t ofp_port);
-void match_set_pkt_mark(struct match *, uint32_t pkt_mark);
-void match_set_pkt_mark_masked(struct match *, uint32_t pkt_mark, uint32_t mask);
-void match_set_ct_state(struct match *, uint32_t ct_state);
-void match_set_ct_state_masked(struct match *, uint32_t ct_state, uint32_t mask);
-void match_set_ct_zone(struct match *, uint16_t ct_zone);
-void match_set_ct_mark(struct match *, uint32_t ct_mark);
-void match_set_ct_mark_masked(struct match *, uint32_t ct_mark, uint32_t mask);
-void match_set_ct_label(struct match *, ovs_u128 ct_label);
-void match_set_ct_label_masked(struct match *, ovs_u128 ct_label, ovs_u128 mask);
-void match_set_skb_priority(struct match *, uint32_t skb_priority);
-void match_set_dl_type(struct match *, ovs_be16);
-void match_set_dl_src(struct match *, const struct eth_addr );
-void match_set_dl_src_masked(struct match *, const struct eth_addr dl_src,
-                             const struct eth_addr mask);
-void match_set_dl_dst(struct match *, const struct eth_addr);
-void match_set_dl_dst_masked(struct match *, const struct eth_addr dl_dst,
-                             const struct eth_addr mask);
-void match_set_dl_tci(struct match *, ovs_be16 tci);
-void match_set_dl_tci_masked(struct match *, ovs_be16 tci, ovs_be16 mask);
-void match_set_any_vid(struct match *);
-void match_set_dl_vlan(struct match *, ovs_be16);
-void match_set_vlan_vid(struct match *, ovs_be16);
-void match_set_vlan_vid_masked(struct match *, ovs_be16 vid, ovs_be16 mask);
-void match_set_any_pcp(struct match *);
-void match_set_dl_vlan_pcp(struct match *, uint8_t);
-void match_set_any_mpls_lse(struct match *, int idx);
-void match_set_mpls_lse(struct match *, int idx, ovs_be32);
-void match_set_any_mpls_label(struct match *, int idx);
-void match_set_mpls_label(struct match *, int idx, ovs_be32);
-void match_set_any_mpls_tc(struct match *, int idx);
-void match_set_mpls_tc(struct match *, int idx, uint8_t);
-void match_set_any_mpls_bos(struct match *, int idx);
-void match_set_mpls_bos(struct match *, int idx, uint8_t);
-void match_set_any_mpls_ttl(struct match *, int idx);
-void match_set_mpls_ttl(struct match *, int idx, uint8_t);
-void match_set_tp_src(struct match *, ovs_be16);
-void match_set_mpls_lse(struct match *, int idx, ovs_be32 lse);
-void match_set_tp_src_masked(struct match *, ovs_be16 port, ovs_be16 mask);
-void match_set_tp_dst(struct match *, ovs_be16);
-void match_set_tp_dst_masked(struct match *, ovs_be16 port, ovs_be16 mask);
-void match_set_tcp_flags(struct match *, ovs_be16);
-void match_set_tcp_flags_masked(struct match *, ovs_be16 flags, ovs_be16 mask);
-void match_set_nw_proto(struct match *, uint8_t);
-void match_set_nw_src(struct match *, ovs_be32);
-void match_set_nw_src_masked(struct match *, ovs_be32 ip, ovs_be32 mask);
-void match_set_nw_dst(struct match *, ovs_be32);
-void match_set_nw_dst_masked(struct match *, ovs_be32 ip, ovs_be32 mask);
-void match_set_nw_dscp(struct match *, uint8_t);
-void match_set_nw_ecn(struct match *, uint8_t);
-void match_set_nw_ttl(struct match *, uint8_t);
-void match_set_nw_frag(struct match *, uint8_t nw_frag);
-void match_set_nw_frag_masked(struct match *, uint8_t nw_frag, uint8_t mask);
-void match_set_icmp_type(struct match *, uint8_t);
-void match_set_icmp_code(struct match *, uint8_t);
-void match_set_arp_sha(struct match *, const struct eth_addr);
-void match_set_arp_sha_masked(struct match *,
-                              const struct eth_addr arp_sha,
-                              const struct eth_addr mask);
-void match_set_arp_tha(struct match *, const struct eth_addr);
-void match_set_arp_tha_masked(struct match *,
-                              const struct eth_addr arp_tha,
-                              const struct eth_addr mask);
-void match_set_ipv6_src(struct match *, const struct in6_addr *);
-void match_set_ipv6_src_masked(struct match *, const struct in6_addr *,
-                               const struct in6_addr *);
-void match_set_ipv6_dst(struct match *, const struct in6_addr *);
-void match_set_ipv6_dst_masked(struct match *, const struct in6_addr *,
-                               const struct in6_addr *);
-void match_set_ipv6_label(struct match *, ovs_be32);
-void match_set_ipv6_label_masked(struct match *, ovs_be32, ovs_be32);
-void match_set_nd_target(struct match *, const struct in6_addr *);
-void match_set_nd_target_masked(struct match *, const struct in6_addr *,
-                                const struct in6_addr *);
-
-bool match_equal(const struct match *, const struct match *);
-uint32_t match_hash(const struct match *, uint32_t basis);
-
-void match_init_hidden_fields(struct match *);
-bool match_has_default_hidden_fields(const struct match *);
-
-void match_format(const struct match *, struct ds *, int priority);
-char *match_to_string(const struct match *, int priority);
-void match_print(const struct match *);
-
-/* Compressed match. */
-
-/* A sparse representation of a "struct match".
- *
- * 'flows' is used for allocating both 'flow' and 'mask' with one
- * miniflow_alloc() call.
- *
- * There are two invariants:
- *
- *   - The same invariant as "struct match", that is, a 1-bit in the 'flow'
- *     must correspond to a 1-bit in 'mask'.
- *
- *   - 'flow' and 'mask' have the same 'map'.  This implies that 'flow' and
- *     'mask' have the same part of "struct flow" at the same offset into
- *     'values', which makes minimatch_matches_flow() faster.
- */
-struct minimatch {
-    union {
-        struct {
-            struct miniflow *flow;
-            struct minimask *mask;
-        };
-        struct miniflow *flows[2];
-    };
-};
-
-void minimatch_init(struct minimatch *, const struct match *);
-void minimatch_clone(struct minimatch *, const struct minimatch *);
-void minimatch_move(struct minimatch *dst, struct minimatch *src);
-void minimatch_destroy(struct minimatch *);
-
-void minimatch_expand(const struct minimatch *, struct match *);
-
-bool minimatch_equal(const struct minimatch *a, const struct minimatch *b);
-
-bool minimatch_matches_flow(const struct minimatch *, const struct flow *);
-
-void minimatch_format(const struct minimatch *, struct ds *, int priority);
-char *minimatch_to_string(const struct minimatch *, int priority);
-
-#endif /* match.h */
diff --git a/lib/ofp-util.h b/lib/ofp-util.h
index 379257c..0e5b440 100644
--- a/lib/ofp-util.h
+++ b/lib/ofp-util.h
@@ -24,7 +24,7 @@
 #include "compiler.h"
 #include "flow.h"
 #include "openvswitch/list.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "meta-flow.h"
 #include "netdev.h"
 #include "openflow/netronome-ext.h"
diff --git a/lib/tun-metadata.c b/lib/tun-metadata.c
index 1e6ef46..7768870 100644
--- a/lib/tun-metadata.c
+++ b/lib/tun-metadata.c
@@ -21,7 +21,7 @@
 #include "bitmap.h"
 #include "compiler.h"
 #include "hmap.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "nx-match.h"
 #include "odp-netlink.h"
 #include "ofp-util.h"
diff --git a/ofproto/bond.c b/ofproto/bond.c
index 836f00f..83d6f4c 100644
--- a/ofproto/bond.c
+++ b/ofproto/bond.c
@@ -43,7 +43,7 @@
 #include "dp-packet.h"
 #include "poll-loop.h"
 #include "seq.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "shash.h"
 #include "timeval.h"
 #include "unixctl.h"
diff --git a/ofproto/connmgr.h b/ofproto/connmgr.h
index 637ad17..5b42499 100644
--- a/ofproto/connmgr.h
+++ b/ofproto/connmgr.h
@@ -20,7 +20,7 @@
 #include "classifier.h"
 #include "hmap.h"
 #include "openvswitch/list.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "ofp-util.h"
 #include "ofproto.h"
 #include "ofproto-provider.h"
diff --git a/ovn/controller/ofctrl.c b/ovn/controller/ofctrl.c
index 55ca98d..b0f0932 100644
--- a/ovn/controller/ofctrl.c
+++ b/ovn/controller/ofctrl.c
@@ -18,7 +18,7 @@
 #include "dirs.h"
 #include "openvswitch/dynamic-string.h"
 #include "hmap.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "ofp-actions.h"
 #include "ofp-msgs.h"
 #include "ofp-print.h"
diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c
index b699664..4eb253f 100644
--- a/ovn/controller/physical.c
+++ b/ovn/controller/physical.c
@@ -16,7 +16,7 @@
 #include <config.h>
 #include "physical.h"
 #include "lflow.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "ofctrl.h"
 #include "ofp-actions.h"
 #include "openvswitch/ofpbuf.h"
diff --git a/ovn/lib/expr.c b/ovn/lib/expr.c
index aae5df6..c4a600f 100644
--- a/ovn/lib/expr.c
+++ b/ovn/lib/expr.c
@@ -20,7 +20,7 @@
 #include "json.h"
 #include "lex.h"
 #include "logical-fields.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "ofp-actions.h"
 #include "shash.h"
 #include "simap.h"
diff --git a/ovn/lib/expr.h b/ovn/lib/expr.h
index fa7ccbe..3725771 100644
--- a/ovn/lib/expr.h
+++ b/ovn/lib/expr.h
@@ -56,7 +56,7 @@
 #include "lex.h"
 #include "hmap.h"
 #include "openvswitch/list.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "meta-flow.h"
 
 struct ds;
diff --git a/tests/test-odp.c b/tests/test-odp.c
index b1e20c3..602a6b6 100644
--- a/tests/test-odp.c
+++ b/tests/test-odp.c
@@ -20,7 +20,7 @@
 #include <stdio.h>
 #include "openvswitch/dynamic-string.h"
 #include "flow.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "openvswitch/ofpbuf.h"
 #include "ovstest.h"
 #include "util.h"
diff --git a/tests/test-ovn.c b/tests/test-ovn.c
index 9290692..52e0ac3 100644
--- a/tests/test-ovn.c
+++ b/tests/test-ovn.c
@@ -21,7 +21,7 @@
 #include <sys/wait.h>
 #include "openvswitch/dynamic-string.h"
 #include "fatal-signal.h"
-#include "match.h"
+#include "openvswitch/match.h"
 #include "ofp-actions.h"
 #include "openvswitch/ofpbuf.h"
 #include "ovn/lib/actions.h"
-- 
2.5.0




More information about the dev mailing list