Signed-off-by: YAMAMOTO Takashi <[email protected]>
---
 ryu/base/app_manager.py      |  8 ++------
 ryu/controller/controller.py | 26 ++------------------------
 2 files changed, 4 insertions(+), 30 deletions(-)

diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
index 6fb6013..a546780 100644
--- a/ryu/base/app_manager.py
+++ b/ryu/base/app_manager.py
@@ -25,6 +25,7 @@ from ryu.controller.controller import Datapath
 from ryu.controller import event
 from ryu.controller.event import EventRequestBase, EventReplyBase
 from ryu.lib import hub
+from ryu.ofproto import ofproto_protocol
 
 LOG = logging.getLogger('ryu.base.app_manager')
 
@@ -343,12 +344,7 @@ class AppManager(object):
         LOG.info('instantiating app %s of %s', app_name, cls.__name__)
 
         if hasattr(cls, 'OFP_VERSIONS') and not cls.OFP_VERSIONS is None:
-            for k in Datapath.supported_ofp_version.keys():
-                if not k in cls.OFP_VERSIONS:
-                    del Datapath.supported_ofp_version[k]
-
-        assert len(Datapath.supported_ofp_version), \
-            'No OpenFlow version is available'
+            ofproto_protocol.set_app_supported_versions(cls.OFP_VERSIONS)
 
         if app_name is not None:
             assert app_name not in self.applications
diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py
index 20a9c1d..942b12e 100644
--- a/ryu/controller/controller.py
+++ b/ryu/controller/controller.py
@@ -27,14 +27,8 @@ import ryu.base.app_manager
 
 from ryu.ofproto import ofproto_common
 from ryu.ofproto import ofproto_parser
+from ryu.ofproto import ofproto_protocol
 from ryu.ofproto import ofproto_v1_0
-from ryu.ofproto import ofproto_v1_0_parser
-from ryu.ofproto import ofproto_v1_2
-from ryu.ofproto import ofproto_v1_2_parser
-from ryu.ofproto import ofproto_v1_3
-from ryu.ofproto import ofproto_v1_3_parser
-from ryu.ofproto import ofproto_v1_4
-from ryu.ofproto import ofproto_v1_4_parser
 from ryu.ofproto import nx_match
 
 from ryu.controller import handler
@@ -102,18 +96,7 @@ def _deactivate(method):
     return deactivate
 
 
-class Datapath(object):
-    supported_ofp_version = {
-        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),
-    }
-
+class Datapath(ofproto_protocol.ProtocolDesc):
     def __init__(self, socket, address):
         super(Datapath, self).__init__()
 
@@ -125,7 +108,6 @@ class Datapath(object):
         # prevent it from eating memory up
         self.send_q = hub.Queue(16)
 
-        self.set_version(max(self.supported_ofp_version))
         self.xid = random.randint(0, self.ofproto.MAX_XID)
         self.id = None  # datapath_id is unknown yet
         self.ports = None
@@ -142,10 +124,6 @@ class Datapath(object):
         ev.state = state
         self.ofp_brick.send_event_to_observers(ev, state)
 
-    def set_version(self, version):
-        assert version in self.supported_ofp_version
-        self.ofproto, self.ofproto_parser = self.supported_ofp_version[version]
-
     # Low level socket handling layer
     @_deactivate
     def _recv_loop(self):
-- 
1.8.3.1


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to