def METHOD_NAME(self, protocols=None):
    """
    Returns the index of every entry in the routing table that matches any
    of the specific protocols. If the protocols argument is omitted, a
    dictionary of routes by protocols, {proto: [route1, route2, ...], ...}
    is returned.
    :param protocols: A list of protocol names.
    """
    protos = yield self.retrieve_column('inetCidrRouteProto')
    by_proto = defaultdict(list)
    for index, proto in protos.items():
        name = IANA_IP_ROUTE_PROTOCOLS.get(proto, proto)
        by_proto[name].append(index)
    if protocols:
        result = chain(*[by_proto.get(proto, []) for proto in protocols])
        returnValue(list(result))
    else:
        returnValue(dict(by_proto))