ovs-bugtool: Add ability to prioritize files by date.
[sliver-openvswitch.git] / lib / reconnect.h
index 418f3e8..9dfcfd7 100644 (file)
@@ -31,6 +31,7 @@
  * revisited later.) */
 
 #include <stdbool.h>
+#include "openvswitch/types.h"
 
 struct reconnect *reconnect_create(long long int now);
 void reconnect_destroy(struct reconnect *);
@@ -40,9 +41,15 @@ void reconnect_set_quiet(struct reconnect *, bool quiet);
 const char *reconnect_get_name(const struct reconnect *);
 void reconnect_set_name(struct reconnect *, const char *name);
 
+/* Defaults, all in msecs. */
+#define RECONNECT_DEFAULT_MIN_BACKOFF 1000
+#define RECONNECT_DEFAULT_MAX_BACKOFF 8000
+#define RECONNECT_DEFAULT_PROBE_INTERVAL 5000
+
 int reconnect_get_min_backoff(const struct reconnect *);
 int reconnect_get_max_backoff(const struct reconnect *);
 int reconnect_get_probe_interval(const struct reconnect *);
+uint8_t reconnect_get_dscp(const struct reconnect *);
 
 void reconnect_set_max_tries(struct reconnect *, unsigned int max_tries);
 unsigned int reconnect_get_max_tries(struct reconnect *);
@@ -50,6 +57,7 @@ unsigned int reconnect_get_max_tries(struct reconnect *);
 void reconnect_set_backoff(struct reconnect *,
                            int min_backoff, int max_backoff);
 void reconnect_set_probe_interval(struct reconnect *, int probe_interval);
+void reconnect_set_dscp(struct reconnect *, uint8_t dscp);
 
 bool reconnect_is_passive(const struct reconnect *);
 void reconnect_set_passive(struct reconnect *, bool passive,
@@ -62,8 +70,10 @@ void reconnect_disable(struct reconnect *, long long int now);
 void reconnect_force_reconnect(struct reconnect *, long long int now);
 
 bool reconnect_is_connected(const struct reconnect *);
-unsigned int reconnect_get_connection_duration(const struct reconnect *,
-                                               long long int now);
+unsigned int reconnect_get_last_connect_elapsed(const struct reconnect *,
+                                                long long int now);
+unsigned int reconnect_get_last_disconnect_elapsed(const struct reconnect *,
+                                                   long long int now);
 
 void reconnect_disconnected(struct reconnect *, long long int now, int error);
 void reconnect_connecting(struct reconnect *, long long int now);
@@ -85,16 +95,18 @@ int reconnect_timeout(struct reconnect *, long long int now);
 
 struct reconnect_stats {
     /* All times and durations in this structure are in milliseconds. */
-    long long int creation_time;  /* Time reconnect_create() called. */
-    long long int last_received; /* Last call to reconnect_received(). */
-    long long int last_connected; /* Last call to reconnect_connected(). */
-    int backoff;                  /* Current backoff duration.  */
-
-    unsigned int seqno;         /* # of connections + # of disconnections. */
-
-    bool is_connected;          /* Currently connected? */
-    unsigned int current_connection_duration; /* Time of current connection. */
-    unsigned int total_connected_duration;    /* Sum of all connections. */
+    long long int creation_time;     /* Time reconnect_create() called. */
+    long long int last_received;     /* Last call to reconnect_received(). */
+    long long int last_connected;    /* Last call to reconnect_connected(). */
+    long long int last_disconnected; /* Last call to reconnect_disconnected(). */
+    int backoff;                     /* Current backoff duration.  */
+
+    unsigned int seqno;              /* # of connections + # of disconnections. */
+
+    bool is_connected;                     /* Currently connected? */
+    unsigned int msec_since_connect;       /* Time since last connect. */
+    unsigned int msec_since_disconnect;    /* Time since last disconnect. */
+    unsigned int total_connected_duration; /* Sum of all connections. */
     unsigned int n_attempted_connections;
     unsigned int n_successful_connections;