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

Reply via email to