wireshark: begin defining dissector fields in python
diff --git a/wireshark_gen/__init__.py b/wireshark_gen/__init__.py
index 89a8ba1..abf60c7 100644
--- a/wireshark_gen/__init__.py
+++ b/wireshark_gen/__init__.py
@@ -26,12 +26,15 @@
 # under the EPL.
 
 import os
+from collections import namedtuple
 import loxi_utils.loxi_utils as utils
 import loxi_front_end
 import of_g
 
 templates_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'templates')
 
+DissectorField = namedtuple("DissectorField", ["name", "type", "base"])
+
 # TODO move into IR
 def create_superclass_map():
     superclasses = {}
@@ -64,6 +67,14 @@
 
     return superclasses
 
+def create_fields():
+    return [
+        DissectorField("version", "UINT8", "DEC"),
+        DissectorField("type", "UINT8", "DEC"),
+        DissectorField("length", "UINT16", "DEC"),
+        DissectorField("xid", "UINT32", "HEX"),
+    ]
+
 def generate(out, name):
     superclasses = create_superclass_map()
     all_classes = sorted(of_g.unified.keys())
@@ -72,5 +83,8 @@
         if cls not in superclasses:
             print cls + ": " + superclasses.get(cls, "NONE")
 
-    context = { 'superclasses': superclasses }
+    context = {
+        'superclasses': superclasses,
+        'fields': create_fields(),
+    }
     utils.render_template(out, "openflow.lua", [templates_dir], context)
diff --git a/wireshark_gen/templates/openflow.lua b/wireshark_gen/templates/openflow.lua
index 16abec0..098557b 100644
--- a/wireshark_gen/templates/openflow.lua
+++ b/wireshark_gen/templates/openflow.lua
@@ -24,16 +24,14 @@
 
 :: #endfor
 
-local f_version = ProtoField.uint8("of.version", "Version", base.HEX, openflow_versions)
-local f_type = ProtoField.uint8("of.type", "Type", base.HEX, enum_v1_ofp_type)
-local f_length = ProtoField.uint16("of.length", "Length")
-local f_xid = ProtoField.uint32("of.xid", "XID", base.HEX)
+:: for field in fields:
+f_${field.name} = ProtoField.new("${field.name}", "of.${field.name}", "FT_${field.type}", nil, "BASE_${field.base}")
+:: #endfor
 
 p_of.fields = {
-    f_version,
-    f_type,
-    f_length,
-    f_xid,
+:: for field in fields:
+    f_${field.name},
+:: #endfor
 }
 
 :: for supercls in set(sorted(superclasses.values())):