X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fofp-print.c;h=23ba9d468157230c478569bb05c5f5a380725f79;hb=69fc54f47bbc35e81bfe2e38e57f5dcfd9858df4;hp=76bd09cadae8ff6483a0fe0d10495c0687683c45;hpb=638a19b04578669b5d43cb4d91391a9e1da93dc7;p=sliver-openvswitch.git diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 76bd09cad..23ba9d468 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -74,6 +74,10 @@ ofp_packet_to_string(const void *data, size_t len) struct udp_header *uh = buf.l4; ds_put_format(&ds, " udp_csum:%"PRIx16, ntohs(uh->udp_csum)); + } else if (flow.nw_proto == IPPROTO_SCTP) { + struct sctp_header *sh = buf.l4; + ds_put_format(&ds, " sctp_csum:%"PRIx32, + ntohl(sh->sctp_csum)); } } @@ -130,6 +134,10 @@ ofp_print_packet_in(struct ds *string, const struct ofp_header *oh, } } + if (pin.fmd.pkt_mark != 0) { + ds_put_format(string, " pkt_mark=0x%"PRIx32, pin.fmd.pkt_mark); + } + ds_put_format(string, " (via %s)", ofputil_packet_in_reason_to_string(pin.reason, reasonbuf, sizeof reasonbuf)); @@ -645,6 +653,8 @@ ofp10_match_to_string(const struct ofp10_match *om, int verbosity) ds_put_cstr(&f, "tcp,"); } else if (om->nw_proto == IPPROTO_UDP) { ds_put_cstr(&f, "udp,"); + } else if (om->nw_proto == IPPROTO_SCTP) { + ds_put_cstr(&f, "sctp,"); } else { ds_put_cstr(&f, "ip,"); skip_proto = false; @@ -1102,13 +1112,9 @@ ofputil_meter_capabilities_to_name(uint32_t bit) static const char * ofputil_meter_band_types_to_name(uint32_t bit) { - /* - * Note: Meter band types start from 1. We assume that the lowest bit - * in the band_types corresponds to DROP band type (1). - */ switch (bit) { - case 1 << (OFPMBT13_DROP - 1): return "drop"; - case 1 << (OFPMBT13_DSCP_REMARK - 1): return "dscp_remark"; + case 1 << OFPMBT13_DROP: return "drop"; + case 1 << OFPMBT13_DSCP_REMARK: return "dscp_remark"; } return NULL; @@ -1737,9 +1743,17 @@ ofp_print_ofpst_queue_reply(struct ds *string, const struct ofp_header *oh, ofp_print_queue_name(string, qs.queue_id); ds_put_cstr(string, ": "); - print_port_stat(string, "bytes=", qs.stats.tx_bytes, 1); - print_port_stat(string, "pkts=", qs.stats.tx_packets, 1); - print_port_stat(string, "errors=", qs.stats.tx_errors, 0); + print_port_stat(string, "bytes=", qs.tx_bytes, 1); + print_port_stat(string, "pkts=", qs.tx_packets, 1); + print_port_stat(string, "errors=", qs.tx_errors, 1); + + ds_put_cstr(string, "duration="); + if (qs.duration_sec != UINT32_MAX) { + ofp_print_duration(string, qs.duration_sec, qs.duration_nsec); + } else { + ds_put_char(string, '?'); + } + ds_put_char(string, '\n'); } } @@ -2142,14 +2156,14 @@ ofp_to_string__(const struct ofp_header *oh, enum ofpraw raw, case OFPTYPE_QUEUE_GET_CONFIG_REPLY: case OFPTYPE_GET_ASYNC_REQUEST: case OFPTYPE_GET_ASYNC_REPLY: - case OFPTYPE_GROUP_REQUEST: - case OFPTYPE_GROUP_REPLY: - case OFPTYPE_GROUP_DESC_REQUEST: - case OFPTYPE_GROUP_DESC_REPLY: - case OFPTYPE_GROUP_FEATURES_REQUEST: - case OFPTYPE_GROUP_FEATURES_REPLY: - case OFPTYPE_TABLE_FEATURES_REQUEST: - case OFPTYPE_TABLE_FEATURES_REPLY: + case OFPTYPE_GROUP_STATS_REQUEST: + case OFPTYPE_GROUP_STATS_REPLY: + case OFPTYPE_GROUP_DESC_STATS_REQUEST: + case OFPTYPE_GROUP_DESC_STATS_REPLY: + case OFPTYPE_GROUP_FEATURES_STATS_REQUEST: + case OFPTYPE_GROUP_FEATURES_STATS_REPLY: + case OFPTYPE_TABLE_FEATURES_STATS_REQUEST: + case OFPTYPE_TABLE_FEATURES_STATS_REPLY: ofp_print_not_implemented(string); break; @@ -2218,30 +2232,30 @@ ofp_to_string__(const struct ofp_header *oh, enum ofpraw raw, ofp_print_role_message(string, oh); break; - case OFPTYPE_METER_REQUEST: - case OFPTYPE_METER_CONFIG_REQUEST: + case OFPTYPE_METER_STATS_REQUEST: + case OFPTYPE_METER_CONFIG_STATS_REQUEST: ofp_print_stats_request(string, oh); ofp_print_meter_stats_request(string, oh); break; - case OFPTYPE_METER_REPLY: + case OFPTYPE_METER_STATS_REPLY: ofp_print_stats_reply(string, oh); ofp_print_meter_stats_reply(string, oh); break; - case OFPTYPE_METER_CONFIG_REPLY: + case OFPTYPE_METER_CONFIG_STATS_REPLY: ofp_print_stats_reply(string, oh); ofp_print_meter_config_reply(string, oh); break; - case OFPTYPE_METER_FEATURES_REPLY: + case OFPTYPE_METER_FEATURES_STATS_REPLY: ofp_print_stats_reply(string, oh); ofp_print_meter_features_reply(string, oh); break; case OFPTYPE_DESC_STATS_REQUEST: case OFPTYPE_PORT_DESC_STATS_REQUEST: - case OFPTYPE_METER_FEATURES_REQUEST: + case OFPTYPE_METER_FEATURES_STATS_REQUEST: ofp_print_stats_request(string, oh); break;