+
+ @staticmethod
+ def compute_ipv6_map_source_address(ipv6_pfx, ipv4_src):
+ """Compute IPv6 source address from IPv4 address for MAP-T algorithm.
+
+ :param ipv6_pfx: 96 bit long IPv6 prefix.
+ :param ipv4_src: IPv4 source address
+ :type ipv6_pfx: str
+ :type ipv4_src: str
+ :returns: IPv6 address, combination of IPv6 prefix and IPv4 address.
+ :rtype: str
+ """
+ ipv6_net = ipaddress.ip_network(unicode(ipv6_pfx))
+ ipv4_host = ipaddress.ip_address(unicode(ipv4_src))
+
+ address = int(ipv6_net.network_address)
+ address |= int(ipv4_host)
+
+ return str(ipaddress.ip_address(address))