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

Reply via email to