lib: Add xpipe_nonblocking helper
[sliver-openvswitch.git] / lib / learning-switch.c
index c1cd909..dc19aa5 100644 (file)
@@ -575,8 +575,9 @@ process_packet_in(struct lswitch *sw, const struct ofp_header *oh)
         /* The output port is known, or we always flood everything, so add a
          * new flow. */
         memset(&fm, 0, sizeof fm);
-        cls_rule_init(&flow, &sw->wc, 0, &fm.cr);
-        ofputil_normalize_rule_quiet(&fm.cr);
+        match_init(&fm.match, &flow, &sw->wc);
+        ofputil_normalize_match_quiet(&fm.match);
+        fm.priority = 0;
         fm.table_id = 0xff;
         fm.command = OFPFC_ADD;
         fm.idle_timeout = sw->max_idle;
@@ -590,13 +591,13 @@ process_packet_in(struct lswitch *sw, const struct ofp_header *oh)
 
         /* If the switch didn't buffer the packet, we need to send a copy. */
         if (pi.buffer_id == UINT32_MAX && out_port != OFPP_NONE) {
-            queue_tx(sw, ofputil_encode_packet_out(&po));
+            queue_tx(sw, ofputil_encode_packet_out(&po, sw->protocol));
         }
     } else {
         /* We don't know that MAC, or we don't set up flows.  Send along the
          * packet without setting up a flow. */
         if (pi.buffer_id != UINT32_MAX || out_port != OFPP_NONE) {
-            queue_tx(sw, ofputil_encode_packet_out(&po));
+            queue_tx(sw, ofputil_encode_packet_out(&po, sw->protocol));
         }
     }
 }