Add vrf counter request/reply.

Add OFP_BSN_VLAN_ALL constant to request counters for all vlans.
diff --git a/c_gen/codegen.py b/c_gen/codegen.py
index b8a6757..ea05826 100644
--- a/c_gen/codegen.py
+++ b/c_gen/codegen.py
@@ -263,7 +263,7 @@
                 "of_flow_stats_entry", "of_bucket", "of_table_features",
                 "of_bsn_port_counter_stats_entry", "of_bsn_vlan_counter_stats_entry",
                 "of_bsn_gentable_entry_desc_stats_entry", "of_bsn_gentable_entry_stats_entry",
-                "of_bsn_gentable_desc_stats_entry"]:
+                "of_bsn_gentable_desc_stats_entry", "of_bsn_vrf_counter_stats_entry"]:
             wire_length_get = "of_u16_len_wire_length_get"
             wire_length_set = "of_u16_len_wire_length_set"
         elif uclass.name == 'of_match_v3':
diff --git a/c_gen/loxi_utils_legacy.py b/c_gen/loxi_utils_legacy.py
index f898957..4472ffa 100644
--- a/c_gen/loxi_utils_legacy.py
+++ b/c_gen/loxi_utils_legacy.py
@@ -132,7 +132,7 @@
                    "of_flow_stats_entry", "of_bucket", "of_table_features",
                    "of_bsn_port_counter_stats_entry", "of_bsn_vlan_counter_stats_entry",
                    "of_bsn_gentable_entry_desc_stats_entry", "of_bsn_gentable_entry_stats_entry",
-                   "of_bsn_gentable_desc_stats_entry"]
+                   "of_bsn_gentable_desc_stats_entry", "of_bsn_vrf_counter_stats_entry"]
 
 def class_is_list(cls):
     """
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 2a1925d..868e555 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -413,5 +413,6 @@
 #define LOCI_SHOW_desc_str_startup_config_checksum(write, cookie, val) LOCI_SHOW_desc_str(writer, cookie, val)
 #define LOCI_SHOW_u16_bsn_tcp_flags(write, cookie, val) LOCI_SHOW_x16(writer, cookie, val)
 #define LOCI_SHOW_u8_loglevel(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
+#define LOCI_SHOW_u32_vrf(write, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 
 #endif /* _LOCI_SHOW_H_ */
diff --git a/openflow_input/bsn_vlan_counter b/openflow_input/bsn_vlan_counter
index 51dd356..5d90724 100644
--- a/openflow_input/bsn_vlan_counter
+++ b/openflow_input/bsn_vlan_counter
@@ -1,4 +1,4 @@
-// Copyright 2013, Big Switch Networks, Inc.
+// Copyright 2013-2014, Big Switch Networks, Inc.
 //
 // LoxiGen is licensed under the Eclipse Public License,
 // version 1.0 (EPL), with the following special exception:
@@ -30,6 +30,10 @@
 
 #version 4
 
+enum ofp_bsn_vlan_counter_constants {
+    OFP_BSN_VLAN_ALL = 0xffff,
+};
+
 enum of_bsn_vlan_counter_t(wire_type=uint8_t, complete=False) {
   OFP_BSN_VLAN_COUNTER_RX_BYTES = 0,
   OFP_BSN_VLAN_COUNTER_RX_PACKETS = 1,
diff --git a/openflow_input/bsn_vrf_counter b/openflow_input/bsn_vrf_counter
new file mode 100644
index 0000000..538a62f
--- /dev/null
+++ b/openflow_input/bsn_vrf_counter
@@ -0,0 +1,73 @@
+// Copyright 2014, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License,
+// version 1.0 (EPL), with the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may
+// distribute libraries generated by LoxiGen (LoxiGen Libraries)
+// under the terms of your choice, provided that copyright and
+// licensing notices generated by LoxiGen are not altered or removed
+// from the LoxiGen Libraries and the notice provided below is (i)
+// included in the LoxiGen Libraries, if distributed in source code
+// form and (ii) included in any documentation for the LoxiGen
+// Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2013, Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler."
+//
+// You may not use this file except in compliance with the EPL or
+// LOXI Exception. You may obtain a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an "AS
+// IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+// express or implied. See the EPL for the specific language
+// governing permissions and limitations under the EPL.
+
+#version 4
+
+enum ofp_bsn_vrf_counter_constants {
+    OFP_BSN_VRF_ALL = 0xffff,
+};
+
+enum of_bsn_vrf_counter_t(wire_type=uint8_t, complete=False) {
+  OFP_BSN_VRF_COUNTER_BYTES = 0,
+  OFP_BSN_VRF_COUNTER_PACKETS = 1,
+};
+
+struct of_bsn_vrf_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 == 15;
+    uint32_t vrf;
+};
+
+struct of_bsn_vrf_counter_stats_entry {
+    uint16_t length;
+    pad(2);
+    uint32_t vrf;
+    list(of_uint64_t) values;
+};
+
+struct of_bsn_vrf_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 == 15;
+    list(of_bsn_vrf_counter_stats_entry_t) entries;
+};