<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def process_for_rdns(self):
 """Look through my input stream for the fields in ip_field_list and try to do a reverse dns lookup on those fields. """


        # For each packet process the contents
        for item in self.input_stream:

            # Do for both the src and dst
            for endpoint in ['src', 'dst']:

                # Sanity check (might be an ARP, whatever... without a src/dst)
                if endpoint not in item['packet']:

                    # Set the domain to None
                    item['packet'][endpoint+self.domain_postfix] = None
                    continue

                # Convert inet_address to str ip_address
                ip_address = net_utils.inet_to_str(item['packet'][endpoint])

                # Is this already in our cache
                if self.ip_lookup_cache.get(ip_address):
                    domain = self.ip_lookup_cache.get(ip_address)

                # Is the ip_address local or special
                elif net_utils.is_internal(ip_address):
                    domain = 'internal'
                elif net_utils.is_special(ip_address):
                    domain = net_utils.is_special(ip_address)

                # Look it up at this point
                else:
                    domain = self._reverse_dns_lookup(ip_address)

                # Set the domain
                item['packet'][endpoint+self.domain_postfix] = domain

                # Cache it
                self.ip_lookup_cache.set(ip_address, domain)

            # All done
            yield item