def search_rule(self, search):
        """
        Search a rule for a rule tag or name value
        Result will be the meta data for rule (name, href, type)

        Searching for a rule in specific policy::

            f = FirewallPolicy(policy)
            search = f.search_rule(searchable)

        :param str search: search string
        :return: rule elements matching criteria
        :rtype: list(Element)
        """
        result = self.make_request(
            resource='search_rule',
            params={'filter': search})
        
        if result:
            results = []
            for data in result:
                typeof = data.get('type')
                if 'ethernet' in typeof:
                    klazz = lookup_class('ethernet_rule')
                elif typeof in [
                    'ips_ipv4_access_rule', 'l2_interface_ipv4_access_rule']:
                    klazz = lookup_class('layer2_ipv4_access_rule')
                else:
                    klazz = lookup_class(typeof)
                results.append(klazz(**data))
            return results
        return []