From a7e804fdec7bf50cef18c62f46fa813973c24b17 Mon Sep 17 00:00:00 2001 From: IWASE Yusuke Date: Tue, 17 May 2016 11:00:09 +0900 Subject: controller: Add backward compatibility for 6633 port Signed-off-by: IWASE Yusuke Signed-off-by: FUJITA Tomonori --- ryu/controller/controller.py | 26 +++++++++++++++++++------- ryu/ofproto/ofproto_common.py | 2 ++ 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ryu/controller/controller.py b/ryu/controller/controller.py index 3bdf81fd..4aea6bdb 100644 --- a/ryu/controller/controller.py +++ b/ryu/controller/controller.py @@ -51,10 +51,10 @@ LOG = logging.getLogger('ryu.controller.controller') CONF = cfg.CONF CONF.register_cli_opts([ cfg.StrOpt('ofp-listen-host', default='', help='openflow listen host'), - cfg.IntOpt('ofp-tcp-listen-port', default=ofproto_common.OFP_TCP_PORT, + cfg.IntOpt('ofp-tcp-listen-port', default=None, help='openflow tcp listen port ' '(default: %d)' % ofproto_common.OFP_TCP_PORT), - cfg.IntOpt('ofp-ssl-listen-port', default=ofproto_common.OFP_SSL_PORT, + cfg.IntOpt('ofp-ssl-listen-port', default=None, help='openflow ssl listen port ' '(default: %d)' % ofproto_common.OFP_SSL_PORT), cfg.StrOpt('ctl-privkey', default=None, help='controller private key'), @@ -78,17 +78,29 @@ CONF.register_opts([ class OpenFlowController(object): def __init__(self): super(OpenFlowController, self).__init__() + if not CONF.ofp_tcp_listen_port and not CONF.ofp_ssl_listen_port: + self.ofp_tcp_listen_port = ofproto_common.OFP_TCP_PORT + self.ofp_ssl_listen_port = ofproto_common.OFP_SSL_PORT + # For the backward compatibility, we spawn a server loop + # listening on the old OpenFlow listen port 6633. + hub.spawn(self.server_loop, + ofproto_common.OFP_TCP_PORT_OLD, + ofproto_common.OFP_SSL_PORT_OLD) + else: + self.ofp_tcp_listen_port = CONF.ofp_tcp_listen_port + self.ofp_ssl_listen_port = CONF.ofp_ssl_listen_port # entry point def __call__(self): # LOG.debug('call') - self.server_loop() + self.server_loop(self.ofp_tcp_listen_port, + self.ofp_ssl_listen_port) - def server_loop(self): + def server_loop(self, ofp_tcp_listen_port, ofp_ssl_listen_port): if CONF.ctl_privkey is not None and CONF.ctl_cert is not None: if CONF.ca_certs is not None: server = StreamServer((CONF.ofp_listen_host, - CONF.ofp_ssl_listen_port), + ofp_ssl_listen_port), datapath_connection_factory, keyfile=CONF.ctl_privkey, certfile=CONF.ctl_cert, @@ -97,14 +109,14 @@ class OpenFlowController(object): ssl_version=ssl.PROTOCOL_TLSv1) else: server = StreamServer((CONF.ofp_listen_host, - CONF.ofp_ssl_listen_port), + ofp_ssl_listen_port), datapath_connection_factory, keyfile=CONF.ctl_privkey, certfile=CONF.ctl_cert, ssl_version=ssl.PROTOCOL_TLSv1) else: server = StreamServer((CONF.ofp_listen_host, - CONF.ofp_tcp_listen_port), + ofp_tcp_listen_port), datapath_connection_factory) # LOG.debug('loop') diff --git a/ryu/ofproto/ofproto_common.py b/ryu/ofproto/ofproto_common.py index fe2a55ad..4f0d9956 100644 --- a/ryu/ofproto/ofproto_common.py +++ b/ryu/ofproto/ofproto_common.py @@ -26,6 +26,8 @@ assert calcsize(OFP_HEADER_PACK_STR) == OFP_HEADER_SIZE # Some applications may still use 6633 as the de facto standard though. OFP_TCP_PORT = 6653 OFP_SSL_PORT = 6653 +OFP_TCP_PORT_OLD = 6633 +OFP_SSL_PORT_OLD = 6633 # Vendor/Experimenter IDs # https://rs.opennetworking.org/wiki/display/PUBLIC/ONF+Registry -- cgit v1.2.3