| -- binary |
| 05 13 # version/type |
| 00 d8 # length |
| 00 00 00 05 # xid |
| 00 04 # stats_type |
| 00 00 # flags |
| 00 00 00 00 # pad |
| 00 78 # entries[0].length |
| 00 00 # pad |
| 00 00 00 01 # entries[0].port_no |
| 00 00 00 00 # entries[0].duration_sec |
| 00 00 00 00 # entries[0].duration_nsec |
| 00 00 00 00 00 00 00 01 # entries[0].rx_packets |
| 00 00 00 00 00 00 00 00 # entries[0].tx_packets |
| 00 00 00 00 00 00 00 00 # entries[0].rx_bytes |
| 00 00 00 00 00 00 00 00 # entries[0].tx_bytes |
| 00 00 00 00 00 00 00 00 # entries[0].rx_dropped |
| 00 00 00 00 00 00 00 00 # entries[0].tx_dropped |
| 00 00 00 00 00 00 00 00 # entries[0].rx_errors |
| 00 00 00 00 00 00 00 02 # entries[0].tx_errors |
| 00 00 # entries[0].properties[0].type (ethernet) |
| 00 28 # entries[0].properties[0].length |
| 00 00 00 00 # pad |
| 00 00 00 00 00 00 00 01 # entries[0].properties[0].rx_frame_err |
| 00 00 00 00 00 00 00 02 # entries[0].properties[0].rx_over_err |
| 00 00 00 00 00 00 00 03 # entries[0].properties[0].rx_crc_err |
| 00 00 00 00 00 00 00 04 # entries[0].properties[0].collisions |
| 00 50 # entries[1].length |
| 00 00 # pad |
| ff ff ff fe # entries[1].port_no |
| 00 00 00 00 # entries[1].duration_sec |
| 00 00 00 00 # entries[1].duration_nsec |
| 00 00 00 00 00 00 00 03 # entries[1].rx_packets |
| 00 00 00 00 00 00 00 00 # entries[1].tx_packets |
| 00 00 00 00 00 00 00 00 # entries[1].rx_bytes |
| 00 00 00 00 00 00 00 00 # entries[1].tx_bytes |
| 00 00 00 00 00 00 00 00 # entries[1].rx_dropped |
| 00 00 00 00 00 00 00 00 # entries[1].tx_dropped |
| 00 00 00 00 00 00 00 00 # entries[1].rx_errors |
| 00 00 00 00 00 00 00 04 # entries[1].tx_errors |
| -- python |
| ofp.message.port_stats_reply( |
| xid=5, flags=0, entries=[ |
| ofp.port_stats_entry(port_no=1, rx_packets=1, tx_errors=2, |
| properties=[ |
| ofp.port_stats_prop.ethernet( |
| rx_frame_err=1, |
| rx_over_err=2, |
| rx_crc_err=3, |
| collisions=4)]), |
| ofp.port_stats_entry(port_no=ofp.OFPP_LOCAL, rx_packets=3, tx_errors=4)]) |
| -- c |
| obj = of_port_stats_reply_new(OF_VERSION_1_4); |
| { |
| of_object_t list; |
| of_port_stats_reply_entries_bind(obj, &list); |
| { |
| of_object_t *obj = of_port_stats_entry_new(OF_VERSION_1_4); |
| of_port_stats_entry_port_no_set(obj, 1); |
| of_port_stats_entry_rx_packets_set(obj, 1); |
| of_port_stats_entry_tx_packets_set(obj, 0); |
| of_port_stats_entry_rx_bytes_set(obj, 0); |
| of_port_stats_entry_tx_bytes_set(obj, 0); |
| of_port_stats_entry_rx_dropped_set(obj, 0); |
| of_port_stats_entry_tx_dropped_set(obj, 0); |
| of_port_stats_entry_rx_errors_set(obj, 0); |
| of_port_stats_entry_tx_errors_set(obj, 2); |
| /* TODO append property */ |
| of_list_append(&list, obj); |
| of_object_delete(obj); |
| } |
| { |
| of_object_t *obj = of_port_stats_entry_new(OF_VERSION_1_4); |
| of_port_stats_entry_port_no_set(obj, OF_PORT_DEST_LOCAL); |
| of_port_stats_entry_rx_packets_set(obj, 3); |
| of_port_stats_entry_tx_packets_set(obj, 0); |
| of_port_stats_entry_rx_bytes_set(obj, 0); |
| of_port_stats_entry_tx_bytes_set(obj, 0); |
| of_port_stats_entry_rx_dropped_set(obj, 0); |
| of_port_stats_entry_tx_dropped_set(obj, 0); |
| of_port_stats_entry_rx_errors_set(obj, 0); |
| of_port_stats_entry_tx_errors_set(obj, 4); |
| of_list_append(&list, obj); |
| of_object_delete(obj); |
| } |
| } |
| of_port_stats_reply_flags_set(obj, 0); |
| of_port_stats_reply_xid_set(obj, 5); |