add bsn_port/vlan_counter_stats_request/reply
diff --git a/openflow_input/bsn_port_counter b/openflow_input/bsn_port_counter
index f9ebaa7..fe230b9 100644
--- a/openflow_input/bsn_port_counter
+++ b/openflow_input/bsn_port_counter
@@ -30,8 +30,19 @@
#version 4
-struct of_bsn_port_entry {
- of_port_no_t port_no;
+enum ofp_bsn_port_counter(wire_type=uint8_t, complete=False) {
+ OFP_RX_BYTES = 0,
+ OFP_RX_PACKETS_UNICAST = 1,
+ OFP_RX_PACKETS_BROADCAST = 2,
+ OFP_RX_PACKETS_MULTICAST = 3,
+ OFP_RX_DROPPED = 4,
+ OFP_RX_ERRORS = 5,
+ OFP_TX_BYTES = 6,
+ OFP_TX_PACKETS_UNICAST = 7,
+ OFP_TX_PACKETS_BROADCAST = 8,
+ OFP_TX_PACKETS_MULTICAST = 9,
+ OFP_TX_DROPPED = 10,
+ OFP_TX_ERRORS = 11,
};
struct of_bsn_port_counter_stats_request : of_bsn_stats_request {
@@ -44,24 +55,14 @@
pad(4);
uint32_t experimenter == 0x5c16c7;
uint32_t subtype == 8;
- list(of_bsn_port_entry_t) port_entries; //if port_entries is empty, reply counters of all ports.
+ of_port_no_t port_no;
};
struct of_bsn_port_counter_stats_entry {
+ uint16_t length;
+ pad(2);
of_port_no_t port_no;
- pad(4);
- uint64_t rx_bytes;
- uint64_t rx_packets_unicast;
- uint64_t rx_packets_broadcast;
- uint64_t rx_packets_multicast;
- uint64_t rx_dropped;
- uint64_t rx_errors;
- uint64_t tx_bytes;
- uint64_t tx_packets_unicast;
- uint64_t tx_packets_broadcast;
- uint64_t tx_packets_multicast;
- uint64_t tx_dropped;
- uint64_t tx_errors;
+ list(of_uint64_t) port_values;
};
struct of_bsn_port_counter_stats_reply : of_bsn_stats_reply {
@@ -74,5 +75,5 @@
pad(4);
uint32_t experimenter == 0x5c16c7;
uint32_t subtype == 8;
- list(of_bsn_port_counter_stats_entry_t) port_counter_entries;
+ list(of_bsn_port_counter_stats_entry_t) entries;
};
diff --git a/openflow_input/bsn_vlan_counter b/openflow_input/bsn_vlan_counter
index b775df4..fb37bc2 100644
--- a/openflow_input/bsn_vlan_counter
+++ b/openflow_input/bsn_vlan_counter
@@ -30,8 +30,11 @@
#version 4
-struct of_bsn_vlan_entry {
- uint16_t vlan_vid;
+enum of_bsn_vlan_counter_t(wire_type=uint8_t, complete=False) {
+ OFP_RX_BYTES = 0,
+ OFP_RX_PACKETS = 1,
+ OFP_TX_BYTES = 2,
+ OFP_TX_PACKETS = 3,
};
struct of_bsn_vlan_counter_stats_request : of_bsn_stats_request {
@@ -44,17 +47,14 @@
pad(4);
uint32_t experimenter == 0x5c16c7;
uint32_t subtype == 9;
- list(of_bsn_vlan_entry_t) vlan_entries; //if vlan_entries is empty, reply counters of all vlans.
+ uint16_t vlan_vid;
};
struct of_bsn_vlan_counter_stats_entry {
- uint16_t vlan_vid;
- pad(2);
- pad(4);
- uint64_t rx_bytes;
- uint64_t rx_packets;
- uint64_t tx_bytes;
- uint64_t tx_packets;
+ uint16_t length;
+ uint16_t vlan_vid;
+ pad(4);
+ list(of_uint64_t) vlan_values;
};
struct of_bsn_vlan_counter_stats_reply : of_bsn_stats_reply {
diff --git a/openflow_input/standard-1.3 b/openflow_input/standard-1.3
index 87adcc4..b4add39 100644
--- a/openflow_input/standard-1.3
+++ b/openflow_input/standard-1.3
@@ -567,6 +567,10 @@
uint32_t xid;
};
+struct of_uint64 {
+ uint64_t value;
+};
+
// Special structures used for managing scalar list elements
struct of_uint32 {
uint32_t value;