def METHOD_NAME(cache):
    border_agents = []
    # Find all border routers
    for ptr in cache.get('_meshcop._udp.local.', []):
        border_agents.append(BorderAgent(ptr.alias))
    # Find server name, port and Thread Interface status for each border router
    for ba in border_agents:
        for record in cache.get(ba.alias.lower(), []):
            if isinstance(record, DNSService):
                ba.server_name = record.server
                ba.port = record.port
            elif isinstance(record, DNSText):
                text = bytearray(record.text)
                sb = text.split(b'sb=')[1][0:4]
                ba.thread_status = (sb[3] & 0x18) >> 3
    # Find IPv6 address for each border router
    for ba in border_agents:
        for record in cache.get(ba.server_name.lower(), []):
            if isinstance(record, DNSAddress):
                addr = ipaddress.ip_address(record.address)
                if not isinstance(addr, ipaddress.IPv6Address) or addr.is_multicast or addr.is_loopback:
                    continue
                if not ba.addr or get_ipaddr_priority(addr) > get_ipaddr_priority(ipaddress.IPv6Address(ba.addr)):
                    ba.addr = str(addr)
    return border_agents