ir: convert version fields to OFTypeMembers
The frontend gets a new OFVersionMember field type, which is lowered to
OFTypeMember when generating the IR (which is when the version is first known).
diff --git a/loxi_front_end/frontend.py b/loxi_front_end/frontend.py
index a84508a..545b5bc 100644
--- a/loxi_front_end/frontend.py
+++ b/loxi_front_end/frontend.py
@@ -54,6 +54,8 @@
elif m_ast[2] == 'actions_len':
# HACK only usage so far
return ir.OFFieldLengthMember(name=m_ast[2], oftype=get_type(m_ast[1], ctx), field_name='actions')
+ if m_ast[2] == 'version': # Should be moved to parser
+ return ir.OFVersionMember(name=m_ast[2], oftype=get_type(m_ast[1], ctx))
else:
return ir.OFDataMember(name=m_ast[2], oftype=get_type(m_ast[1], ctx))
elif m_ast[0] == 'discriminator':
diff --git a/loxi_front_end/frontend_ir.py b/loxi_front_end/frontend_ir.py
index a927f94..af3f223 100644
--- a/loxi_front_end/frontend_ir.py
+++ b/loxi_front_end/frontend_ir.py
@@ -38,6 +38,7 @@
'OFLengthMember',
'OFFieldLengthMember',
'OFPadMember',
+ 'OFVersionMember',
'OFEnum',
'OFEnumEntry'
]
@@ -128,6 +129,16 @@
OFPadMember = namedtuple('OFPadMember', ['length'])
"""
+Field with the version of an OpenFlow object
+
+@param name
+@param oftype C-like type string
+
+Example: hello.version
+"""
+OFVersionMember = namedtuple('OFVersionMember', ['name', 'oftype'])
+
+"""
An OpenFlow enumeration
All values are Python ints.