summaryrefslogtreecommitdiff
path: root/filter/config.Y
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2020-03-26 03:57:48 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2020-03-26 03:57:48 +0100
commit27550028907fd135051a43dda0abe76e9118b7e9 (patch)
treed8d68c7906b92a68ffccb090d93da0bf400e3379 /filter/config.Y
parentd516c68ad838351fa5e20e3e10bd3fb2b3157618 (diff)
Filter: Optimize IPv4 prefix sets
Use separate IPv4 and IPv6 implementation of prefix sets. Just this change makes IPv4 prefix sets 60% smaller and 50% faster.
Diffstat (limited to 'filter/config.Y')
-rw-r--r--filter/config.Y4
1 files changed, 2 insertions, 2 deletions
diff --git a/filter/config.Y b/filter/config.Y
index c8b868af..995f6cd4 100644
--- a/filter/config.Y
+++ b/filter/config.Y
@@ -775,8 +775,8 @@ fprefix:
;
fprefix_set:
- fprefix { $$ = f_new_trie(cfg_mem, sizeof(struct f_trie_node)); trie_add_prefix($$, &($1.net), $1.lo, $1.hi); }
- | fprefix_set ',' fprefix { $$ = $1; trie_add_prefix($$, &($3.net), $3.lo, $3.hi); }
+ fprefix { $$ = f_new_trie(cfg_mem, 0); trie_add_prefix($$, &($1.net), $1.lo, $1.hi); }
+ | fprefix_set ',' fprefix { $$ = $1; if (!trie_add_prefix($$, &($3.net), $3.lo, $3.hi)) cf_error("Mixed IPv4/IPv6 prefixes in prefix set"); }
;
switch_body: /* EMPTY */ { $$ = NULL; }