diff options
author | Phil Sutter <phil@nwl.cc> | 2019-07-02 20:30:49 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-07-03 00:53:09 +0200 |
commit | d3e39e9c457f452540359e42fb58d64a28fe3e18 (patch) | |
tree | 8c2511a459bb300332edb3d0f0acc5ad437ad269 /extensions/libebt_ip6.c | |
parent | 886b00b230fae965a104afb1d3b6677d5f17df4a (diff) |
nft: Set socket receive buffer
When trying to delete user-defined chains in a large ruleset,
iptables-nft aborts with "No buffer space available". This can be
reproduced using the following script:
| #! /bin/bash
| iptables-nft-restore <(
|
| echo "*filter"
| for i in $(seq 0 200000);do
| printf ":chain_%06x - [0:0]\n" $i
| done
| for i in $(seq 0 200000);do
| printf -- "-A INPUT -j chain_%06x\n" $i
| printf -- "-A INPUT -j chain_%06x\n" $i
| done
| echo COMMIT
|
| )
| iptables-nft -X
The problem seems to be the sheer amount of netlink error messages sent
back to user space (one EBUSY for each chain). To solve this, set
receive buffer size depending on number of commands sent to kernel.
Suggested-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'extensions/libebt_ip6.c')
0 files changed, 0 insertions, 0 deletions