+ /* List lookups */
+ if(currently_rule->lists != NULL)
+ {
+ ListRule *list_holder=currently_rule->lists;
+ while(list_holder)
+ {
+ switch(list_holder->field)
+ {
+ case RULE_SRCIP:
+ if(!lf->srcip)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->srcip))
+ return(NULL);
+ break;
+ case RULE_SRCPORT:
+ if(!lf->srcport)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->srcport))
+ return(NULL);
+ break;
+ case RULE_DSTIP:
+ if(!lf->dstip)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->dstip))
+ return(NULL);
+ break;
+ case RULE_DSTPORT:
+ if(!lf->dstport)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->dstport))
+ return(NULL);
+ break;
+ case RULE_USER:
+ if(lf->srcuser)
+ {
+ if(!OS_DBSearch(list_holder,lf->srcuser))
+ return(NULL);
+ }
+ else if(lf->dstuser)
+ {
+ if(!OS_DBSearch(list_holder,lf->dstuser))
+ return(NULL);
+ }
+ else
+ {
+ return(NULL);
+ }
+ break;
+ case RULE_URL:
+ if(!lf->url)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->url))
+ return(NULL);
+ break;
+ case RULE_ID:
+ if(!lf->id)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->id))
+ return(NULL);
+ break;
+ case RULE_HOSTNAME:
+ if(!lf->hostname)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->hostname))
+ return(NULL);
+ break;
+ case RULE_PROGRAM_NAME:
+ if(!lf->program_name)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->program_name))
+ return(NULL);
+ break;
+ case RULE_STATUS:
+ if(!lf->status)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->status))
+ return(NULL);
+ break;
+ case RULE_ACTION:
+ if(!lf->action)
+ return(NULL);
+ if(!OS_DBSearch(list_holder,lf->action))
+ return(NULL);
+ break;
+ default:
+ return(NULL);
+ }
+
+ list_holder = list_holder->next;
+ }
+ }
+
+