diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2014-05-30 11:26:57 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-06-02 12:02:03 +0900 |
commit | afc0b98b20467231be2d8899e0708a39c5b77f19 (patch) | |
tree | d640f4aaa629ae316dac01f71f119fbddf00504d | |
parent | 2c7ca2ff2d92824cf8e26f129f70f2d2e743b436 (diff) |
bgp: remove unnecessary OutgoingRoute attribute 'bgp4_format'
Attribute 'bgp4_format' was intended to be used to decide whether to
construct UPDATE msg in bgp4 format or mpbgp format.
But we can decide this simply by checking the path type which we are going
update. If the path type is IPv4, we use bgp4 format. In other cases,
we use mpbgp format.
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/services/protocols/bgp/model.py | 7 | ||||
-rw-r--r-- | ryu/services/protocols/bgp/peer.py | 14 |
2 files changed, 8 insertions, 13 deletions
diff --git a/ryu/services/protocols/bgp/model.py b/ryu/services/protocols/bgp/model.py index 97bed536..51c8bb02 100644 --- a/ryu/services/protocols/bgp/model.py +++ b/ryu/services/protocols/bgp/model.py @@ -44,11 +44,11 @@ class OutgoingRoute(object): """Holds state about a route that is queued for being sent to a given sink. """ - __slots__ = ('_path', '_for_route_refresh', 'bgp4_format', + __slots__ = ('_path', '_for_route_refresh', 'sink', 'next_outgoing_route', 'prev_outgoing_route', 'next_sink_out_route', 'prev_sink_out_route') - def __init__(self, path, for_route_refresh=False, bgp4_format=False): + def __init__(self, path, for_route_refresh=False): assert(path) self.sink = None @@ -59,9 +59,6 @@ class OutgoingRoute(object): # No sent-route is queued for the destination for this update. self._for_route_refresh = for_route_refresh - # Construct UPDATE msg using bgp4 format - self.bgp4_format = bgp4_format - # Automatically generated, for list off of Destination. # # self.next_outgoing_route diff --git a/ryu/services/protocols/bgp/peer.py b/ryu/services/protocols/bgp/peer.py index ab14e5a9..95c223c5 100644 --- a/ryu/services/protocols/bgp/peer.py +++ b/ryu/services/protocols/bgp/peer.py @@ -33,6 +33,7 @@ from ryu.services.protocols.bgp.net_ctrl import NET_CONTROLLER from ryu.services.protocols.bgp.rtconf.neighbors import NeighborConfListener from ryu.services.protocols.bgp.signals.emit import BgpSignalBus from ryu.services.protocols.bgp.speaker import BgpProtocol +from ryu.services.protocols.bgp.info_base.ipv4 import Ipv4Path from ryu.services.protocols.bgp.utils import bgp as bgp_utils from ryu.services.protocols.bgp.utils.evtlet import EventletIOFactory from ryu.services.protocols.bgp.utils import stats @@ -607,7 +608,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): new_pathattr = [] if path.is_withdraw: - if self._neigh_conf.cap_mbgp_ipv4: + if isinstance(path, Ipv4Path): update = BGPUpdate(withdrawn_routes=[path.nlri]) return update else: @@ -639,7 +640,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): nexthop_attr = BGPPathAttributeNextHop(next_hop) assert nexthop_attr, 'Missing NEXTHOP mandatory attribute.' - if not self._neigh_conf.cap_mbgp_ipv4: + if not isinstance(path, Ipv4Path): # We construct mpreach-nlri attribute. mpnlri_attr = BGPPathAttributeMpReachNLRI( path.route_family.afi, @@ -754,7 +755,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): # Ordering path attributes according to type as RFC says. We set # MPReachNLRI first as advised by experts as a new trend in BGP # implementation. - if self._neigh_conf.cap_mbgp_ipv4: + if isinstance(path, Ipv4Path): new_pathattr.append(nexthop_attr) else: new_pathattr.append(mpnlri_attr) @@ -772,7 +773,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): if unkown_opttrans_attrs: new_pathattr.extend(unkown_opttrans_attrs.values()) - if self._neigh_conf.cap_mbgp_ipv4: + if isinstance(path, Ipv4Path): update = BGPUpdate(path_attributes=new_pathattr, nlri=nlri_list) else: @@ -1661,10 +1662,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): # Construct OutgoingRoute specific for this peer and put it in # its sink. - bgp4_format = False - if self._neigh_conf.cap_mbgp_ipv4: - bgp4_format = True - outgoing_route = OutgoingRoute(path, bgp4_format=bgp4_format) + outgoing_route = OutgoingRoute(path) self.enque_outgoing_msg(outgoing_route) LOG.debug('Enqueued outgoing route %s for peer %s' % (outgoing_route.path.nlri, self)) |