]> err.no Git - linux-2.6/blobdiff - include/net/ip_vs.h
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes...
[linux-2.6] / include / net / ip_vs.h
index c8ee9b89b023d37bc538cc351128e47c9cc6b74e..7312c3dd309f2cc705a678f29be79a972780f2ec 100644 (file)
@@ -140,8 +140,24 @@ struct ip_vs_seq {
 
 
 /*
- *     IPVS statistics object
+ *     IPVS statistics objects
  */
+struct ip_vs_estimator {
+       struct list_head        list;
+
+       u64                     last_inbytes;
+       u64                     last_outbytes;
+       u32                     last_conns;
+       u32                     last_inpkts;
+       u32                     last_outpkts;
+
+       u32                     cps;
+       u32                     inpps;
+       u32                     outpps;
+       u32                     inbps;
+       u32                     outbps;
+};
+
 struct ip_vs_stats
 {
        __u32                   conns;          /* connections scheduled */
@@ -156,7 +172,15 @@ struct ip_vs_stats
        __u32                   inbps;          /* current in byte rate */
        __u32                   outbps;         /* current out byte rate */
 
+       /*
+        * Don't add anything before the lock, because we use memcpy() to copy
+        * the members before the lock to struct ip_vs_stats_user in
+        * ip_vs_ctl.c.
+        */
+
        spinlock_t              lock;           /* spin lock */
+
+       struct ip_vs_estimator  est;            /* estimator */
 };
 
 struct dst_entry;
@@ -659,7 +683,7 @@ extern void ip_vs_sync_conn(struct ip_vs_conn *cp);
 /*
  *      IPVS rate estimator prototypes (from ip_vs_est.c)
  */
-extern int ip_vs_new_estimator(struct ip_vs_stats *stats);
+extern void ip_vs_new_estimator(struct ip_vs_stats *stats);
 extern void ip_vs_kill_estimator(struct ip_vs_stats *stats);
 extern void ip_vs_zero_estimator(struct ip_vs_stats *stats);