X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=secchan%2Fstatus.c;h=b2cb93568abc91fc0872fd5bb914f8d8acdf6f7e;hb=f35409904bc4a0a695a4aecb2435933d8a8187fe;hp=cf67d51c4507d95f284affcd601eda9556cbaef1;hpb=064af42167bf4fc9aaea2702d80ce08074b889c0;p=openvswitch diff --git a/secchan/status.c b/secchan/status.c index cf67d51c..b2cb9356 100644 --- a/secchan/status.c +++ b/secchan/status.c @@ -1,17 +1,17 @@ /* * Copyright (c) 2008, 2009 Nicira Networks. * - * Permission to use, copy, modify, and/or distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ #include @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include "dynamic-string.h" @@ -26,6 +27,7 @@ #include "ofpbuf.h" #include "ofproto.h" #include "openflow/nicira-ext.h" +#include "packets.h" #include "rconn.h" #include "svec.h" #include "timeval.h" @@ -92,10 +94,21 @@ rconn_status_cb(struct status_reply *sr, void *rconn_) { struct rconn *rconn = rconn_; time_t now = time_now(); + uint32_t remote_ip = rconn_get_remote_ip(rconn); + uint32_t local_ip = rconn_get_local_ip(rconn); status_reply_put(sr, "name=%s", rconn_get_name(rconn)); + if (remote_ip) { + status_reply_put(sr, "remote-ip="IP_FMT, IP_ARGS(&remote_ip)); + status_reply_put(sr, "remote-port=%d", + ntohs(rconn_get_remote_port(rconn))); + status_reply_put(sr, "local-ip="IP_FMT, IP_ARGS(&local_ip)); + status_reply_put(sr, "local-port=%d", + ntohs(rconn_get_local_port(rconn))); + } status_reply_put(sr, "state=%s", rconn_get_state(rconn)); status_reply_put(sr, "backoff=%d", rconn_get_backoff(rconn)); + status_reply_put(sr, "probe-interval=%d", rconn_get_probe_interval(rconn)); status_reply_put(sr, "is-connected=%s", rconn_is_connected(rconn) ? "true" : "false"); status_reply_put(sr, "sent-msgs=%u", rconn_packets_sent(rconn)); @@ -106,6 +119,8 @@ rconn_status_cb(struct status_reply *sr, void *rconn_) rconn_get_successful_connections(rconn)); status_reply_put(sr, "last-connection=%ld", (long int) (now - rconn_get_last_connection(rconn))); + status_reply_put(sr, "last-received=%ld", + (long int) (now - rconn_get_last_received(rconn))); status_reply_put(sr, "time-connected=%lu", rconn_get_total_time_connected(rconn)); status_reply_put(sr, "state-elapsed=%u", rconn_get_state_elapsed(rconn)); @@ -115,10 +130,21 @@ static void config_status_cb(struct status_reply *sr, void *ofproto_) { const struct ofproto *ofproto = ofproto_; + uint64_t datapath_id, mgmt_id; struct svec listeners; int probe_interval, max_backoff; size_t i; + datapath_id = ofproto_get_datapath_id(ofproto); + if (datapath_id) { + status_reply_put(sr, "datapath-id=%"PRIx64, datapath_id); + } + + mgmt_id = ofproto_get_mgmt_id(ofproto); + if (mgmt_id) { + status_reply_put(sr, "mgmt-id=%"PRIx64, mgmt_id); + } + svec_init(&listeners); ofproto_get_listeners(ofproto, &listeners); for (i = 0; i < listeners.n; i++) {