Added support for cpythonize to generate auxillary info
to stdout. Also added check for of_message_parse to
print out error if wrong version is called.
diff --git a/tools/munger/scripts/message_gen.py b/tools/munger/scripts/message_gen.py
index f065874..61aada8 100644
--- a/tools/munger/scripts/message_gen.py
+++ b/tools/munger/scripts/message_gen.py
@@ -80,6 +80,9 @@
import re
import string
import sys
+sys.path.append("../../src/python/oftest/ofmsg")
+from ofp import *
+from ofp_aux import class_to_members_map
message_top_matter = """
# Python OpenFlow message wrapper classes
@@ -107,6 +110,7 @@
\"""
self.header = ofp_header()
# Additional base data members declared here
+
# Normally will define pack, unpack, __len__ functions
class template_msg(ofp_template_msg):
@@ -123,7 +127,11 @@
Must set the header type value appropriately for the message
\"""
+
+ ##@var header
+ # OpenFlow message header: length, version, xid, type
ofp_template_msg.__init__(self)
+ self.header = ofp_header()
# For a real message, will be set to an integer
self.header.type = "TEMPLATE_MSG_VALUE"
def pack(self):
@@ -268,21 +276,51 @@
_p1('"""')
_p1("Wrapper class for " + msg)
print
+ _p1("OpenFlow message header: length, version, xid, type")
+ _p1("@arg length: The total length of the message")
+ _p1("@arg version: The OpenFlow version (" + str(OFP_VERSION) + ")")
+ _p1("@arg xid: The transaction ID")
+ _p1("@arg type: The message type (" + msg_name + "=" +
+ str(eval(msg_name)) + ")")
+ print
+ if has_core_members and parent in class_to_members_map.keys():
+ _p1("Data members inherited from " + parent + ":")
+ for var in class_to_members_map[parent]:
+ _p1("@arg " + var)
if has_list:
if list_type == None:
- _p1("Has trailing variable array " + list_var);
+ _p1("@arg " + list_var + ": Variable length array of TBD")
else:
- _p1("Has trailing object " + list_var + " of type " + list_type);
- print
+ _p1("@arg " + list_var + ": Object of type " + list_type);
if has_string:
- _p1("Has trailing string data")
- print
+ _p1("@arg data: Binary string following message members")
+ print
_p1('"""')
print
_p1("def __init__(self):")
if has_core_members:
_p2(parent + ".__init__(self)")
+ _p2("##@var header")
+ _p2("# OpenFlow message header: length, version, xid, type")
+ _p2("# @arg length: The total length of the message")
+ _p2("# @arg version: The OpenFlow version (" + str(OFP_VERSION) + ")")
+ _p2("# @arg xid: The transaction ID")
+ _p2("# @arg type: The message type (" + msg_name + "=" +
+ str(eval(msg_name)) + ")")
+ print
+ if has_list:
+ _p2("##@var " + list_var)
+ if list_type == None:
+ _p2("# Array of objects of type TBD")
+ else:
+ _p2("# Object of type " + list_type)
+ print
+ if has_string:
+ _p2("##@var data")
+ _p2("# Binary string following message members")
+ print
+
_p2("self.header = ofp_header()")
_p2("self.header.type = " + msg_name)
if has_list: