frontend: support specifying type member values in the input file
diff --git a/utest/test_frontend.py b/utest/test_frontend.py
index 2119363..1f284b0 100755
--- a/utest/test_frontend.py
+++ b/utest/test_frontend.py
@@ -52,7 +52,7 @@
 
 struct of_echo_reply {
     uint8_t version;
-    uint8_t type;
+    uint8_t type == 3;
     uint16_t length;
     uint32_t xid;
     of_octets_t data;
@@ -86,7 +86,7 @@
             ['metadata', 'version', '2'],
             ['struct', 'of_echo_reply', [
                 ['data', 'uint8_t', 'version'],
-                ['data', 'uint8_t', 'type'],
+                ['type', 'uint8_t', 'type', 3],
                 ['data', 'uint16_t', 'length'],
                 ['data', 'uint32_t', 'xid'],
                 ['data', 'of_octets_t', 'data']]],
@@ -107,7 +107,7 @@
         expected_classes = [
             OFClass('of_echo_reply', [
                 OFDataMember('version', 'uint8_t'), # XXX
-                OFDataMember('type', 'uint8_t'), # XXX
+                OFTypeMember('type', 'uint8_t', 3),
                 OFLengthMember('length', 'uint16_t'),
                 OFDataMember('xid', 'uint32_t'),
                 OFDataMember('data', 'of_octets_t')]),
diff --git a/utest/test_parser.py b/utest/test_parser.py
index a4a0e63..cb22a9c 100755
--- a/utest/test_parser.py
+++ b/utest/test_parser.py
@@ -83,7 +83,7 @@
         self.assertEquals(ast,
             [['struct', 'foo', [['data', 'list(of_action_t)', 'bar']]]])
 
-    def test_pad_type(self):
+    def test_pad_member(self):
         src = """\
 struct foo {
     pad(1);
@@ -93,6 +93,16 @@
         self.assertEquals(ast,
             [['struct', 'foo', [['pad', 1]]]])
 
+    def test_type_member(self):
+        src = """\
+struct foo {
+    uint16_t foo == 0x10;
+};
+"""
+        ast = parser.parse(src)
+        self.assertEquals(ast,
+            [['struct', 'foo', [['type', 'uint16_t', 'foo', 0x10]]]])
+
 class EnumTests(unittest.TestCase):
     def test_empty(self):
         src = """\