• Ido Schimmel's avatar
    ipv4: Fix user space build failure due to header change · 1083d733
    Ido Schimmel authored
    RT_TOS() from include/uapi/linux/in_route.h is defined using
    IPTOS_TOS_MASK from include/uapi/linux/ip.h. This is problematic for
    files such as include/net/ip_fib.h that want to use RT_TOS() as without
    including both header files kernel compilation fails:
    
    In file included from ./include/net/ip_fib.h:25,
                     from ./include/net/route.h:27,
                     from ./include/net/lwtunnel.h:9,
                     from net/core/dst.c:24:
    ./include/net/ip_fib.h: In function ‘fib_dscp_masked_match’:
    ./include/uapi/linux/in_route.h:31:32: error: ‘IPTOS_TOS_MASK’ undeclared (first use in this function)
       31 | #define RT_TOS(tos)     ((tos)&IPTOS_TOS_MASK)
          |                                ^~~~~~~~~~~~~~
    ./include/net/ip_fib.h:440:45: note: in expansion of macro ‘RT_TOS’
      440 |         return dscp == inet_dsfield_to_dscp(RT_TOS(fl4->flowi4_tos));
    
    Therefore, cited commit changed linux/in_route.h to include linux/ip.h.
    However, as reported by David, this breaks iproute2 compilation due
    overlapping definitions between linux/ip.h and
    /usr/include/netinet/ip.h:
    
    In file included from ../include/uapi/linux/in_route.h:5,
                     from iproute.c:19:
    ../include/uapi/linux/ip.h:25:9: warning: "IPTOS_TOS" redefined
       25 | #define IPTOS_TOS(tos)          ((tos)&IPTOS_TOS_MASK)
          |         ^~~~~~~~~
    In file included from iproute.c:17:
    /usr/include/netinet/ip.h:222:9: note: this is the location of the previous definition
      222 | #define IPTOS_TOS(tos)          ((tos) & IPTOS_TOS_MASK)
    
    Fix by changing include/net/ip_fib.h to include linux/ip.h. Note that
    usage of RT_TOS() should not spread further in the kernel due to recent
    work in this area.
    
    Fixes: 1fa3314c ("ipv4: Centralize TOS matching")
    Reported-by: default avatarDavid Ahern <dsahern@kernel.org>
    Closes: https://lore.kernel.org/netdev/2f5146ff-507d-4cab-a195-b28c0c9e654e@kernel.org/Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@kernel.org>
    Reviewed-by: default avatarGuillaume Nault <gnault@redhat.com>
    Link: https://patch.msgid.link/20240903133554.2807343-1-idosch@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    1083d733
ip_fib.h 17 KB