ds_put_format(string, " cookie=0x%"PRIx64, ntohll(pin.cookie));
}
- ds_put_format(string, " total_len=%zu in_port=", pin.total_len);
+ ds_put_format(string, " total_len=%"PRIuSIZE" in_port=", pin.total_len);
ofputil_format_port(pin.fmd.in_port, string);
if (pin.fmd.tun_id != htonll(0)) {
ofputil_packet_in_reason_to_string(pin.reason, reasonbuf,
sizeof reasonbuf));
- ds_put_format(string, " data_len=%zu", pin.packet_len);
+ ds_put_format(string, " data_len=%"PRIuSIZE, pin.packet_len);
if (pin.buffer_id == UINT32_MAX) {
ds_put_format(string, " (unbuffered)");
if (pin.total_len != pin.packet_len) {
ofpacts_format(po.ofpacts, po.ofpacts_len, string);
if (po.buffer_id == UINT32_MAX) {
- ds_put_format(string, " data_len=%zu", po.packet_len);
+ ds_put_format(string, " data_len=%"PRIuSIZE, po.packet_len);
if (verbosity > 0 && po.packet_len > 0) {
char *packet = ofp_packet_to_string(po.packet, po.packet_len);
ds_put_char(string, '\n');
case OFP13_VERSION:
return; /* no ports in ofp13_switch_features */
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
ofp_print_phy_ports(string, oh->version, &b);
protocol = ofputil_protocol_set_tid(protocol, true);
ofpbuf_init(&ofpacts, 64);
- error = ofputil_decode_flow_mod(&fm, oh, protocol, &ofpacts);
+ error = ofputil_decode_flow_mod(&fm, oh, protocol, &ofpacts,
+ OFPP_MAX, 255);
if (error) {
ofpbuf_uninit(&ofpacts);
ofp_print_error(s, error);
ofp_print_duration(struct ds *string, unsigned int sec, unsigned int nsec)
{
ds_put_format(string, "%u", sec);
+
+ /* If there are no fractional seconds, don't print any decimals.
+ *
+ * If the fractional seconds can be expressed exactly as milliseconds,
+ * print 3 decimals. Open vSwitch provides millisecond precision for most
+ * time measurements, so printing 3 decimals every time makes it easier to
+ * spot real changes in flow dumps that refresh themselves quickly.
+ *
+ * If the fractional seconds are more precise than milliseconds, print the
+ * number of decimals needed to express them exactly.
+ */
if (nsec > 0) {
- ds_put_format(string, ".%09u", nsec);
- while (string->string[string->length - 1] == '0') {
- string->length--;
+ unsigned int msec = nsec / 1000000;
+ if (msec * 1000000 == nsec) {
+ ds_put_format(string, ".%03u", msec);
+ } else {
+ ds_put_format(string, ".%09u", nsec);
+ while (string->string[string->length - 1] == '0') {
+ string->length--;
+ }
}
}
ds_put_char(string, 's');
{
struct ofpbuf b;
- ds_put_format(string, " %zu ports\n", ofputil_count_port_stats(oh));
+ ds_put_format(string, " %"PRIuSIZE" ports\n", ofputil_count_port_stats(oh));
if (verbosity < 1) {
return;
}
ofpraw_pull_assert(&b);
n = b.size / sizeof *ts;
- ds_put_format(string, " %zu tables\n", n);
+ ds_put_format(string, " %"PRIuSIZE" tables\n", n);
if (verbosity < 1) {
return;
}
ofpraw_pull_assert(&b);
n = b.size / sizeof *ts;
- ds_put_format(string, " %zu tables\n", n);
+ ds_put_format(string, " %"PRIuSIZE" tables\n", n);
if (verbosity < 1) {
return;
}
ofpraw_pull_assert(&b);
n = b.size / sizeof *ts;
- ds_put_format(string, " %zu tables\n", n);
+ ds_put_format(string, " %"PRIuSIZE" tables\n", n);
if (verbosity < 1) {
return;
}
ofpraw_pull_assert(&b);
n = b.size / sizeof *ts;
- ds_put_format(string, " %zu tables\n", n);
+ ds_put_format(string, " %"PRIuSIZE" tables\n", n);
if (verbosity < 1) {
return;
}
break;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
{
struct ofpbuf b;
- ds_put_format(string, " %zu queues\n", ofputil_count_queue_stats(oh));
+ ds_put_format(string, " %"PRIuSIZE" queues\n", ofputil_count_queue_stats(oh));
if (verbosity < 1) {
return;
}
{
size_t len = ntohs(oh->length);
- ds_put_format(string, " %zu bytes of payload\n", len - sizeof *oh);
+ ds_put_format(string, " %"PRIuSIZE" bytes of payload\n", len - sizeof *oh);
if (verbosity > 1) {
ds_put_hex_dump(string, oh + 1, len - sizeof *oh, 0, true);
}
ds_put_cstr(string, "slave");
break;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
if (generation_id != UINT64_MAX) {
ds_put_cstr(string, "experimenter_data_changed");
break;
default:
- NOT_REACHED();
+ OVS_NOT_REACHED();
}
}
if (!len) {
ds_put_cstr(&string, "OpenFlow message is empty\n");
} else if (len < sizeof(struct ofp_header)) {
- ds_put_format(&string, "OpenFlow packet too short (only %zu bytes):\n",
+ ds_put_format(&string, "OpenFlow packet too short (only %"PRIuSIZE" bytes):\n",
len);
} else if (ntohs(oh->length) > len) {
enum ofperr error;
}
ds_put_format(&string,
- "(***truncated to %zu bytes from %"PRIu16"***)\n",
+ "(***truncated to %"PRIuSIZE" bytes from %"PRIu16"***)\n",
len, ntohs(oh->length));
} else if (ntohs(oh->length) < len) {
ds_put_format(&string,
- "(***only uses %"PRIu16" bytes out of %zu***)\n",
+ "(***only uses %"PRIu16" bytes out of %"PRIuSIZE"***)\n",
ntohs(oh->length), len);
} else {
enum ofperr error;