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