So adding the same element doesn't trigger any error:
# nft add element filter bogons { 3.3.3.123/24 }
# nft add element filter bogons { 3.3.3.123/24 }
Still kernel reports an error if we use create instead:
# nft create element filter bogons { 3.3.3.123/24 }
<cmdline>:1:1-46: Error: Could not process rule: File exists
create element filter bogons { 3.3.3.123/24 }
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
static bool interval_overlap(const struct elementary_interval *e1,
const struct elementary_interval *e2)
{
+ if (mpz_cmp(e1->left, e2->left) == 0 &&
+ mpz_cmp(e1->right, e2->right) == 0)
+ return false;
+
return (mpz_cmp(e1->left, e2->left) >= 0 &&
mpz_cmp(e1->left, e2->right) <= 0) ||
(mpz_cmp(e1->right, e2->left) >= 0 &&