X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fofp-print.c;h=804b5aa5c978c4e4b9c38b96ddc1c91581287d4a;hb=4488d4ddb0458c188e6172b5d75736c0fb952e45;hp=8e0358096ab75eb41ed163f83d43e20fdd4d3968;hpb=26c3f94a553be66dd037159148f30b47ef2c6f4b;p=sliver-openvswitch.git diff --git a/lib/ofp-print.c b/lib/ofp-print.c index 8e0358096..804b5aa5c 100644 --- a/lib/ofp-print.c +++ b/lib/ofp-print.c @@ -16,10 +16,10 @@ #include #include "ofp-print.h" -#include "xtoxll.h" #include #include +#include #include #include #include @@ -35,6 +35,7 @@ #include "packets.h" #include "pcap.h" #include "util.h" +#include "xtoxll.h" static void ofp_print_port_name(struct ds *string, uint16_t port); @@ -133,8 +134,8 @@ ofp_packet_in(struct ds *string, const void *oh, size_t len, int verbosity) struct ofp_match match; packet.data = (void *) op->data; packet.size = data_len; - flow_extract(&packet, ntohs(op->in_port), &flow); - flow_to_match(&flow, 0, &match); + flow_extract(&packet, 0, ntohs(op->in_port), &flow); + flow_to_match(&flow, false, &match); ofp_print_match(string, &match, verbosity); ds_put_char(string, '\n'); } @@ -192,6 +193,13 @@ ofp_print_nx_action(struct ds *string, const struct nx_action_header *nah) break; } + case NXAST_SET_TUNNEL: { + const struct nx_action_set_tunnel *nast = + (struct nx_action_set_tunnel *)nah; + ds_put_format(string, "set_tunnel:0x%08"PRIx32, ntohl(nast->tun_id)); + break; + } + default: ds_put_format(string, "***unknown Nicira action:%d***\n", ntohs(nah->subtype)); @@ -671,10 +679,13 @@ ofp_match_to_string(const struct ofp_match *om, int verbosity) skip_type = false; } } + if (w & NXFW_TUN_ID) { + ds_put_cstr(&f, "tun_id_wild,"); + } print_wild(&f, "in_port=", w & OFPFW_IN_PORT, verbosity, "%d", ntohs(om->in_port)); print_wild(&f, "dl_vlan=", w & OFPFW_DL_VLAN, verbosity, - "0x%04x", ntohs(om->dl_vlan)); + "%d", ntohs(om->dl_vlan)); print_wild(&f, "dl_vlan_pcp=", w & OFPFW_DL_VLAN_PCP, verbosity, "%d", om->dl_vlan_pcp); print_wild(&f, "dl_src=", w & OFPFW_DL_SRC, verbosity, @@ -696,6 +707,8 @@ ofp_match_to_string(const struct ofp_match *om, int verbosity) } else { print_wild(&f, "nw_proto=", w & OFPFW_NW_PROTO, verbosity, "%u", om->nw_proto); + print_wild(&f, "nw_tos=", w & OFPFW_NW_TOS, verbosity, + "%u", om->nw_tos); } } if (om->nw_proto == IP_TYPE_ICMP) { @@ -740,7 +753,7 @@ ofp_print_flow_mod(struct ds *string, const void *oh, size_t len, default: ds_put_format(string, " cmd:%d ", ntohs(ofm->command)); } - ds_put_format(string, "cookie:%"PRIx64" idle:%d hard:%d pri:%d " + ds_put_format(string, "cookie:0x%"PRIx64" idle:%d hard:%d pri:%d " "buf:%#x flags:%"PRIx16" ", ntohll(ofm->cookie), ntohs(ofm->idle_timeout), ntohs(ofm->hard_timeout), ofm->match.wildcards ? ntohs(ofm->priority) : (uint16_t)-1, @@ -775,7 +788,7 @@ ofp_print_flow_removed(struct ds *string, const void *oh, break; } ds_put_format(string, - " cookie%"PRIx64" pri%"PRIu16" secs%"PRIu32" nsecs%"PRIu32 + " cookie0x%"PRIx64" pri%"PRIu16" secs%"PRIu32" nsecs%"PRIu32 " idle%"PRIu16" pkts%"PRIu64" bytes%"PRIu64"\n", ntohll(ofr->cookie), ofr->match.wildcards ? ntohs(ofr->priority) : (uint16_t)-1, @@ -931,11 +944,16 @@ ofp_desc_stats_reply(struct ds *string, const void *body, { const struct ofp_desc_stats *ods = body; - ds_put_format(string, "Manufacturer: %s\n", ods->mfr_desc); - ds_put_format(string, "Hardware: %s\n", ods->hw_desc); - ds_put_format(string, "Software: %s\n", ods->sw_desc); - ds_put_format(string, "Serial Num: %s\n", ods->serial_num); - ds_put_format(string, "DP Description: %s\n", ods->dp_desc); + ds_put_format(string, "Manufacturer: %.*s\n", + (int) sizeof ods->mfr_desc, ods->mfr_desc); + ds_put_format(string, "Hardware: %.*s\n", + (int) sizeof ods->hw_desc, ods->hw_desc); + ds_put_format(string, "Software: %.*s\n", + (int) sizeof ods->sw_desc, ods->sw_desc); + ds_put_format(string, "Serial Num: %.*s\n", + (int) sizeof ods->serial_num, ods->serial_num); + ds_put_format(string, "DP Description: %.*s\n", + (int) sizeof ods->dp_desc, ods->dp_desc); } static void @@ -992,10 +1010,10 @@ ofp_flow_stats_reply(struct ds *string, const void *body_, size_t len, break; } - ds_put_format(string, " cookie=%"PRIu64"s, ", ntohll(fs->cookie)); + ds_put_format(string, " cookie=0x%"PRIx64", ", ntohll(fs->cookie)); ds_put_format(string, "duration_sec=%"PRIu32"s, ", ntohl(fs->duration_sec)); - ds_put_format(string, "duration_nsec=%"PRIu32"s, ", + ds_put_format(string, "duration_nsec=%"PRIu32"ns, ", ntohl(fs->duration_nsec)); ds_put_format(string, "table_id=%"PRIu8", ", fs->table_id); ds_put_format(string, "priority=%"PRIu16", ", @@ -1061,6 +1079,14 @@ static void print_port_stat(struct ds *string, const char *leader, } } +static void +ofp_port_stats_request(struct ds *string, const void *body_, + size_t len OVS_UNUSED, int verbosity OVS_UNUSED) +{ + const struct ofp_port_stats_request *psr = body_; + ds_put_format(string, "port_no=%"PRIu16, ntohs(psr->port_no)); +} + static void ofp_port_stats_reply(struct ds *string, const void *body, size_t len, int verbosity) @@ -1185,7 +1211,9 @@ print_stats(struct ds *string, int type, const void *body, size_t body_len, { OFPST_PORT, "port", - { 0, 0, NULL, }, + { sizeof(struct ofp_port_stats_request), + sizeof(struct ofp_port_stats_request), + ofp_port_stats_request }, { 0, SIZE_MAX, ofp_port_stats_reply }, }, {