RouteFamily objects are treated as a singleton object. However they are created in peer.py, so I added method to get RouteFamily object in bgp.py and changed codes to use it.
Signed-off-by: Hiroshi Yokoi <[email protected]> --- ryu/lib/packet/bgp.py | 4 ++++ ryu/services/protocols/bgp/peer.py | 3 ++- ryu/services/protocols/bgp/speaker.py | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py index 55bac82..c65e154 100644 --- a/ryu/lib/packet/bgp.py +++ b/ryu/lib/packet/bgp.py @@ -581,6 +581,10 @@ _rf_map = { } +def get_rf(afi, safi): + return _rf_map[(afi, safi)] + + def pad(bin, len_): assert len(bin) <= len_ return bin + (len_ - len(bin)) * '\0' diff --git a/ryu/services/protocols/bgp/peer.py b/ryu/services/protocols/bgp/peer.py index 47b562d..1e66ad6 100644 --- a/ryu/services/protocols/bgp/peer.py +++ b/ryu/services/protocols/bgp/peer.py @@ -46,6 +46,7 @@ from ryu.lib.packet.bgp import RF_IPv6_UC from ryu.lib.packet.bgp import RF_IPv4_VPN from ryu.lib.packet.bgp import RF_IPv6_VPN from ryu.lib.packet.bgp import RF_RTC_UC +from ryu.lib.packet.bgp import get_rf from ryu.lib.packet.bgp import BGPOpen from ryu.lib.packet.bgp import BGPUpdate @@ -1455,7 +1456,7 @@ class Peer(Source, Sink, NeighborConfListener, Activity): demarcation) def _handle_route_refresh_req(self, afi, safi): - rr_af = RouteFamily(afi, safi) + rr_af = get_rf(afi, safi) self.state.incr(PeerCounterNames.RECV_REFRESH) # Check if peer has asked for route-refresh for af that was advertised diff --git a/ryu/services/protocols/bgp/speaker.py b/ryu/services/protocols/bgp/speaker.py index 7884f2e..2c823f5 100644 --- a/ryu/services/protocols/bgp/speaker.py +++ b/ryu/services/protocols/bgp/speaker.py @@ -42,6 +42,7 @@ from ryu.lib.packet.bgp import BGP_CAP_MULTIPROTOCOL from ryu.lib.packet.bgp import BGP_CAP_ROUTE_REFRESH from ryu.lib.packet.bgp import BGP_ERROR_HOLD_TIMER_EXPIRED from ryu.lib.packet.bgp import BGP_ERROR_SUB_HOLD_TIMER_EXPIRED +from ryu.lib.packet.bgp import get_rf from ryu.services.protocols.bgp.base import Activity from ryu.services.protocols.bgp.base import add_bgp_error_metadata @@ -246,7 +247,7 @@ class BgpProtocol(Protocol, Activity): afs = [] for afi, safi in afi_safi: - afs.append(RouteFamily(afi, safi)) + afs.append(get_rf(afi, safi)) return afs def is_mbgp_cap_valid(self, route_family): -- 1.8.5.2 (Apple Git-48) ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck Code Sight - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
