dpif: Avoid use of "struct ovs_dp_stats" in platform-independent modules.
authorBen Pfaff <blp@nicira.com>
Wed, 5 Oct 2011 18:18:13 +0000 (11:18 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 5 Oct 2011 18:18:13 +0000 (11:18 -0700)
Over time we wish to reduce the number of datapath-protocol.h definitions
used directly outside of Linux-specific code.  This commit removes use of
"struct ovs_dp_stats" from platform-independent code.

Bug #7559.

lib/dpif-linux.c
lib/dpif-netdev.c
lib/dpif-provider.h
lib/dpif.c
lib/dpif.h
ofproto/ofproto-dpif.c
utilities/ovs-dpctl.c

index b195a72195446e0308a70d15abb2c680c49137c8..4ddd4647660c62928c978074e4f71daf7c4cb88f 100644 (file)
@@ -333,7 +333,7 @@ dpif_linux_wait(struct dpif *dpif OVS_UNUSED)
 }
 
 static int
-dpif_linux_get_stats(const struct dpif *dpif_, struct ovs_dp_stats *stats)
+dpif_linux_get_stats(const struct dpif *dpif_, struct dpif_dp_stats *stats)
 {
     struct dpif_linux_dp dp;
     struct ofpbuf *buf;
@@ -341,7 +341,11 @@ dpif_linux_get_stats(const struct dpif *dpif_, struct ovs_dp_stats *stats)
 
     error = dpif_linux_dp_get(dpif_, &dp, &buf);
     if (!error) {
-        *stats = dp.stats;
+        stats->n_frags  = dp.stats.n_frags;
+        stats->n_hit    = dp.stats.n_hit;
+        stats->n_missed = dp.stats.n_missed;
+        stats->n_lost   = dp.stats.n_lost;
+        stats->n_flows  = dp.stats.n_flows;
         ofpbuf_delete(buf);
     }
     return error;
index 926464e266ff202f6f6c740b2c381b0631cc0633..af62bf0c25e6d6405a7fd6bb8fb439d4b626acc0 100644 (file)
@@ -297,10 +297,9 @@ dpif_netdev_destroy(struct dpif *dpif)
 }
 
 static int
-dpif_netdev_get_stats(const struct dpif *dpif, struct ovs_dp_stats *stats)
+dpif_netdev_get_stats(const struct dpif *dpif, struct dpif_dp_stats *stats)
 {
     struct dp_netdev *dp = get_dp_netdev(dpif);
-    memset(stats, 0, sizeof *stats);
     stats->n_flows = hmap_count(&dp->flow_table);
     stats->n_frags = dp->n_frags;
     stats->n_hit = dp->n_hit;
index 558b8913deb0ebb713fa496b0d3517e66246c3ad..1975cc5c1996765c3506dfced9b6762f898bdf28 100644 (file)
@@ -108,7 +108,7 @@ struct dpif_class {
     void (*wait)(struct dpif *dpif);
 
     /* Retrieves statistics for 'dpif' into 'stats'. */
-    int (*get_stats)(const struct dpif *dpif, struct ovs_dp_stats *stats);
+    int (*get_stats)(const struct dpif *dpif, struct dpif_dp_stats *stats);
 
     /* Retrieves 'dpif''s current treatment of IP fragments into '*drop_frags':
      * true indicates that fragments are dropped, false indicates that
index 82b60180a9866fc199feb0df065f6a1e0bb2f7c6..c6940b149bb11760d6ea128255d8b48b49fe27eb 100644 (file)
@@ -378,7 +378,7 @@ dpif_delete(struct dpif *dpif)
 /* Retrieves statistics for 'dpif' into 'stats'.  Returns 0 if successful,
  * otherwise a positive errno value. */
 int
-dpif_get_dp_stats(const struct dpif *dpif, struct ovs_dp_stats *stats)
+dpif_get_dp_stats(const struct dpif *dpif, struct dpif_dp_stats *stats)
 {
     int error = dpif->dpif_class->get_stats(dpif, stats);
     if (error) {
index f833219425982e7841a64c2d6fffde971f61dc7a..04c0a519237069c85b0e6d1909a07f59551a1a62 100644 (file)
@@ -59,7 +59,16 @@ const char *dpif_base_name(const struct dpif *);
 
 int dpif_delete(struct dpif *);
 
-int dpif_get_dp_stats(const struct dpif *, struct ovs_dp_stats *);
+/* Statisticss for a dpif as a whole. */
+struct dpif_dp_stats {
+    uint64_t n_frags;           /* Number of dropped IP fragments. */
+    uint64_t n_hit;             /* Number of flow table matches. */
+    uint64_t n_missed;          /* Number of flow table misses. */
+    uint64_t n_lost;            /* Number of misses not sent to userspace. */
+    uint64_t n_flows;           /* Number of flows present. */
+};
+int dpif_get_dp_stats(const struct dpif *, struct dpif_dp_stats *);
+
 int dpif_get_drop_frags(const struct dpif *, bool *drop_frags);
 int dpif_set_drop_frags(struct dpif *, bool drop_frags);
 
index de243fcbdc7b82b701a2490aa2612a4f95494e2d..9e8b1fb541aff8f1619e6cf744575646efcdca0d 100644 (file)
@@ -710,7 +710,7 @@ static void
 get_tables(struct ofproto *ofproto_, struct ofp_table_stats *ots)
 {
     struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_);
-    struct ovs_dp_stats s;
+    struct dpif_dp_stats s;
 
     strcpy(ots->name, "classifier");
 
index e724e745b2316787c5c396cb2cf20733e94f0138..4d0d3c2db0c4265db836b3006b78ee12b2992c4c 100644 (file)
@@ -366,17 +366,17 @@ show_dpif(struct dpif *dpif)
 {
     struct dpif_port_dump dump;
     struct dpif_port dpif_port;
-    struct ovs_dp_stats stats;
+    struct dpif_dp_stats stats;
     struct netdev *netdev;
 
     printf("%s:\n", dpif_name(dpif));
     if (!dpif_get_dp_stats(dpif, &stats)) {
-        printf("\tlookups: frags:%llu, hit:%llu, missed:%llu, lost:%llu\n",
-               (unsigned long long int) stats.n_frags,
-               (unsigned long long int) stats.n_hit,
-               (unsigned long long int) stats.n_missed,
-               (unsigned long long int) stats.n_lost);
-        printf("\tflows: %llu\n", (unsigned long long int)stats.n_flows);
+        printf("\tlookups: frags:%"PRIu64, stats.n_frags);
+        printf(" hit:%"PRIu64, stats.n_hit);
+        printf(" missed:%"PRIu64, stats.n_missed);
+        printf(" lost:%"PRIu64"\n", stats.n_lost);
+
+        printf("\tflows: %"PRIu64"\n", stats.n_flows);
     }
     DPIF_PORT_FOR_EACH (&dpif_port, &dump, dpif) {
         printf("\tport %u: %s", dpif_port.port_no, dpif_port.name);