mirror of
https://github.com/faucetsdn/ryu.git
synced 2026-01-25 10:32:03 +01:00
bgp: reduce duplicate codes with helper_function.
reduced duplicate codes and put together to a static function. Signed-off-by: Hiroshi Yokoi <yokoi.hiroshi@po.ntts.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
This commit is contained in:
parent
06a38cf2a8
commit
7cc538a01a
@ -312,21 +312,14 @@ class BGPSpeaker(object):
|
||||
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())
|
||||
rf, p = self._check_rf_and_normalize(prefix)
|
||||
networks[ROUTE_FAMILY] = rf
|
||||
networks[PREFIX] = p
|
||||
|
||||
# normalize IPv6 address expression
|
||||
networks[PREFIX] = \
|
||||
str(netaddr.IPAddress(ip)) + '/' + masklen
|
||||
else:
|
||||
networks[ROUTE_FAMILY] = vrfs.VRF_RF_IPV4
|
||||
if rf == vrfs.VRF_RF_IPV6 and netaddr.valid_ipv4(next_hop):
|
||||
# convert the next_hop to IPv4-Mapped IPv6 Address
|
||||
networks[NEXT_HOP] = \
|
||||
str(netaddr.IPAddress(next_hop).ipv6())
|
||||
|
||||
call(func_name, **networks)
|
||||
|
||||
@ -348,14 +341,9 @@ class BGPSpeaker(object):
|
||||
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
|
||||
rf, p = self._check_rf_and_normalize(prefix)
|
||||
networks[ROUTE_FAMILY] = rf
|
||||
networks[PREFIX] = p
|
||||
|
||||
call(func_name, **networks)
|
||||
|
||||
@ -535,3 +523,19 @@ class BGPSpeaker(object):
|
||||
param['host'] = address
|
||||
param['port'] = port
|
||||
call(func_name, **param)
|
||||
|
||||
@staticmethod
|
||||
def _check_rf_and_normalize(prefix):
|
||||
""" check prefix's route_family and if the address is
|
||||
IPv6 address, return IPv6 route_family and normalized IPv6 address.
|
||||
If the address is IPv4 address, return IPv4 route_family
|
||||
and the prefix itself.
|
||||
|
||||
"""
|
||||
ip, masklen = prefix.split('/')
|
||||
if netaddr.valid_ipv6(ip):
|
||||
# normalize IPv6 address
|
||||
ipv6_prefix = str(netaddr.IPAddress(ip)) + '/' + masklen
|
||||
return vrfs.VRF_RF_IPV6, ipv6_prefix
|
||||
else:
|
||||
return vrfs.VRF_RF_IPV4, prefix
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user