def is_local_destination(self, mapping_socket): destination_is_local = False if mapping_socket.destination_ip is not None and mapping_socket.family == "AF_INET": for nic in self.nics: if NetworkInterfaceCard.ip_is_in_subnet(mapping_socket.destination_ip, nic.ipv4_subnet_addr, nic.ipv4_subnet_mask): destination_is_local = True break elif mapping_socket.destination_ip is not None and mapping_socket.family == "AF_INET6": destination_ipv4 = MapSocket.ipv6_2_ipv4(mapping_socket.destination_ip) if destination_ipv4 != mapping_socket.destination_ip: for nic in self.nics: if NetworkInterfaceCard.ip_is_in_subnet(destination_ipv4, nic.ipv4_subnet_addr, nic.ipv4_subnet_mask): destination_is_local = True break else: #TODO: check is ipv6 in subnet ? for nic in self.nics: if nic.ipv6_address is not None and mapping_socket.destination_ip == nic.ipv6_address: destination_is_local = True break elif NetworkInterfaceCard.ip_is_in_subnet(mapping_socket.destination_ip, nic.ipv4_subnet_addr, nic.ipv4_subnet_mask): destination_is_local = True break elif mapping_socket.family == "AF_UNIX": destination_is_local = True return destination_is_local