• Pablo Neira Ayuso's avatar
    netfilter: nf_tables: use new transaction infrastructure to handle sets · 958bee14
    Pablo Neira Ayuso authored
    This patch reworks the nf_tables API so set updates are included in
    the same batch that contains rule updates. This speeds up rule-set
    updates since we skip a dialog of four messages between kernel and
    user-space (two on each direction), from:
    
     1) create the set and send netlink message to the kernel
     2) process the response from the kernel that contains the allocated name.
     3) add the set elements and send netlink message to the kernel.
     4) process the response from the kernel (to check for errors).
    
    To:
    
     1) add the set to the batch.
     2) add the set elements to the batch.
     3) add the rule that points to the set.
     4) send batch to the kernel.
    
    This also introduces an internal set ID (NFTA_SET_ID) that is unique
    in the batch so set elements and rules can refer to new sets.
    
    Backward compatibility has been only retained in userspace, this
    means that new nft versions can talk to the kernel both in the new
    and the old fashion.
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    958bee14
nft_lookup.c 3.8 KB