diff --git a/c_gen/c_test_gen.py b/c_gen/c_test_gen.py
index 83fa4a3..67f4a02 100644
--- a/c_gen/c_test_gen.py
+++ b/c_gen/c_test_gen.py
@@ -132,7 +132,11 @@
     classes = ["of_bsn_lacp_stats_request",
                "of_bsn_lacp_stats_reply",
                "of_bsn_switch_pipeline_stats_request",
-               "of_bsn_switch_pipeline_stats_reply"]
+               "of_bsn_switch_pipeline_stats_reply",
+               "of_bsn_port_counter_stats_request",
+               "of_bsn_port_counter_stats_reply",
+               "of_bsn_vlan_counter_stats_request",
+               "of_bsn_vlan_counter_stats_reply",]
 
     if (cls in classes and (
             m_name == "experimenter" or
diff --git a/c_gen/c_type_maps.py b/c_gen/c_type_maps.py
index 43cd4a8..84fba41 100644
--- a/c_gen/c_type_maps.py
+++ b/c_gen/c_type_maps.py
@@ -1076,6 +1076,16 @@
                 of_message_stats_experimenter_id_set(msg, OF_EXPERIMENTER_ID_BSN);
                 of_message_stats_experimenter_subtype_set(msg, 6);
                 break;
+            case OF_BSN_PORT_COUNTER_STATS_REQUEST:
+            case OF_BSN_PORT_COUNTER_STATS_REPLY:
+                of_message_stats_experimenter_id_set(msg, OF_EXPERIMENTER_ID_BSN);
+                of_message_stats_experimenter_subtype_set(msg, 7);
+                break;
+            case OF_BSN_VLAN_COUNTER_STATS_REQUEST:
+            case OF_BSN_VLAN_COUNTER_STATS_REPLY:
+                of_message_stats_experimenter_id_set(msg, OF_EXPERIMENTER_ID_BSN);
+                of_message_stats_experimenter_subtype_set(msg, 8);
+                break;
             default:
                 break;
             }
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 70f18d5..6885d4e 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -236,7 +236,13 @@
 #define LOCI_SHOW_u32_supported(writer, cookie, val) LOCI_SHOW_x32(writer, cookie, val)
 #define LOCI_SHOW_u32_peer(writer, cookie, val) LOCI_SHOW_x32(writer, cookie, val)
 #define LOCI_SHOW_u64_rx_packets(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_rx_packets_unicast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_rx_packets_multicast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_rx_packets_broadcast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 #define LOCI_SHOW_u64_tx_packets(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_tx_packets_unicast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_tx_packets_multicast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
+#define LOCI_SHOW_u64_tx_packets_broadcast(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 #define LOCI_SHOW_u64_rx_bytes(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 #define LOCI_SHOW_u64_tx_bytes(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 #define LOCI_SHOW_u64_rx_dropped(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
@@ -365,4 +371,6 @@
 #define LOCI_SHOW_u16_partner_key(writer, cookie, val) LOCI_SHOW_u16(writer, cookie, val)
 #define LOCI_SHOW_u64_time_ms(writer, cookie, val) LOCI_SHOW_u64(writer, cookie, val)
 
+
+
 #endif /* _LOCI_SHOW_H_ */
diff --git a/c_gen/templates/of_type_maps.c b/c_gen/templates/of_type_maps.c
index fa3e05c..634376e 100644
--- a/c_gen/templates/of_type_maps.c
+++ b/c_gen/templates/of_type_maps.c
@@ -871,6 +871,8 @@
         switch (subtype) {
         case 1: return OF_BSN_LACP_STATS_REQUEST;
         case 6: return OF_BSN_SWITCH_PIPELINE_STATS_REQUEST;
+        case 7: return OF_BSN_PORT_COUNTER_STATS_REQUEST;
+        case 8: return OF_BSN_VLAN_COUNTER_STATS_REQUEST;
         }
     }
     return OF_OBJECT_INVALID;
@@ -884,6 +886,8 @@
         switch (subtype) {
         case 1: return OF_BSN_LACP_STATS_REPLY;
         case 6: return OF_BSN_SWITCH_PIPELINE_STATS_REPLY;
+        case 7: return OF_BSN_PORT_COUNTER_STATS_REPLY;
+        case 8: return OF_BSN_VLAN_COUNTER_STATS_REPLY;
         }
     }
     return OF_OBJECT_INVALID;
diff --git a/c_gen/type_maps.py b/c_gen/type_maps.py
index 14e7048..6ae0b11 100644
--- a/c_gen/type_maps.py
+++ b/c_gen/type_maps.py
@@ -269,7 +269,9 @@
         port_desc = 13,
         experimenter = 0xffff,
         bsn_lacp = 0xffff,
-        bsn_switch_pipeline = 0xffff
+        bsn_switch_pipeline = 0xffff,
+        bsn_port_counter = 0xffff,
+        bsn_vlan_counter = 0xffff
         )
     }
 
@@ -458,6 +460,8 @@
     "of_bsn_stats_reply",
     "of_bsn_lacp_stats_reply",
     "of_bsn_switch_pipeline_stats_reply",
+    "of_bsn_port_counter_stats_reply",
+    "of_bsn_vlan_counter_stats_reply",
 ]
 
 stats_request_list = [
@@ -479,6 +483,8 @@
     "of_bsn_stats_request",
     "of_bsn_lacp_stats_request",
     "of_bsn_switch_pipeline_stats_request",
+    "of_bsn_port_counter_stats_request",
+    "of_bsn_vlan_counter_stats_request",
 ]
 
 flow_mod_list = [
diff --git a/openflow_input/bsn_counter b/openflow_input/bsn_port_counter
similarity index 62%
rename from openflow_input/bsn_counter
rename to openflow_input/bsn_port_counter
index 45242b1..f9ebaa7 100644
--- a/openflow_input/bsn_counter
+++ b/openflow_input/bsn_port_counter
@@ -34,10 +34,6 @@
     of_port_no_t port_no;
 };
 
