- dp_output_control(dp, buffer, in_port, ntohs(dp->config.miss_send_len),
+ return -ESRCH;
+ }
+}
+
+/* 'buffer' was received on 'in_port', a physical switch port between 0 and
+ * OFPP_MAX. Process it according to 'dp''s flow table, sending it up to the
+ * controller if no flow matches. Takes ownership of 'buffer'. */
+void fwd_port_input(struct datapath *dp, struct buffer *buffer, int in_port)
+{
+ if (run_flow_through_tables(dp, buffer, in_port)) {
+ dp_output_control(dp, buffer, in_port, dp->miss_send_len,