OpenFlow 版本无关的类和函数

OpenFlow 消息的基础类

class os_ken.ofproto.ofproto_parser.MsgBase(datapath)

这是 OpenFlow 消息类的基础类。

该类的一个实例至少具有以下属性。

属性

描述

datapath

一个 os_ken.controller.controller.Datapath 实例,用于此消息

版本

OpenFlow 协议版本

msg_type

OpenFlow 消息的类型

msg_len

消息的长度

xid

事务 ID

buf

原始数据

_TYPE

_TYPE 类属性用于注释属性的类型。

此类型信息用于查找 JSON 样式的字典的适当转换。

目前已实现以下类型:

类型

描述

ascii

US-ASCII

utf-8

UTF-8

示例

_TYPE = {
    'ascii': [
        'hw_addr',
    ],
    'utf-8': [
        'name',
    ]
}
classmethod from_jsondict(dict_, decode_string=<function b64decode>, **additional_args)

从 JSON 样式的字典创建实例。

使用字典中指定的参数实例化此类。

此方法接受以下参数:

参数

描述

dict_

一个描述参数的字典。例如,{"Param1": 100, "Param2": 200}

decode_string

(可选) 指定如何解码字符串。默认值为 base64。此参数仅用于没有在 _TYPE 类属性中显式类型注释的属性。

additional_args

(可选) 构造函数的其他关键字参数。

to_jsondict(encode_string=<function b64encode>)

此方法返回一个 JSON 样式的字典来描述此对象。

返回的字典与 json.dumps() 和 json.loads() 兼容。

假设 ClassName 对象继承自 StringifyMixin。对于如下对象

ClassName(Param1=100, Param2=200)

此方法将产生

{ "ClassName": {"Param1": 100, "Param2": 200} }

此方法接受以下参数:

参数

描述

encode_string

(可选) 指定如何编码具有 python 'str' 类型的属性。默认值为 base64。此参数仅用于没有在 _TYPE 类属性中显式类型注释的属性。

函数

os_ken.ofproto.ofproto_parser.ofp_msg_from_jsondict(dp, jsondict)

此函数从给定的 JSON 样式字典实例化适当的 OpenFlow 消息类。以下代码片段创建的对象是等效的。

代码 A

jsonstr = '{ "OFPSetConfig": { "flags": 0, "miss_send_len": 128 } }'
jsondict = json.loads(jsonstr)
o = ofp_msg_from_jsondict(dp, jsondict)

代码 B

o = dp.ofproto_parser.OFPSetConfig(flags=0, miss_send_len=128)

此函数接受以下参数:

参数

描述

dp

os_ken.controller.Datapath 的一个实例。

jsondict

一个 JSON 样式的字典。