-struct of_bsn_vlan_entry {
-    uint16_t vlan_id;
-};
-
 struct of_bsn_port_counter_stats_request : of_bsn_stats_request {
     uint8_t version;
     uint8_t type == 18;
@@ -51,41 +47,21 @@
     list(of_bsn_port_entry_t) port_entries; //if port_entries is empty, reply counters of all ports.
 };
 
-struct of_bsn_vlan_counter_stats_request : of_bsn_stats_request {
-    uint8_t version;
-    uint8_t type == 18;
-    uint16_t length;
-    uint32_t xid;
-    uint16_t stats_type == 0xffff;
-    enum ofp_stats_request_flags flags;
-    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.
-};
-
 struct of_bsn_port_counter_stats_entry {
     of_port_no_t port_no;
-    uint32_t rx_bytes;
-    uint32_t rx_packets_unicast;
-    uint32_t rx_packets_broadcast;
-    uint32_t rx_packets_multicast;
-    uint32_t rx_drops;
-    uint32_t rx_errors;
-    uint32_t tx_bytes;
-    uint32_t tx_packets_unicast;
-    uint32_t tx_packets_broadcast;
-    uint32_t tx_packets_multicast;
-    uint32_t tx_drops;
-    uint32_t tx_errors;
-};
-
-struct of_bsn_vlan_counter_stats_entry {
-   uint16_t vlan_id;
-   uint32_t rx_bytes;
-   uint32_t rx_packets;
-   uint32_t tx_bytes;
-   uint32_t tx_packets;  
+    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;
 };
 
 struct of_bsn_port_counter_stats_reply : of_bsn_stats_reply {
@@ -100,16 +76,3 @@
     uint32_t subtype == 8;
     list(of_bsn_port_counter_stats_entry_t) port_counter_entries;
 };
-
-struct of_bsn_vlan_counter_stats_reply : of_bsn_stats_reply {
-    uint8_t version;
-    uint8_t type == 19;
-    uint16_t length;
-    uint32_t xid;
-    uint16_t stats_type == 0xffff;
-    enum ofp_stats_reply_flags flags;
-    pad(4);
-    uint32_t experimenter == 0x5c16c7;
-    uint32_t subtype == 9;
-    list(of_bsn_vlan_counter_stats_entry_t) vlan_counter_entries;
-};
diff --git a/openflow_input/bsn_counter b/openflow_input/bsn_vlan_counter
similarity index 61%
copy from openflow_input/bsn_counter
copy to openflow_input/bsn_vlan_counter
index 45242b1..b775df4 100644
--- a/openflow_input/bsn_counter
+++ b/openflow_input/bsn_vlan_counter
@@ -30,25 +30,8 @@
 
 #version 4
 
-struct of_bsn_port_entry {
-    of_port_no_t port_no;
-};
-
 struct of_bsn_vlan_entry {
-    uint16_t vlan_id;
-};
-
-struct of_bsn_port_counter_stats_request : of_bsn_stats_request {
-    uint8_t version;
-    uint8_t type == 18;
-    uint16_t length;
-    uint32_t xid;
-    uint16_t stats_type == 0xffff;
-    enum ofp_stats_request_flags flags;
-    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.
+    uint16_t vlan_vid;
 };
 
 struct of_bsn_vlan_counter_stats_request : of_bsn_stats_request {
@@ -64,41 +47,14 @@
     list(of_bsn_vlan_entry_t) vlan_entries; //if vlan_entries is empty, reply counters of all vlans.
 };
 
-struct of_bsn_port_counter_stats_entry {
-    of_port_no_t port_no;
-    uint32_t rx_bytes;
-    uint32_t rx_packets_unicast;
-    uint32_t rx_packets_broadcast;
-    uint32_t rx_packets_multicast;
-    uint32_t rx_drops;
-    uint32_t rx_errors;
-    uint32_t tx_bytes;
-    uint32_t tx_packets_unicast;
-    uint32_t tx_packets_broadcast;
-    uint32_t tx_packets_multicast;
-    uint32_t tx_drops;
-    uint32_t tx_errors;
-};
-
 struct of_bsn_vlan_counter_stats_entry {
-   uint16_t vlan_id;
-   uint32_t rx_bytes;
-   uint32_t rx_packets;
-   uint32_t tx_bytes;
-   uint32_t tx_packets;  
-};
-
-struct of_bsn_port_counter_stats_reply : of_bsn_stats_reply {
-    uint8_t version;
-    uint8_t type == 19;
-    uint16_t length;
-    uint32_t xid;
-    uint16_t stats_type == 0xffff;
-    enum ofp_stats_reply_flags flags;
-    pad(4);
-    uint32_t experimenter == 0x5c16c7;
-    uint32_t subtype == 8;
-    list(of_bsn_port_counter_stats_entry_t) port_counter_entries;
+   uint16_t vlan_vid;
+   pad(2);
+   pad(4);
+   uint64_t rx_bytes;
+   uint64_t rx_packets;
+   uint64_t tx_bytes;
+   uint64_t tx_packets;
 };
 
 struct of_bsn_vlan_counter_stats_reply : of_bsn_stats_reply {
