diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2020-03-26 03:57:48 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2020-03-26 03:57:48 +0100 |
commit | 27550028907fd135051a43dda0abe76e9118b7e9 (patch) | |
tree | d8d68c7906b92a68ffccb090d93da0bf400e3379 /filter/config.Y | |
parent | d516c68ad838351fa5e20e3e10bd3fb2b3157618 (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.Y | 4 |
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; } |