void add_mtrie_conf_entry(aConfItem *aconf,int flags) { DOMAIN_LEVEL *cur_level; DOMAIN_PIECE *cur_piece; DOMAIN_PIECE *last_piece; char tokenized_host[HOSTLEN+1]; char *cur_dns_piece; int index; stack_pointer = 0; /* check to see if its a kline on [email protected]/mask * or [email protected].* or [email protected] */ if(host_is_legal_ip(aconf->host) && (aconf->status & CONF_KILL)) { add_to_dline_hash(aconf); return; } switch(sortable(tokenized_host,aconf->host)) { case 0: case 1: if(aconf->status & CONF_CLIENT) { if(unsortable_list_ilines) { aconf->next = unsortable_list_ilines; unsortable_list_ilines = aconf; } else unsortable_list_ilines = aconf; } else { if(unsortable_list_klines) { aconf->next = unsortable_list_klines; unsortable_list_klines = aconf; } else unsortable_list_klines = aconf; } return; break; case -2: if(aconf->status & CONF_CLIENT) { if(wild_card_ilines) { aconf->next = wild_card_ilines; wild_card_ilines = aconf; } else wild_card_ilines = aconf; } else { if(unsortable_list_klines) { aconf->next = unsortable_list_klines; unsortable_list_klines = aconf; } else unsortable_list_klines = aconf; } return; break; case -1: break; } if(trie_list == (DOMAIN_LEVEL *)NULL) { trie_list = (DOMAIN_LEVEL *)MyMalloc(sizeof(DOMAIN_LEVEL)); memset((void *)trie_list,0,sizeof(DOMAIN_LEVEL)); } /* now, start generating the sub mtrie tree */ create_sub_mtrie(trie_list,aconf,flags,aconf->host); }
bool BasicName::operator < (const BasicName & other) const { return sortable() < other.sortable(); }