Changes since v5: - Extract the initial set of patches making netdev hooks name-based as suggested by Florian. - Drop Fixes: tag from patch 1: It is not correct (the pointless check existed before that commit already) and it is rather an optimization than fixing a bug. This series makes netdev hooks store the interface name spec they were created for and establishes this stored name as the key identifier. The previous one which is the hook's 'ops.dev' pointer is thereby freed to vanish, so a vanishing netdev no longer has to drag the hook along with it. (Patches 2-4) Furthermore, it aligns behaviour of netdev-family chains with that of flowtables in situations of vanishing interfaces. When previously a chain losing its last interface was torn down and deleted, it may now remain in place (albeit with no remaining interfaces). (Patch 5) Patch 6 is a cleanup following patch 5, patches 1 and 7 are independent code simplifications. Phil Sutter (7): netfilter: nf_tables: Flowtable hook's pf value never varies netfilter: nf_tables: Store user-defined hook ifname netfilter: nf_tables: Use stored ifname in netdev hook dumps netfilter: nf_tables: Compare netdev hooks based on stored name netfilter: nf_tables: Tolerate chains with no remaining hooks netfilter: nf_tables: Simplify chain netdev notifier netfilter: nf_tables: Drop __nft_unregister_flowtable_net_hooks() include/net/netfilter/nf_tables.h | 4 +- net/netfilter/nf_tables_api.c | 74 +++++++++---------------------- net/netfilter/nft_chain_filter.c | 48 ++++++-------------- 3 files changed, 35 insertions(+), 91 deletions(-) -- 2.47.0