def receivedLoginEcho(self, ad, rand):
        if rand != self.loginEcho_rand:
            raise BadPacketError("EC Rand mismatch")

        myad = Ad().setRawIPPort(self.me.ipp)

        dcall_discard(self, 'loginEcho_dcall')
        self.loginEcho_rand = None

        if ad.ip == myad.ip:
            return

        if ad.isPrivate():
            # This matches an RFC1918 address, so it looks like a router.
            # Remap this address to my external IP in the future

            self.main.ph.remap_ip = (ad.ip, myad.ip)
            self.main.logPacket("EC: Remap %s->%s" %
                                (ad.getTextIP(), myad.getTextIP()))

        else:
            self.main.logPacket("EC: Not RFC1918")