wireshark: stub dissectors
diff --git a/wireshark_gen/templates/openflow.lua b/wireshark_gen/templates/openflow.lua
index caf1a62..c098f56 100644
--- a/wireshark_gen/templates/openflow.lua
+++ b/wireshark_gen/templates/openflow.lua
@@ -34,7 +34,27 @@
     f_xid,
 }
 
-function dissect_one(buf, pkt, root)
+:: for supercls in set(sorted(superclasses.values())):
+local ${supercls}_dissectors = {
+:: for version, ofproto in ir.items():
+    [${version}] = {},
+:: #endfor
+}
+:: #endfor
+
+:: for version, ofproto in ir.items():
+:: for ofclass in ofproto.classes:
+:: name = 'dissect_%s_v%d' % (ofclass.name, version)
+:: typeval = 0
+:: include('_ofclass_dissector.lua', name=name, ofclass=ofclass)
+:: if ofclass.name in superclasses:
+${superclasses[ofclass.name]}_dissectors[${version}][${typeval}] = ${name}
+
+:: #endif
+:: #endfor
+:: #endfor
+
+function dissect_of_message(buf, root)
     -- create subtree for of
     local subtree = root:add(p_of, buf(0))
     -- add protocol fields to subtree
@@ -43,7 +63,11 @@
     subtree:add(f_length, buf(2,2))
     subtree:add(f_xid, buf(4,4))
 
+    local version_val = buf(0,1):uint()
     local type_val = buf(1,1):uint()
+    if of_message_dissectors[version_val] and of_message_dissectors[version_val][type_val] then
+        of_message_dissectors[version_val][type_val](buf, root)
+    end
 end
 
 -- of dissector function
@@ -60,7 +84,7 @@
                 return
             end
 
-            dissect_one(buf(offset, msg_len), pkt, root)
+            dissect_of_message(buf(offset, msg_len), root)
             offset = offset + msg_len
         else
             -- we don't have all of length field yet