OpenFlow version independent classes and functions¶
Base class for OpenFlow messages¶
-
class
os_ken.ofproto.ofproto_parser.
MsgBase
(*args, **kwargs)¶ This is a base class for OpenFlow message classes.
An instance of this class has at least the following attributes.
Attribute
Description
datapath
A os_ken.controller.controller.Datapath instance for this message
version
OpenFlow protocol version
msg_type
Type of OpenFlow message
msg_len
Length of the message
xid
Transaction id
buf
Raw data
-
_TYPE
¶ _TYPE class attribute is used to annotate types of attributes.
This type information is used to find an appropriate conversion for a JSON style dictionary.
Currently the following types are implemented.
Type
Descrption
ascii
US-ASCII
utf-8
UTF-8
Example:
_TYPE = { 'ascii': [ 'hw_addr', ], 'utf-8': [ 'name', ] }
-
classmethod
from_jsondict
(dict_, decode_string=<function b64decode>, **additional_args)¶ Create an instance from a JSON style dict.
Instantiate this class with parameters specified by the dict.
This method takes the following arguments.
Argument
Descrpition
dict_
A dictionary which describes the parameters. For example, {"Param1": 100, "Param2": 200}
decode_string
(Optional) specify how to decode strings. The default is base64. This argument is used only for attributes which don't have explicit type annotations in _TYPE class attribute.
additional_args
(Optional) Additional kwargs for constructor.
-
to_jsondict
(encode_string=<function b64encode>)¶ This method returns a JSON style dict to describe this object.
The returned dict is compatible with json.dumps() and json.loads().
Suppose ClassName object inherits StringifyMixin. For an object like the following:
ClassName(Param1=100, Param2=200)
this method would produce:
{ "ClassName": {"Param1": 100, "Param2": 200} }
This method takes the following arguments.
Argument
Description
encode_string
(Optional) specify how to encode attributes which has python 'str' type. The default is base64. This argument is used only for attributes which don't have explicit type annotations in _TYPE class attribute.
-
Functions¶
-
os_ken.ofproto.ofproto_parser.
ofp_msg_from_jsondict
(dp, jsondict)¶ This function instanticates an appropriate OpenFlow message class from the given JSON style dictionary. The objects created by following two code fragments are equivalent.
Code A:
jsonstr = '{ "OFPSetConfig": { "flags": 0, "miss_send_len": 128 } }' jsondict = json.loads(jsonstr) o = ofp_msg_from_jsondict(dp, jsondict)
Code B:
o = dp.ofproto_parser.OFPSetConfig(flags=0, miss_send_len=128)
This function takes the following arguments.
Argument
Description
dp
An instance of os_ken.controller.Datapath.
jsondict
A JSON style dict.