• Stefano Brivio's avatar
    fib_frontend, ip6_fib: Select routes or exceptions dump from RTM_F_CLONED · 564c91f7
    Stefano Brivio authored
    The following patches add back the ability to dump IPv4 and IPv6 exception
    routes, and we need to allow selection of regular routes or exceptions.
    
    Use RTM_F_CLONED as filter to decide whether to dump routes or exceptions:
    iproute2 passes it in dump requests (except for IPv6 cache flush requests,
    this will be fixed in iproute2) and this used to work as long as
    exceptions were stored directly in the FIB, for both IPv4 and IPv6.
    
    Caveat: if strict checking is not requested (that is, if the dump request
    doesn't go through ip_valid_fib_dump_req()), we can't filter on protocol,
    tables or route types.
    
    In this case, filtering on RTM_F_CLONED would be inconsistent: we would
    fix 'ip route list cache' by returning exception routes and at the same
    time introduce another bug in case another selector is present, e.g. on
    'ip route list cache table main' we would return all exception routes,
    without filtering on tables.
    
    Keep this consistent by applying no filters at all, and dumping both
    routes and exceptions, if strict checking is not requested. iproute2
    currently filters results anyway, and no unwanted results will be
    presented to the user. The kernel will just dump more data than needed.
    
    v7: No changes
    
    v6: Rebase onto net-next, no changes
    
    v5: New patch: add dump_routes and dump_exceptions flags in filter and
        simply clear the unwanted one if strict checking is enabled, don't
        ignore NLM_F_MATCH and don't set filter_set if NLM_F_MATCH is set.
        Skip filtering altogether if no strict checking is requested:
        selecting routes or exceptions only would be inconsistent with the
        fact we can't filter on tables.
    Signed-off-by: default avatarStefano Brivio <sbrivio@redhat.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    564c91f7
ip_fib.h 13.3 KB