• Pablo Neira Ayuso's avatar
    netfilter: nft_dynset: allow to invert match criteria · dbd2be06
    Pablo Neira Ayuso authored
    The dynset expression matches if we can fit a new entry into the set.
    If there is no room for it, then it breaks the rule evaluation.
    
    This patch introduces the inversion flag so you can add rules to
    explicitly drop packets that don't fit into the set. For example:
    
     # nft filter input flow table xyz size 4 { ip saddr timeout 120s counter } overflow drop
    
    This is useful to provide a replacement for connlimit.
    
    For the rule above, every new entry uses the IPv4 address as key in the
    set, this entry gets a timeout of 120 seconds that gets refresh on every
    packet seen. If we get new flow and our set already contains 4 entries
    already, then this packet is dropped.
    
    You can already express this in positive logic, assuming default policy
    to drop:
    
     # nft filter input flow table xyz size 4 { ip saddr timeout 10s counter } accept
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    dbd2be06
nft_dynset.c 7.51 KB