• Pablo Neira Ayuso's avatar
    netfilter: nf_tables: support for recursive chain deletion · 9dee1474
    Pablo Neira Ayuso authored
    This patch sorts out an asymmetry in deletions. Currently, table and set
    deletion commands come with an implicit content flush on deletion.
    However, chain deletion results in -EBUSY if there is content in this
    chain, so no implicit flush happens. So you have to send a flush command
    in first place to delete chains, this is inconsistent and it can be
    annoying in terms of user experience.
    
    This patch uses the new NLM_F_NONREC flag to request non-recursive chain
    deletion, ie. if the chain to be removed contains rules, then this
    returns EBUSY. This problem was discussed during the NFWS'17 in Faro,
    Portugal. In iptables, you hit -EBUSY if you try to delete a chain that
    contains rules, so you have to flush first before you can remove
    anything. Since iptables-compat uses the nf_tables netlink interface, it
    has to use the NLM_F_NONREC flag from userspace to retain the original
    iptables semantics, ie.  bail out on removing chains that contain rules.
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    9dee1474
nf_tables_api.c 141 KB