summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-07-13 16:08:37 -0700
committerBen Pfaff <blp@nicira.com>2011-07-26 16:50:09 -0700
commita11f6164a801c093ef67b144167e55fc9e851626 (patch)
tree5db7185c850e96094ae17f337490f51eef6af705
parent87fcbc60f28cde16939b3a9e139bdc67ca831010 (diff)
downloadopenvswitch-a11f6164a801c093ef67b144167e55fc9e851626.tar.gz
ovsdb: Report the number of connections for inbound Managers.
Inbound managers (e.g. "ptcp:") can have multiple active connections, but the database schema doesn't allow us to report the status of more than one at a time. This commit adds a status key-value pair that, when there is more than one active connection, reports the number that are active. This at least helps to clarify the issue.
-rw-r--r--ovsdb/jsonrpc-server.c2
-rw-r--r--ovsdb/jsonrpc-server.h1
-rw-r--r--ovsdb/ovsdb-server.c4
-rw-r--r--vswitchd/vswitch.xml17
4 files changed, 24 insertions, 0 deletions
diff --git a/ovsdb/jsonrpc-server.c b/ovsdb/jsonrpc-server.c
index 06e3accd9..14dd42540 100644
--- a/ovsdb/jsonrpc-server.c
+++ b/ovsdb/jsonrpc-server.c
@@ -468,6 +468,8 @@ ovsdb_jsonrpc_session_get_status(const struct ovsdb_jsonrpc_remote *remote,
status->sec_since_disconnect = rstats.msec_since_disconnect == UINT_MAX
? UINT_MAX : rstats.msec_since_disconnect / 1000;
+ status->n_connections = list_size(&remote->sessions);
+
return true;
}
diff --git a/ovsdb/jsonrpc-server.h b/ovsdb/jsonrpc-server.h
index 1d612cdfd..16504483d 100644
--- a/ovsdb/jsonrpc-server.h
+++ b/ovsdb/jsonrpc-server.h
@@ -41,6 +41,7 @@ struct ovsdb_jsonrpc_remote_status {
unsigned int sec_since_connect;
unsigned int sec_since_disconnect;
bool is_connected;
+ int n_connections;
};
bool ovsdb_jsonrpc_server_get_remote_status(
const struct ovsdb_jsonrpc_server *, const char *target,
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index e2fb95852..1b8d0be09 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -499,6 +499,10 @@ update_remote_row(const struct ovsdb_row *row, struct ovsdb_txn *txn,
values[n++] =
xstrdup(ovs_retval_to_string(status.last_error));
}
+ if (status.n_connections > 1) {
+ keys[n] = xstrdup("n_connections");
+ values[n++] = xasprintf("%d", status.n_connections);
+ }
write_string_string_column(rw_row, "status", keys, values, n);
}
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index a9fa4cfc6..5b216a556 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -2191,6 +2191,23 @@
database (in seconds). Value is empty if manager has never
disconnected.</dd>
</dl>
+ <dl>
+ <dt><code>n_connections</code></dt>
+ <dd>
+ <p>
+ When <ref column="target"/> specifies a connection method that
+ listens for inbound connections (e.g. <code>ptcp:</code> or
+ <code>pssl:</code>) and more than one connection is actually
+ active, the value is the number of active connections.
+ Otherwise, this key-value pair is omitted.
+ </p>
+ <p>
+ When multiple connections are active, status columns and
+ key-value pairs (other than this one) report the status of one
+ arbitrarily chosen connection.
+ </p>
+ </dd>
+ </dl>
</column>
</group>
</table>