extern char mfr_desc;
extern char hw_desc;
extern char sw_desc;
+extern char serial_num;
/* Capabilities supported by this implementation. */
#define OFP_SUPPORTED_CAPABILITIES ( OFPC_FLOW_STATS \
list_push_back(&dp->remotes, &remote->node);
remote->rconn = rconn;
remote->cb_dump = NULL;
+ remote->n_txq = 0;
return remote;
}
int retval;
update_openflow_length(buffer);
- retval = (remote->n_txq < TXQ_LIMIT
- ? rconn_send(rconn, buffer, &remote->n_txq)
- : EAGAIN);
+ retval = rconn_send_with_limit(rconn, buffer, &remote->n_txq, TXQ_LIMIT);
if (retval) {
VLOG_WARN_RL(&rl, "send to %s failed: %s",
rconn_get_name(rconn), strerror(retval));
- buffer_delete(buffer);
}
return retval;
}
}
}
-static int version_stats_dump(struct datapath *dp, void *state,
+static int desc_stats_dump(struct datapath *dp, void *state,
struct buffer *buffer)
{
- struct ofp_version_stats *ovs = buffer_put_uninit(buffer, sizeof *ovs);
+ struct ofp_desc_stats *ods = buffer_put_uninit(buffer, sizeof *ods);
- strncpy(ovs->mfr_desc, &mfr_desc, sizeof ovs->mfr_desc);
- strncpy(ovs->hw_desc, &hw_desc, sizeof ovs->hw_desc);
- strncpy(ovs->sw_desc, &sw_desc, sizeof ovs->sw_desc);
+ strncpy(ods->mfr_desc, &mfr_desc, sizeof ods->mfr_desc);
+ strncpy(ods->hw_desc, &hw_desc, sizeof ods->hw_desc);
+ strncpy(ods->sw_desc, &sw_desc, sizeof ods->sw_desc);
+ strncpy(ods->serial_num, &serial_num, sizeof ods->serial_num);
return 0;
}
};
static const struct stats_type stats[] = {
- [OFPST_VERSION] = {
+ [OFPST_DESC] = {
0,
0,
NULL,
- version_stats_dump,
+ desc_stats_dump,
NULL
},
[OFPST_FLOW] = {