diff options
author | Hiroshi Yokoi <yokoi.hiroshi@po.ntts.co.jp> | 2014-07-17 14:25:23 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-07-18 12:55:14 +0900 |
commit | 86192caf0709fdeae2101f5384ab4d6b682408df (patch) | |
tree | 17d610c249f403c11d9dab02df2209b07084c426 | |
parent | 3c0c9ce7372205456dfd9bb82860fa4121473272 (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.py | 4 | ||||
-rw-r--r-- | ryu/services/protocols/bgp/peer.py | 3 | ||||
-rw-r--r-- | 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 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): |