diff options
| author | Ben Pfaff <blp@nicira.com> | 2011-07-13 16:08:37 -0700 |
|---|---|---|
| committer | Ben Pfaff <blp@nicira.com> | 2011-07-26 16:50:09 -0700 |
| commit | a11f6164a801c093ef67b144167e55fc9e851626 (patch) | |
| tree | 5db7185c850e96094ae17f337490f51eef6af705 | |
| parent | 87fcbc60f28cde16939b3a9e139bdc67ca831010 (diff) | |
| download | openvswitch-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.c | 2 | ||||
| -rw-r--r-- | ovsdb/jsonrpc-server.h | 1 | ||||
| -rw-r--r-- | ovsdb/ovsdb-server.c | 4 | ||||
| -rw-r--r-- | vswitchd/vswitch.xml | 17 |
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> |
