}
else
opm_check_enable(false);
+
+ /* Configure DNSBLs */
+ rb_dictionary_iter iter;
+ struct DNSBLEntry *entry;
+ RB_DICTIONARY_FOREACH(entry, &iter, dnsbl_stats)
+ {
+ rb_helper_write(authd_helper, "O rbl %s %hhu %s :%s", entry->host,
+ entry->iptype, entry->filters, entry->reason);
+ }
}
static void
add_dnsbl_entry(const char *host, const char *reason, uint8_t iptype, rb_dlink_list *filters)
{
rb_dlink_node *ptr;
- struct DNSBLEntryStats *stats = rb_malloc(sizeof(*stats));
+ struct DNSBLEntry *entry = rb_malloc(sizeof(*entry));
char filterbuf[BUFSIZE] = "*";
size_t s = 0;
if(s)
filterbuf[s - 1] = '\0';
- stats->host = rb_strdup(host);
- stats->iptype = iptype;
- stats->hits = 0;
- rb_dictionary_add(dnsbl_stats, stats->host, stats);
+ entry->host = rb_strdup(host);
+ entry->reason = rb_strdup(reason);
+ entry->filters = rb_strdup(filterbuf);
+ entry->iptype = iptype;
+ entry->hits = 0;
+ rb_dictionary_add(dnsbl_stats, entry->host, entry);
rb_helper_write(authd_helper, "O rbl %s %hhu %s :%s", host, iptype, filterbuf, reason);
}
void
del_dnsbl_entry(const char *host)
{
- struct DNSBLEntryStats *stats = rb_dictionary_retrieve(dnsbl_stats, host);
- if(stats != NULL)
+ struct DNSBLEntry *entry = rb_dictionary_retrieve(dnsbl_stats, host);
+
+ if(entry != NULL)
{
- rb_dictionary_delete(dnsbl_stats, host);
- rb_free(stats->host);
- rb_free(stats);
+ rb_dictionary_delete(dnsbl_stats, entry->host);
+ rb_free(entry->host);
+ rb_free(entry->reason);
+ rb_free(entry->filters);
+ rb_free(entry);
}
rb_helper_write(authd_helper, "O rbl_del %s", host);
static void
dnsbl_delete_elem(rb_dictionary_element *delem, void *unused)
{
- struct DNSBLEntryStats *stats = delem->data;
+ struct DNSBLEntry *entry = delem->data;
- rb_free(stats->host);
- rb_free(stats);
+ rb_free(entry->host);
+ rb_free(entry->reason);
+ rb_free(entry->filters);
+ rb_free(entry);
}
/* Delete all the DNSBL entries. */
stats_dnsbl(struct Client *source_p)
{
rb_dictionary_iter iter;
- struct DNSBLEntryStats *stats;
+ struct DNSBLEntry *entry;
if(dnsbl_stats == NULL)
return;
- RB_DICTIONARY_FOREACH(stats, &iter, dnsbl_stats)
+ RB_DICTIONARY_FOREACH(entry, &iter, dnsbl_stats)
{
/* use RPL_STATSDEBUG for now -- jilles */
sendto_one_numeric(source_p, RPL_STATSDEBUG, "n :%d %s",
- stats->hits, (const char *)iter.cur->key);
+ entry->hits, entry->host);
}
}