flow: Move flow_extract_stats() to dpif.c, as dpif_flow_stats_extract().
authorBen Pfaff <blp@nicira.com>
Thu, 29 Sep 2011 22:36:14 +0000 (15:36 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 30 Sep 2011 15:58:10 +0000 (08:58 -0700)
The "flow" module is concerned only with OpenFlow flows these days.  It
shouldn't have anything to do with ODP or dpifs.  However, it included
dpif.h just to implement flow_extract_stats().  This function is a better
fit for dpif.c, so this commit moves it there and removes the dpif.h
#include from flow.h and flow.c

This commit also removes a few more dpif.h #includes that weren't needed.

lib/dpif.c
lib/dpif.h
lib/flow.c
lib/flow.h
ofproto/in-band.c
ofproto/ofproto-dpif.c

index 2d21a9f..82b6018 100644 (file)
@@ -661,6 +661,26 @@ dpif_port_poll_wait(const struct dpif *dpif)
     dpif->dpif_class->port_poll_wait(dpif);
 }
 
+/* Extracts the flow stats for a packet.  The 'flow' and 'packet'
+ * arguments must have been initialized through a call to flow_extract().
+ */
+void
+dpif_flow_stats_extract(const struct flow *flow, struct ofpbuf *packet,
+                        struct dpif_flow_stats *stats)
+{
+    memset(stats, 0, sizeof(*stats));
+
+    if ((flow->dl_type == htons(ETH_TYPE_IP)) && packet->l4) {
+        if ((flow->nw_proto == IPPROTO_TCP) && packet->l7) {
+            struct tcp_header *tcp = packet->l4;
+            stats->tcp_flags = TCP_FLAGS(tcp->tcp_ctl);
+        }
+    }
+
+    stats->n_bytes = packet->size;
+    stats->n_packets = 1;
+}
+
 /* Appends a human-readable representation of 'stats' to 's'. */
 void
 dpif_flow_stats_format(const struct dpif_flow_stats *stats, struct ds *s)
index b572d0f..f833219 100644 (file)
@@ -32,6 +32,7 @@ extern "C" {
 
 struct dpif;
 struct ds;
+struct flow;
 struct nlattr;
 struct ofpbuf;
 struct sset;
@@ -115,6 +116,8 @@ struct dpif_flow_stats {
     uint8_t tcp_flags;
 };
 
+void dpif_flow_stats_extract(const struct flow *, struct ofpbuf *packet,
+                             struct dpif_flow_stats *);
 void dpif_flow_stats_format(const struct dpif_flow_stats *, struct ds *);
 
 enum dpif_flow_put_flags {
index b0131f0..2d62a12 100644 (file)
@@ -26,7 +26,6 @@
 #include <string.h>
 #include "byte-order.h"
 #include "coverage.h"
-#include "dpif.h"
 #include "dynamic-string.h"
 #include "hash.h"
 #include "ofpbuf.h"
@@ -424,26 +423,6 @@ flow_extract(struct ofpbuf *packet, ovs_be64 tun_id, uint16_t ofp_in_port,
     return retval;
 }
 
-/* Extracts the flow stats for a packet.  The 'flow' and 'packet'
- * arguments must have been initialized through a call to flow_extract().
- */
-void
-flow_extract_stats(const struct flow *flow, struct ofpbuf *packet,
-                   struct dpif_flow_stats *stats)
-{
-    memset(stats, 0, sizeof(*stats));
-
-    if ((flow->dl_type == htons(ETH_TYPE_IP)) && packet->l4) {
-        if ((flow->nw_proto == IPPROTO_TCP) && packet->l7) {
-            struct tcp_header *tcp = packet->l4;
-            stats->tcp_flags = TCP_FLAGS(tcp->tcp_ctl);
-        }
-    }
-
-    stats->n_bytes = packet->size;
-    stats->n_packets = 1;
-}
-
 /* For every bit of a field that is wildcarded in 'wildcards', sets the
  * corresponding bit in 'flow' to zero. */
 void
index a593516..3f807c5 100644 (file)
@@ -79,8 +79,6 @@ BUILD_ASSERT_DECL(FLOW_SIG_SIZE == 116 && FLOW_WC_SEQ == 1);
 
 int flow_extract(struct ofpbuf *, ovs_be64 tun_id, uint16_t in_port,
                  struct flow *);
-void flow_extract_stats(const struct flow *flow, struct ofpbuf *packet,
-                        struct dpif_flow_stats *);
 void flow_zero_wildcards(struct flow *, const struct flow_wildcards *);
 
 char *flow_to_string(const struct flow *);
index 13093e0..cd9c050 100644 (file)
@@ -25,7 +25,6 @@
 #include <stdlib.h>
 #include "classifier.h"
 #include "dhcp.h"
-#include "dpif.h"
 #include "flow.h"
 #include "netdev.h"
 #include "netlink.h"
index 165732c..761b591 100644 (file)
@@ -2258,7 +2258,7 @@ facet_execute(struct ofproto_dpif *ofproto, struct facet *facet,
 
     assert(ofpbuf_headroom(packet) >= sizeof(struct ofp_packet_in));
 
-    flow_extract_stats(&facet->flow, packet, &stats);
+    dpif_flow_stats_extract(&facet->flow, packet, &stats);
     stats.used = time_msec();
     if (execute_odp_actions(ofproto, &facet->flow,
                             facet->actions, facet->actions_len, packet)) {