From 6be49af362bad508e8994d581daa163ca28b85e7 Mon Sep 17 00:00:00 2001
From: Ben Pfaff <blp@nicira.com>
Date: Wed, 4 Mar 2009 09:56:47 -0800
Subject: [PATCH] rconn: Add new function rconn_reconnect().

---
 lib/rconn.c | 9 +++++++++
 lib/rconn.h | 1 +
 2 files changed, 10 insertions(+)

diff --git a/lib/rconn.c b/lib/rconn.c
index a37f9fb8..562f96f3 100644
--- a/lib/rconn.c
+++ b/lib/rconn.c
@@ -272,6 +272,15 @@ rconn_connect_unreliably(struct rconn *rc,
     state_transition(rc, S_ACTIVE);
 }
 
+/* If 'rc' is connected, forces it to drop the connection and reconnect. */
+void
+rconn_reconnect(struct rconn *rc)
+{
+    if (rc->state & (S_ACTIVE | S_IDLE)) {
+        disconnect(rc, 0);
+    }
+}
+
 void
 rconn_disconnect(struct rconn *rc)
 {
diff --git a/lib/rconn.h b/lib/rconn.h
index f804b9a7..93ccec05 100644
--- a/lib/rconn.h
+++ b/lib/rconn.h
@@ -67,6 +67,7 @@ int rconn_get_probe_interval(const struct rconn *);
 int rconn_connect(struct rconn *, const char *name);
 void rconn_connect_unreliably(struct rconn *,
                               const char *name, struct vconn *vconn);
+void rconn_reconnect(struct rconn *);
 void rconn_disconnect(struct rconn *);
 void rconn_destroy(struct rconn *);
 
-- 
2.30.2