diff options
author | YAMAMOTO Takashi <yamamoto@valinux.co.jp> | 2014-02-03 12:48:28 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-02-05 20:58:49 +0900 |
commit | 5467e8b4a2169e355aeb9792aad97a6e31a3ca26 (patch) | |
tree | f65f38bced1ed5b893b9fd5a6d3f16484e537fa0 | |
parent | b857e803ca100d5909bfe0d575363da7defb0564 (diff) |
ofproto_protocol: provide a class to describe an openflow version
currently OFP classes takes the Datapath object, which is too complex
for this purpose. this class, ProtocolDesc, is intended to be
a simpler replacement for that.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Reviewed-by: Satoshi Kobayashi <satoshi-k@stratosphere.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/ofproto/ofproto_protocol.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_protocol.py b/ryu/ofproto/ofproto_protocol.py new file mode 100644 index 00000000..cf0495d0 --- /dev/null +++ b/ryu/ofproto/ofproto_protocol.py @@ -0,0 +1,56 @@ +# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation. +# Copyright (C) 2014 YAMAMOTO Takashi <yamamoto at valinux co jp> +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from . import ofproto_v1_0 +from . import ofproto_v1_0_parser +from . import ofproto_v1_2 +from . import ofproto_v1_2_parser +from . import ofproto_v1_3 +from . import ofproto_v1_3_parser +from . import ofproto_v1_4 +from . import ofproto_v1_4_parser + + +_versions = { + ofproto_v1_0.OFP_VERSION: (ofproto_v1_0, ofproto_v1_0_parser), + ofproto_v1_2.OFP_VERSION: (ofproto_v1_2, ofproto_v1_2_parser), + ofproto_v1_3.OFP_VERSION: (ofproto_v1_3, ofproto_v1_3_parser), + ofproto_v1_4.OFP_VERSION: (ofproto_v1_4, ofproto_v1_4_parser), +} + + +# OF versions supported by every apps in this process (intersection) +_supported_versions = set(_versions.keys()) + + +def set_app_supported_versions(vers): + _versions &= set(vers) + assert _versions, 'No OpenFlow version is available' + + +class ProtocolDesc(object): + """ + OpenFlow protocol version flavor descriptor + """ + + def __init__(self, version=None): + if version is None: + version = max(_supported_versions) + self.set_version(version) + + def set_version(self, version): + assert version in _supported_versions + (self.ofproto, self.ofproto_parser) = _versions[version] |