Hi Fujita-san, Thank you for your comment and sorry for late reply. I will think about the helper function.
On 2014/08/09 22:02, FUJITA Tomonori wrote: > On Fri, 8 Aug 2014 16:07:47 +0900 > Hiroshi Yokoi <[email protected]> wrote: > >> added VPNv6 prefix support. >> This patch enables addition and deletion of VPNv6 prefix. >> >> Signed-off-by: Hiroshi Yokoi <[email protected]> >> --- >> ryu/services/protocols/bgp/api/base.py | 1 + >> ryu/services/protocols/bgp/bgpspeaker.py | 33 >> ++++++++++++++++++++-- >> .../protocols/bgp/core_managers/table_manager.py | 2 +- >> 3 files changed, 32 insertions(+), 4 deletions(-) > > Applied both, thanks a lot! I have one comment. > >> diff --git a/ryu/services/protocols/bgp/api/base.py >> b/ryu/services/protocols/bgp/api/base.py >> index e43f074..eee243b 100644 >> --- a/ryu/services/protocols/bgp/api/base.py >> +++ b/ryu/services/protocols/bgp/api/base.py >> @@ -40,6 +40,7 @@ NEXT_HOP = 'next_hop' >> VPN_LABEL = 'label' >> API_SYM = 'name' >> ORIGIN_RD = 'origin_rd' >> +ROUTE_FAMILY = 'route_family' >> >> # API call registry >> _CALL_REGISTRY = {} >> diff --git a/ryu/services/protocols/bgp/bgpspeaker.py >> b/ryu/services/protocols/bgp/bgpspeaker.py >> index fdd38dd..615bf75 100644 >> --- a/ryu/services/protocols/bgp/bgpspeaker.py >> +++ b/ryu/services/protocols/bgp/bgpspeaker.py >> @@ -27,6 +27,7 @@ from ryu.services.protocols.bgp.api.base import call >> from ryu.services.protocols.bgp.api.base import PREFIX >> from ryu.services.protocols.bgp.api.base import NEXT_HOP >> from ryu.services.protocols.bgp.api.base import ROUTE_DISTINGUISHER >> +from ryu.services.protocols.bgp.api.base import ROUTE_FAMILY >> from ryu.services.protocols.bgp.rtconf.common import LOCAL_AS >> from ryu.services.protocols.bgp.rtconf.common import ROUTER_ID >> from ryu.services.protocols.bgp.rtconf.common import BGP_SERVER_PORT >> @@ -286,8 +287,7 @@ class BGPSpeaker(object): >> neighbors.CHANGES: attribute_param} >> call(func_name, **param) >> >> - def prefix_add(self, prefix, next_hop=None, route_dist=None, >> - route_family=None): >> + def prefix_add(self, prefix, next_hop=None, route_dist=None): >> """ This method adds a new prefix to be advertized. >> >> ``prefix`` must be the string representation of an IP network >> @@ -310,9 +310,26 @@ class BGPSpeaker(object): >> if route_dist: >> func_name = 'prefix.add_local' >> networks[ROUTE_DISTINGUISHER] = route_dist >> + >> + # check if the prefix address is IPv6 address >> + ip, masklen = prefix.split('/') >> + if netaddr.valid_ipv6(ip): >> + networks[ROUTE_FAMILY] = vrfs.VRF_RF_IPV6 >> + # convert the next_hop address to IPv4-Mapped IPv6 Address >> + # if it is IPv4 address >> + if netaddr.valid_ipv4(next_hop): >> + networks[NEXT_HOP] = \ >> + str(netaddr.IPAddress(next_hop).ipv6()) >> + >> + # normalize IPv6 address expression >> + networks[PREFIX] = \ >> + str(netaddr.IPAddress(ip)) + '/' + masklen >> + else: >> + networks[ROUTE_FAMILY] = vrfs.VRF_RF_IPV4 >> + >> call(func_name, **networks) >> >> - def prefix_del(self, prefix, route_dist=None, route_family=None): >> + def prefix_del(self, prefix, route_dist=None): >> """ This method deletes a advertized prefix. >> >> ``prefix`` must be the string representation of an IP network >> @@ -329,6 +346,16 @@ class BGPSpeaker(object): >> if route_dist: >> func_name = 'prefix.delete_local' >> networks[ROUTE_DISTINGUISHER] = route_dist >> + >> + ip, masklen = prefix.split('/') >> + if netaddr.valid_ipv6(ip): >> + networks[ROUTE_FAMILY] = vrfs.VRF_RF_IPV6 >> + # normalize IPv6 address expression >> + networks[PREFIX] = \ >> + str(netaddr.IPAddress(ip)) + '/' + masklen >> + else: >> + networks[ROUTE_FAMILY] = vrfs.VRF_RF_IPV4 > > A helper function to remove the duplicated code? > > -- ------------------------------------------------ Hiroshi Yokoi <[email protected]> Cloud Computing Business Department NTT Software Corporation Tel: +81-45-212-7393 Fax: +81-45-662-7856 ------------------------------------------------------------------------------ _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
