summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ryu/services/protocols/bgp/base.py32
-rw-r--r--ryu/services/protocols/bgp/bgpspeaker.py133
-rw-r--r--ryu/services/protocols/bgp/core_managers/table_manager.py3
-rw-r--r--ryu/services/protocols/bgp/operator/commands/show/rib.py10
-rw-r--r--ryu/services/protocols/bgp/operator/internal_api.py7
-rw-r--r--ryu/services/protocols/bgp/rtconf/base.py8
-rw-r--r--ryu/services/protocols/bgp/rtconf/neighbors.py3
7 files changed, 107 insertions, 89 deletions
diff --git a/ryu/services/protocols/bgp/base.py b/ryu/services/protocols/bgp/base.py
index c0c574fc..d34a9dcc 100644
--- a/ryu/services/protocols/bgp/base.py
+++ b/ryu/services/protocols/bgp/base.py
@@ -20,13 +20,13 @@ from __future__ import absolute_import
import abc
from collections import OrderedDict
import logging
-import six
import socket
import time
import traceback
import weakref
import netaddr
+import six
from ryu.lib import hub
from ryu.lib import sockopt
@@ -106,17 +106,17 @@ def add_bgp_error_metadata(code, sub_code, def_desc='unknown'):
raise ValueError('BGPSException with code %d and sub-code %d '
'already defined.' % (code, sub_code))
- def decorator(klass):
+ def decorator(subclass):
"""Sets class constants for exception code and sub-code.
If given class is sub-class of BGPSException we sets class constants.
"""
- if issubclass(klass, BGPSException):
- _EXCEPTION_REGISTRY[(code, sub_code)] = klass
- klass.CODE = code
- klass.SUB_CODE = sub_code
- klass.DEF_DESC = def_desc
- return klass
+ if issubclass(subclass, BGPSException):
+ _EXCEPTION_REGISTRY[(code, sub_code)] = subclass
+ subclass.CODE = code
+ subclass.SUB_CODE = sub_code
+ subclass.DEF_DESC = def_desc
+ return subclass
return decorator
@@ -326,11 +326,11 @@ class Activity(object):
def get_remotename(self, sock):
addr, port = sock.getpeername()[:2]
- return (self._canonicalize_ip(addr), str(port))
+ return self._canonicalize_ip(addr), str(port)
def get_localname(self, sock):
addr, port = sock.getsockname()[:2]
- return (self._canonicalize_ip(addr), str(port))
+ return self._canonicalize_ip(addr), str(port)
def _create_listen_socket(self, family, loc_addr):
s = socket.socket(family)
@@ -358,7 +358,7 @@ class Activity(object):
socket.SOCK_STREAM, 0, socket.AI_PASSIVE)
listen_sockets = {}
for res in info:
- af, socktype, proto, cannonname, sa = res
+ af, socktype, proto, _, sa = res
sock = None
try:
sock = socket.socket(af, socktype, proto)
@@ -377,7 +377,7 @@ class Activity(object):
count = 0
server = None
- for sa in listen_sockets.keys():
+ for sa in listen_sockets:
name = self.name + '_server@' + str(sa[0])
self._asso_socket_map[name] = listen_sockets[sa]
if count == 0:
@@ -412,7 +412,7 @@ class Activity(object):
if password:
sockopt.set_tcp_md5sig(sock, peer_addr[0], password)
sock.connect(peer_addr)
- # socket.error exception is rasied in cese of timeout and
+ # socket.error exception is raised in case of timeout and
# the following code is executed only when the connection
# is established.
@@ -450,14 +450,14 @@ class Sink(object):
@staticmethod
def next_index():
"""Increments the sink index and returns the value."""
- Sink.idx = Sink.idx + 1
+ Sink.idx += 1
return Sink.idx
def __init__(self):
# A small integer that represents this sink.
self.index = Sink.next_index()
- # Event used to signal enqueing.
+ # Create an event for signal enqueuing.
from .utils.evtlet import EventletIOFactory
self.outgoing_msg_event = EventletIOFactory.create_custom_event()
@@ -487,7 +487,7 @@ class Sink(object):
If message list currently has no messages, the calling thread will
be put to sleep until we have at-least one message in the list that
- can be poped and returned.
+ can be popped and returned.
"""
# We pick the first outgoing available and send it.
outgoing_msg = self.outgoing_msg_list.pop_first()
diff --git a/ryu/services/protocols/bgp/bgpspeaker.py b/ryu/services/protocols/bgp/bgpspeaker.py
index 168220bd..4608524a 100644
--- a/ryu/services/protocols/bgp/bgpspeaker.py
+++ b/ryu/services/protocols/bgp/bgpspeaker.py
@@ -37,10 +37,8 @@ from ryu.services.protocols.bgp.rtconf.common import LOCAL_AS
from ryu.services.protocols.bgp.rtconf.common import ROUTER_ID
from ryu.services.protocols.bgp.rtconf.common import BGP_SERVER_PORT
from ryu.services.protocols.bgp.rtconf.common import DEFAULT_BGP_SERVER_PORT
-from ryu.services.protocols.bgp.rtconf.common \
- import DEFAULT_REFRESH_MAX_EOR_TIME
-from ryu.services.protocols.bgp.rtconf.common \
- import DEFAULT_REFRESH_STALEPATH_TIME
+from ryu.services.protocols.bgp.rtconf.common import (
+ DEFAULT_REFRESH_MAX_EOR_TIME, DEFAULT_REFRESH_STALEPATH_TIME)
from ryu.services.protocols.bgp.rtconf.common import DEFAULT_LABEL_RANGE
from ryu.services.protocols.bgp.rtconf.common import REFRESH_MAX_EOR_TIME
from ryu.services.protocols.bgp.rtconf.common import REFRESH_STALEPATH_TIME
@@ -158,13 +156,14 @@ class BGPSpeaker(object):
"""
super(BGPSpeaker, self).__init__()
- settings = {}
- settings[LOCAL_AS] = as_number
- settings[ROUTER_ID] = router_id
- settings[BGP_SERVER_PORT] = bgp_server_port
- settings[REFRESH_STALEPATH_TIME] = refresh_stalepath_time
- settings[REFRESH_MAX_EOR_TIME] = refresh_max_eor_time
- settings[LABEL_RANGE] = label_range
+ settings = {
+ LOCAL_AS: as_number,
+ ROUTER_ID: router_id,
+ BGP_SERVER_PORT: bgp_server_port,
+ REFRESH_STALEPATH_TIME: refresh_stalepath_time,
+ REFRESH_MAX_EOR_TIME: refresh_max_eor_time,
+ LABEL_RANGE: label_range,
+ }
self._core_start(settings)
self._init_signal_listeners()
self._best_path_change_handler = best_path_change_handler
@@ -329,7 +328,7 @@ class BGPSpeaker(object):
CAP_ENHANCED_REFRESH: enable_enhanced_refresh,
CAP_FOUR_OCTET_AS_NUMBER: enable_four_octet_as_number,
}
- # v6 advertizement is available with only v6 peering
+ # v6 advertisement is available with only v6 peering
if netaddr.valid_ipv4(address):
bgp_neighbor[CAP_MBGP_IPV4] = enable_ipv4
bgp_neighbor[CAP_MBGP_IPV6] = False
@@ -371,8 +370,10 @@ class BGPSpeaker(object):
the string representation of an IP address.
"""
- bgp_neighbor = {}
- bgp_neighbor[neighbors.IP_ADDRESS] = address
+ bgp_neighbor = {
+ neighbors.IP_ADDRESS: address,
+ }
+
call('neighbor.delete', **bgp_neighbor)
def neighbor_reset(self, address):
@@ -382,8 +383,10 @@ class BGPSpeaker(object):
the string representation of an IP address.
"""
- bgp_neighbor = {}
- bgp_neighbor[neighbors.IP_ADDRESS] = address
+ bgp_neighbor = {
+ neighbors.IP_ADDRESS: address,
+ }
+
call('core.reset_neighbor', **bgp_neighbor)
def neighbor_update(self, address, conf_type, conf_value):
@@ -408,6 +411,7 @@ class BGPSpeaker(object):
param = {neighbors.IP_ADDRESS: address,
neighbors.CHANGES: attribute_param}
+
call(func_name, **param)
def neighbor_state_get(self, address=None, format='json'):
@@ -418,11 +422,13 @@ class BGPSpeaker(object):
state of all the peers return.
"""
- show = {}
- show['params'] = ['neighbor', 'summary']
+ show = {
+ 'params': ['neighbor', 'summary'],
+ 'format': format,
+ }
if address:
show['params'].append(address)
- show['format'] = format
+
return call('operator.show', **show)
def prefix_add(self, prefix, next_hop=None, route_dist=None):
@@ -441,8 +447,9 @@ class BGPSpeaker(object):
"""
func_name = 'network.add'
- networks = {}
- networks[PREFIX] = prefix
+ networks = {
+ PREFIX: prefix,
+ }
if next_hop:
networks[NEXT_HOP] = next_hop
if route_dist:
@@ -472,8 +479,9 @@ class BGPSpeaker(object):
"""
func_name = 'network.del'
- networks = {}
- networks[PREFIX] = prefix
+ networks = {
+ PREFIX: prefix,
+ }
if route_dist:
func_name = 'prefix.delete_local'
networks[ROUTE_DISTINGUISHER] = route_dist
@@ -617,9 +625,11 @@ class BGPSpeaker(object):
call('vrf.delete', **vrf)
def vrfs_get(self, format='json'):
- show = {}
- show['params'] = ['vrf', 'routes', 'all']
- show['format'] = format
+ show = {
+ 'params': ['vrf', 'routes', 'all'],
+ 'format': format,
+ }
+
return call('operator.show', **show)
def rib_get(self, family='ipv4', format='json'):
@@ -629,9 +639,11 @@ class BGPSpeaker(object):
``family`` specifies the address family of the RIB.
"""
- show = {}
- show['params'] = ['rib', family]
- show['format'] = format
+ show = {
+ 'params': ['rib', family],
+ 'format': format
+ }
+
return call('operator.show', **show)
def neighbor_get(self, routetype, address, format='json'):
@@ -649,12 +661,14 @@ class BGPSpeaker(object):
the string representation of an IP address.
"""
- show = {}
+ show = {
+ 'format': format,
+ }
if routetype == 'sent-routes' or routetype == 'received-routes':
show['params'] = ['neighbor', routetype, address, 'all']
else:
show['params'] = ['neighbor', 'received-routes', address, 'all']
- show['format'] = format
+
return call('operator.show', **show)
def _set_filter(self, filter_type, address, filters):
@@ -668,12 +682,14 @@ class BGPSpeaker(object):
filters = []
func_name = 'neighbor.' + filter_type + '_filter.set'
- param = {}
- param[neighbors.IP_ADDRESS] = address
+ param = {
+ neighbors.IP_ADDRESS: address,
+ }
if filter_type == 'in':
param[neighbors.IN_FILTER] = filters
else:
param[neighbors.OUT_FILTER] = filters
+
call(func_name, **param)
def out_filter_set(self, address, filters):
@@ -714,10 +730,11 @@ class BGPSpeaker(object):
"""
func_name = 'neighbor.out_filter.get'
- param = {}
- param[neighbors.IP_ADDRESS] = address
- out_filter = call(func_name, **param)
- return out_filter
+ param = {
+ neighbors.IP_ADDRESS: address,
+ }
+
+ return call(func_name, **param)
def in_filter_set(self, address, filters):
"""This method sets in-bound filters to a neighbor.
@@ -742,10 +759,11 @@ class BGPSpeaker(object):
"""
func_name = 'neighbor.in_filter.get'
- param = {}
- param[neighbors.IP_ADDRESS] = address
- in_filter = call(func_name, **param)
- return in_filter
+ param = {
+ neighbors.IP_ADDRESS: address,
+ }
+
+ return call(func_name, **param)
def bmp_server_add(self, address, port):
"""This method registers a new BMP (BGP monitoring Protocol)
@@ -758,9 +776,11 @@ class BGPSpeaker(object):
"""
func_name = 'bmp.start'
- param = {}
- param['host'] = address
- param['port'] = port
+ param = {
+ 'host': address,
+ 'port': port,
+ }
+
call(func_name, **param)
def bmp_server_del(self, address, port):
@@ -772,9 +792,11 @@ class BGPSpeaker(object):
"""
func_name = 'bmp.stop'
- param = {}
- param['host'] = address
- param['port'] = port
+ param = {
+ 'host': address,
+ 'port': port,
+ }
+
call(func_name, **param)
def attribute_map_set(self, address, attribute_maps,
@@ -811,12 +833,14 @@ class BGPSpeaker(object):
'route_family must be RF_VPN_V4 or RF_VPN_V6'
func_name = 'neighbor.attribute_map.set'
- param = {}
- param[neighbors.IP_ADDRESS] = address
- param[neighbors.ATTRIBUTE_MAP] = attribute_maps
+ param = {
+ neighbors.IP_ADDRESS: address,
+ neighbors.ATTRIBUTE_MAP: attribute_maps,
+ }
if route_dist is not None:
param[vrfs.ROUTE_DISTINGUISHER] = route_dist
param[vrfs.VRF_RF] = route_family
+
call(func_name, **param)
def attribute_map_get(self, address, route_dist=None,
@@ -838,13 +862,14 @@ class BGPSpeaker(object):
'route_family must be RF_VPN_V4 or RF_VPN_V6'
func_name = 'neighbor.attribute_map.get'
- param = {}
- param[neighbors.IP_ADDRESS] = address
+ param = {
+ neighbors.IP_ADDRESS: address,
+ }
if route_dist is not None:
param[vrfs.ROUTE_DISTINGUISHER] = route_dist
param[vrfs.VRF_RF] = route_family
- attribute_maps = call(func_name, **param)
- return attribute_maps
+
+ return call(func_name, **param)
@staticmethod
def _check_rf_and_normalize(prefix):
diff --git a/ryu/services/protocols/bgp/core_managers/table_manager.py b/ryu/services/protocols/bgp/core_managers/table_manager.py
index edb476c5..b8285ca4 100644
--- a/ryu/services/protocols/bgp/core_managers/table_manager.py
+++ b/ryu/services/protocols/bgp/core_managers/table_manager.py
@@ -9,15 +9,12 @@ from ryu.services.protocols.bgp.info_base.ipv4 import Ipv4Path
from ryu.services.protocols.bgp.info_base.ipv4 import Ipv4Table
from ryu.services.protocols.bgp.info_base.ipv6 import Ipv6Path
from ryu.services.protocols.bgp.info_base.ipv6 import Ipv6Table
-from ryu.services.protocols.bgp.info_base.vpnv4 import Vpnv4Path
from ryu.services.protocols.bgp.info_base.vpnv4 import Vpnv4Table
-from ryu.services.protocols.bgp.info_base.vpnv6 import Vpnv6Path
from ryu.services.protocols.bgp.info_base.vpnv6 import Vpnv6Table
from ryu.services.protocols.bgp.info_base.vrf4 import Vrf4Table
from ryu.services.protocols.bgp.info_base.vrf6 import Vrf6Table
from ryu.services.protocols.bgp.info_base.vrfevpn import VrfEvpnTable
from ryu.services.protocols.bgp.info_base.evpn import EvpnTable
-from ryu.services.protocols.bgp.rtconf import vrfs
from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_IPV4
from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_IPV6
from ryu.services.protocols.bgp.rtconf.vrfs import VRF_RF_L2_EVPN
diff --git a/ryu/services/protocols/bgp/operator/commands/show/rib.py b/ryu/services/protocols/bgp/operator/commands/show/rib.py
index 05380455..022e35cd 100644
--- a/ryu/services/protocols/bgp/operator/commands/show/rib.py
+++ b/ryu/services/protocols/bgp/operator/commands/show/rib.py
@@ -1,15 +1,13 @@
from __future__ import absolute_import
-from .route_formatter_mixin import RouteFormatterMixin
-
+from ryu.services.protocols.bgp.base import ActivityException
from ryu.services.protocols.bgp.operator.command import Command
from ryu.services.protocols.bgp.operator.command import CommandsResponse
from ryu.services.protocols.bgp.operator.command import STATUS_ERROR
from ryu.services.protocols.bgp.operator.command import STATUS_OK
-
-from ryu.services.protocols.bgp.base import ActivityException
-from ryu.services.protocols.bgp.operator.commands.responses import \
- WrongParamResp
+from ryu.services.protocols.bgp.operator.commands.responses import (
+ WrongParamResp)
+from .route_formatter_mixin import RouteFormatterMixin
class RibBase(Command, RouteFormatterMixin):
diff --git a/ryu/services/protocols/bgp/operator/internal_api.py b/ryu/services/protocols/bgp/operator/internal_api.py
index 7f9449ed..e624c826 100644
--- a/ryu/services/protocols/bgp/operator/internal_api.py
+++ b/ryu/services/protocols/bgp/operator/internal_api.py
@@ -107,7 +107,7 @@ class InternalApi(object):
path_seg_list = path.get_pattr(BGP_ATTR_TYPE_AS_PATH).path_seg_list
- if type(path_seg_list) == list:
+ if isinstance(path_seg_list, list):
aspath = []
for as_path_seg in path_seg_list:
for as_num in as_path_seg:
@@ -157,10 +157,7 @@ class InternalApi(object):
return ret
def check_logging(self):
- if self.log_handler and self._has_log_handler(self.log_handler):
- return True
- else:
- return False
+ return self.log_handler and self._has_log_handler(self.log_handler)
def check_logging_level(self):
return logging.getLevelName(self.log_handler.level)
diff --git a/ryu/services/protocols/bgp/rtconf/base.py b/ryu/services/protocols/bgp/rtconf/base.py
index 6c2975b4..a02a6a7e 100644
--- a/ryu/services/protocols/bgp/rtconf/base.py
+++ b/ryu/services/protocols/bgp/rtconf/base.py
@@ -21,9 +21,10 @@ from abc import abstractmethod
import functools
import numbers
import logging
-import six
import uuid
+import six
+
from ryu.services.protocols.bgp.base import add_bgp_error_metadata
from ryu.services.protocols.bgp.base import BGPSException
from ryu.services.protocols.bgp.base import get_validator
@@ -211,8 +212,7 @@ class BaseConf(object):
if unknown_attrs:
raise RuntimeConfigError(desc=(
'Unknown attributes: %s' %
- ', '.join([str(i) for i in unknown_attrs]))
- )
+ ', '.join([str(i) for i in unknown_attrs])))
missing_req_settings = self._req_settings - given_attrs
if missing_req_settings:
raise MissingRequiredConf(conf_name=list(missing_req_settings))
@@ -687,7 +687,7 @@ def validate_med(med):
def validate_soo_list(soo_list):
if not isinstance(soo_list, list):
raise ConfigTypeError(conf_name=SITE_OF_ORIGINS, conf_value=soo_list)
- if not (len(soo_list) <= MAX_NUM_SOO):
+ if len(soo_list) > MAX_NUM_SOO:
raise ConfigValueError(desc='Max. SOO is limited to %s' %
MAX_NUM_SOO)
if not all(validation.is_valid_ext_comm_attr(attr) for attr in soo_list):
diff --git a/ryu/services/protocols/bgp/rtconf/neighbors.py b/ryu/services/protocols/bgp/rtconf/neighbors.py
index c252d5f2..28200113 100644
--- a/ryu/services/protocols/bgp/rtconf/neighbors.py
+++ b/ryu/services/protocols/bgp/rtconf/neighbors.py
@@ -18,9 +18,10 @@
"""
from abc import abstractmethod
import logging
-import netaddr
import numbers
+import netaddr
+
from ryu.lib.packet.bgp import RF_IPv4_UC
from ryu.lib.packet.bgp import RF_IPv6_UC
from ryu.lib.packet.bgp import RF_IPv4_VPN