int OS_DBSearch(ListRule *lrule, char *key) { //XXX - god damn hack!!! Jeremy Rossi if (lrule->loaded == 0) { lrule->db = OS_FindList(lrule->filename); lrule->loaded = 1; } switch(lrule->lookup_type) { case LR_STRING_MATCH: //debug1("LR_STRING_MATCH"); if(OS_DBSeachKey(lrule, key) == 1) return 1; else return 0; break; case LR_STRING_NOT_MATCH: //debug1("LR_STRING_NOT_MATCH"); if(OS_DBSeachKey(lrule, key) == 1) return 0; else return 1; break; case LR_STRING_MATCH_VALUE: //debug1("LR_STRING_MATCH_VALUE"); if (OS_DBSearchKeyValue(lrule, key) == 1) return 1; else return 0; break; case LR_ADDRESS_MATCH: //debug1("LR_ADDRESS_MATCH"); return OS_DBSeachKeyAddress(lrule, key); break; case LR_ADDRESS_NOT_MATCH: //debug1("LR_ADDRESS_NOT_MATCH"); if (OS_DBSeachKeyAddress(lrule, key) == 0) return 1; else return 0; break; case LR_ADDRESS_MATCH_VALUE: //debug1("LR_ADDRESS_MATCH_VALUE"); if (OS_DBSearchKeyAddressValue(lrule, key) == 0) return 1; else return 0; break; default: debug1("lists_list.c::OS_DBSearch should never hit default"); return 0; } return 0; }
void OS_ListLoadRules() { ListRule *lrule = global_listrule; while (lrule != NULL) { if (!lrule->loaded) { lrule->db = OS_FindList(lrule->filename); lrule->loaded = 1; } lrule = lrule->next; } }
ListRule *OS_AddListRule(ListRule *first_rule_list, int lookup_type, int field, const char *dfield, char *listname, OSMatch *matcher) { ListRule *new_rulelist_pt = NULL; new_rulelist_pt = (ListRule *)calloc(1, sizeof(ListRule)); if (!new_rulelist_pt) { return (NULL); } new_rulelist_pt->field = field; new_rulelist_pt->next = NULL; new_rulelist_pt->matcher = matcher; new_rulelist_pt->lookup_type = lookup_type; new_rulelist_pt->filename = listname; new_rulelist_pt->dfield = field == RULE_DYNAMIC ? strdup(dfield) : NULL; if ((new_rulelist_pt->db = OS_FindList(listname)) == NULL) { new_rulelist_pt->loaded = 0; } else { new_rulelist_pt->loaded = 1; } if (first_rule_list == NULL) { debug1("Adding First rulelist item: filename: %s field: %d lookup_type: %d", new_rulelist_pt->filename, new_rulelist_pt->field, new_rulelist_pt->lookup_type); first_rule_list = new_rulelist_pt; } else { while (first_rule_list->next) { first_rule_list = first_rule_list->next; } debug1("Adding rulelist item: filename: %s field: %d lookup_type: %d", new_rulelist_pt->filename, new_rulelist_pt->field, new_rulelist_pt->lookup_type); first_rule_list->next = new_rulelist_pt; } return first_rule_list; }