wireshark_gen: adapt to new of_g
diff --git a/wireshark_gen/__init__.py b/wireshark_gen/__init__.py
index 1225131..ee63a22 100644
--- a/wireshark_gen/__init__.py
+++ b/wireshark_gen/__init__.py
@@ -29,17 +29,18 @@
from collections import namedtuple
import loxi_utils.loxi_utils as utils
import loxi_front_end
-import of_g
+import loxi_globals
from loxi_ir import *
import field_info
+import template_utils
templates_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'templates')
DissectorField = namedtuple("DissectorField", ["fullname", "name", "type", "base", "enum_table"])
proto_names = { 1: 'of10', 2: 'of11', 3: 'of12', 4: 'of13' }
-def make_field_name(wire_version, ofclass_name, member_name):
- return "%s.%s.%s" % (proto_names[wire_version],
+def make_field_name(version, ofclass_name, member_name):
+ return "%s.%s.%s" % (proto_names[version.wire_version],
ofclass_name[3:],
member_name)
@@ -47,7 +48,7 @@
"""
Decide on a reader function to use for the given field
"""
- ofproto = of_g.ir[version]
+ ofproto = loxi_globals.ir[version]
enum = ofproto.enum_by_name(m.oftype)
if enum and 'wire_type' in enum.params:
return "read_" + enum.params['wire_type']
@@ -63,7 +64,7 @@
if oftype.startswith("list"):
return "bytes", "NONE", "nil"
- ofproto = of_g.ir[version]
+ ofproto = loxi_globals.ir[version]
enum = ofproto.enum_by_name(oftype)
if not enum and (cls, name) in field_info.class_field_to_enum:
@@ -92,7 +93,7 @@
field_base = "NONE"
if enum:
- enum_table = 'enum_v%d_%s' % (version, enum.name)
+ enum_table = 'enum_v%d_%s' % (version.wire_version, enum.name)
else:
enum_table = 'nil'
@@ -100,21 +101,21 @@
def create_fields():
r = []
- for wire_version, ofproto in of_g.ir.items():
+ for version, ofproto in loxi_globals.ir.items():
for ofclass in ofproto.classes:
for m in ofclass.members:
if isinstance(m, OFPadMember):
continue
- fullname = make_field_name(wire_version, ofclass.name, m.name)
- field_type, field_base, enum_table = get_field_info(wire_version, ofclass.name, m.name, m.oftype)
+ fullname = make_field_name(version, ofclass.name, m.name)
+ field_type, field_base, enum_table = get_field_info(version, ofclass.name, m.name, m.oftype)
r.append(DissectorField(fullname, m.name, field_type, field_base, enum_table))
return r
-def generate():
+def generate(install_dir):
context = {
'fields': create_fields(),
}
- with utils.open_output('openflow.lua') as out:
- utils.render_template(out, "openflow.lua", [templates_dir], context)
+ with template_utils.open_output(install_dir, 'openflow.lua') as out:
+ template_utils.render_template(out, "openflow.lua", [templates_dir], context)