summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHiroshi Yokoi <yokoi.hiroshi@po.ntts.co.jp>2014-07-17 14:25:23 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-07-18 12:55:14 +0900
commit86192caf0709fdeae2101f5384ab4d6b682408df (patch)
tree17d610c249f403c11d9dab02df2209b07084c426
parent3c0c9ce7372205456dfd9bb82860fa4121473272 (diff)
bgp: fix the way of getting RouteFamily object
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 <yokoi.hiroshi@po.ntts.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/packet/bgp.py4
-rw-r--r--ryu/services/protocols/bgp/peer.py3
-rw-r--r--ryu/services/protocols/bgp/speaker.py3
3 files changed, 8 insertions, 2 deletions
diff --git a/ryu/lib/packet/bgp.py b/ryu/lib/packet/bgp.py
index 55bac822..c65e1544 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 12f8da96..4b3675ab 100644
--- a/ryu/services/protocols/bgp/peer.py
+++ b/ryu/services/protocols/bgp/peer.py
@@ -47,6 +47,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
@@ -1521,7 +1522,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 fc7ae9de..d079d6fd 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
@@ -238,7 +239,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):