+ struct ofpbuf *buffer;
+ struct ofp_flow_mod *ofm;
+ uint32_t wildcards;
+
+ /* Check if we need to wildcard the flows. */
+ if (!sw->exact_flows) {
+ /* We can not wildcard all fields.
+ * We need in_port to detect moves.
+ * We need both SA and DA to do learning. */
+ wildcards = (OFPFW_DL_TYPE | OFPFW_NW_SRC_MASK | OFPFW_NW_DST_MASK
+ | OFPFW_NW_PROTO | OFPFW_TP_SRC | OFPFW_TP_DST);
+ } else {
+ /* Exact match */
+ wildcards = 0;
+ }
+
+ /* Check if we need to use "NORMAL" action. */
+ if (sw->action_normal && out_port != OFPP_FLOOD) {
+ out_port = OFPP_NORMAL;
+ }
+