From: Andrew Evans Date: Wed, 9 Mar 2011 18:45:26 +0000 (-0800) Subject: ofproto: Report time connected or disconnected, not time in rconn state. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=24190e86c8ddedc3b20669e5eeb0ab5fc00a6255;p=openvswitch ofproto: Report time connected or disconnected, not time in rconn state. Commit bffc058934 (bridge: Add controller status to Controller table.) exposed the underlying time in a particular connection state for each controller, but this turns out not to be very useful, because controller state tends to fluctuate even when the connection is unbroken. Change to set "time_connected" or "time_disconnected" keys in the status column of the Controller table. Bug #4833. --- diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c index 49f99cbb..c7872baf 100644 --- a/ofproto/ofproto.c +++ b/ofproto/ofproto.c @@ -1396,9 +1396,15 @@ ofproto_get_ofproto_controller_info(const struct ofproto * ofproto, cinfo->pairs.values[cinfo->pairs.n++] = xstrdup(rconn_get_state(rconn)); - cinfo->pairs.keys[cinfo->pairs.n] = "time_in_state"; - cinfo->pairs.values[cinfo->pairs.n++] = - xasprintf("%u", rconn_get_state_elapsed(rconn)); + if (rconn_is_admitted(rconn)) { + cinfo->pairs.keys[cinfo->pairs.n] = "time_connected"; + cinfo->pairs.values[cinfo->pairs.n++] = + xasprintf("%ld", time_now() - rconn_get_last_connection(rconn)); + } else { + cinfo->pairs.keys[cinfo->pairs.n] = "time_disconnected"; + cinfo->pairs.values[cinfo->pairs.n++] = + xasprintf("%d", rconn_failure_duration(rconn)); + } } }