pyloxi: support meter bands
diff --git a/py_gen/codegen.py b/py_gen/codegen.py
index 7037398..dc6b999 100644
--- a/py_gen/codegen.py
+++ b/py_gen/codegen.py
@@ -91,6 +91,8 @@
         type_values['type'] = 0
     elif cls == "of_match_v3":
         type_values['type'] = 1
+    elif utils.class_is_meter_band(cls):
+        type_values['type'] = util.constant_for_value(version, "ofp_meter_band_type", util.primary_wire_type(cls, version))
 
     return type_values
 
@@ -102,6 +104,8 @@
                  "of_hello_elem", "of_hello_elem_header"]
     ofclasses = []
     for cls in of_g.standard_class_order:
+        if type_maps.class_is_virtual(cls):
+            continue
         if version not in of_g.unified[cls] or cls in blacklist:
             continue
         unified_class = util.lookup_unified_class(cls, version)
@@ -111,6 +115,8 @@
             pyname = cls[10:]
         elif utils.class_is_oxm(cls):
             pyname = cls[7:]
+        elif utils.class_is_meter_band(cls):
+            pyname = cls[14:]
         else:
             pyname = cls[3:]
 
@@ -170,6 +176,7 @@
     ofclasses = [x for x in build_ofclasses(version)
                  if not utils.class_is_message(x.name)
                     and not utils.class_is_action(x.name)
+                    and not utils.class_is_meter_band(x.name)
                     and not utils.class_is_oxm(x.name)
                     and not utils.class_is_list(x.name)]
     util.render_template(out, 'common.py', ofclasses=ofclasses, version=version)
@@ -191,6 +198,11 @@
                  if utils.class_is_message(x.name)]
     util.render_template(out, 'message.py', ofclasses=ofclasses, version=version)
 
+def generate_meter_band(out, name, version):
+    ofclasses = [x for x in build_ofclasses(version)
+                 if utils.class_is_meter_band(x.name)]
+    util.render_template(out, 'meter_band.py', ofclasses=ofclasses, version=version)
+
 def generate_pp(out, name, version):
     util.render_template(out, 'pp.py')