controller: use ProtocolDesc

Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
YAMAMOTO Takashi 2014-02-03 12:48:29 +09:00 committed by FUJITA Tomonori
parent 5467e8b4a2
commit c0fd8a0a95
2 changed files with 4 additions and 30 deletions

View File

@ -25,6 +25,7 @@ from ryu.controller.controller import Datapath
from ryu.controller import event from ryu.controller import event
from ryu.controller.event import EventRequestBase, EventReplyBase from ryu.controller.event import EventRequestBase, EventReplyBase
from ryu.lib import hub from ryu.lib import hub
from ryu.ofproto import ofproto_protocol
LOG = logging.getLogger('ryu.base.app_manager') LOG = logging.getLogger('ryu.base.app_manager')
@ -346,12 +347,7 @@ class AppManager(object):
LOG.info('instantiating app %s of %s', app_name, cls.__name__) LOG.info('instantiating app %s of %s', app_name, cls.__name__)
if hasattr(cls, 'OFP_VERSIONS') and not cls.OFP_VERSIONS is None: if hasattr(cls, 'OFP_VERSIONS') and not cls.OFP_VERSIONS is None:
for k in Datapath.supported_ofp_version.keys(): ofproto_protocol.set_app_supported_versions(cls.OFP_VERSIONS)
if not k in cls.OFP_VERSIONS:
del Datapath.supported_ofp_version[k]
assert len(Datapath.supported_ofp_version), \
'No OpenFlow version is available'
if app_name is not None: if app_name is not None:
assert app_name not in self.applications assert app_name not in self.applications

View File

@ -27,14 +27,8 @@ import ryu.base.app_manager
from ryu.ofproto import ofproto_common from ryu.ofproto import ofproto_common
from ryu.ofproto import ofproto_parser 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
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.ofproto import nx_match
from ryu.controller import handler from ryu.controller import handler
@ -102,18 +96,7 @@ def _deactivate(method):
return deactivate return deactivate
class Datapath(object): class Datapath(ofproto_protocol.ProtocolDesc):
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),
}
def __init__(self, socket, address): def __init__(self, socket, address):
super(Datapath, self).__init__() super(Datapath, self).__init__()
@ -125,7 +108,6 @@ class Datapath(object):
# prevent it from eating memory up # prevent it from eating memory up
self.send_q = hub.Queue(16) self.send_q = hub.Queue(16)
self.set_version(max(self.supported_ofp_version))
self.xid = random.randint(0, self.ofproto.MAX_XID) self.xid = random.randint(0, self.ofproto.MAX_XID)
self.id = None # datapath_id is unknown yet self.id = None # datapath_id is unknown yet
self.ports = None self.ports = None
@ -142,10 +124,6 @@ class Datapath(object):
ev.state = state ev.state = state
self.ofp_brick.send_event_to_observers(ev, 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 # Low level socket handling layer
@_deactivate @_deactivate
def _recv_loop(self): def _recv_loop(self):