• Phil Sutter's avatar
    ipv4: fib: Fix metrics match when deleting a route · d03a4557
    Phil Sutter authored
    The recently added fib_metrics_match() causes a regression for routes
    with both RTAX_FEATURES and RTAX_CC_ALGO if the latter has
    TCP_CONG_NEEDS_ECN flag set:
    
    | # ip link add d0 type dummy
    | # ip link set d0 up
    | # ip route add 172.29.29.0/24 dev d0 features ecn congctl dctcp
    | # ip route del 172.29.29.0/24 dev d0 features ecn congctl dctcp
    | RTNETLINK answers: No such process
    
    During route insertion, fib_convert_metrics() detects that the given CC
    algo requires ECN and hence sets DST_FEATURE_ECN_CA bit in
    RTAX_FEATURES.
    
    During route deletion though, fib_metrics_match() compares stored
    RTAX_FEATURES value with that from userspace (which obviously has no
    knowledge about DST_FEATURE_ECN_CA) and fails.
    
    Fixes: 5f9ae3d9 ("ipv4: do metrics match when looking up and deleting a route")
    Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d03a4557
fib_semantics.c 42.1 KB