X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Frconn.c;h=181cae59940b89c2390ddc37f5edb97de698b938;hb=fd30311c8701d297f31f6dd92c628d1d9112911e;hp=deb95195deac5ffd93225716ca3f3a6d1974fa27;hpb=a14bc59fb8f27db193d74662dc9c5cb8237177ef;p=openvswitch diff --git a/lib/rconn.c b/lib/rconn.c index deb95195..181cae59 100644 --- a/lib/rconn.c +++ b/lib/rconn.c @@ -89,7 +89,7 @@ struct rconn { time_t last_admitted; /* These values are simply for statistics reporting, not used directly by - * anything internal to the rconn (or the secchan for that matter). */ + * anything internal to the rconn (or ofproto for that matter). */ unsigned int packets_received; unsigned int n_attempted_connections, n_successful_connections; time_t creation_time; @@ -638,9 +638,34 @@ rconn_failure_duration(const struct rconn *rconn) /* Returns the IP address of the peer, or 0 if the peer is not connected over * an IP-based protocol or if its IP address is not known. */ uint32_t -rconn_get_ip(const struct rconn *rconn) +rconn_get_remote_ip(const struct rconn *rconn) { - return rconn->vconn ? vconn_get_ip(rconn->vconn) : 0; + return rconn->vconn ? vconn_get_remote_ip(rconn->vconn) : 0; +} + +/* Returns the transport port of the peer, or 0 if the peer does not + * contain a port or if the port is not known. */ +uint16_t +rconn_get_remote_port(const struct rconn *rconn) +{ + return rconn->vconn ? vconn_get_remote_port(rconn->vconn) : 0; +} + +/* Returns the IP address used to connect to the peer, or 0 if the + * connection is not an IP-based protocol or if its IP address is not + * known. */ +uint32_t +rconn_get_local_ip(const struct rconn *rconn) +{ + return rconn->vconn ? vconn_get_local_ip(rconn->vconn) : 0; +} + +/* Returns the transport port used to connect to the peer, or 0 if the + * connection does not contain a port or if the port is not known. */ +uint16_t +rconn_get_local_port(const struct rconn *rconn) +{ + return rconn->vconn ? vconn_get_local_port(rconn->vconn) : 0; } /* If 'rconn' can't connect to the peer, it could be for any number of reasons. @@ -698,6 +723,15 @@ rconn_get_last_connection(const struct rconn *rc) return rc->last_connected; } +/* Returns the time at which the last OpenFlow message was received by 'rc'. + * If no packets have been received on 'rc', returns the time at which 'rc' + * was created. */ +time_t +rconn_get_last_received(const struct rconn *rc) +{ + return rc->last_received; +} + /* Returns the time at which 'rc' was created. */ time_t rconn_get_creation_time(const struct rconn *rc)