icmp: fix lib conflict with trinity
authorAndreas Roeseler <andreas.a.roeseler@gmail.com>
Thu, 3 Jun 2021 21:22:11 +0000 (16:22 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 3 Jun 2021 22:31:34 +0000 (15:31 -0700)
Including <linux/in.h> and <netinet/in.h> in the dependencies breaks
compilation of trinity due to multiple definitions. <linux/in.h> is only
used in <linux/icmp.h> to provide the definition of the struct in_addr,
but this can be substituted out by using the datatype __be32.

Signed-off-by: Andreas Roeseler <andreas.a.roeseler@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/icmp.h
net/ipv4/icmp.c

index c1da824..163c099 100644 (file)
@@ -20,7 +20,6 @@
 
 #include <linux/types.h>
 #include <asm/byteorder.h>
-#include <linux/in.h>
 #include <linux/if.h>
 #include <linux/in6.h>
 
@@ -154,7 +153,7 @@ struct icmp_ext_echo_iio {
                struct {
                        struct icmp_ext_echo_ctype3_hdr ctype3_hdr;
                        union {
-                               struct in_addr  ipv4_addr;
+                               __be32          ipv4_addr;
                                struct in6_addr ipv6_addr;
                        } ip_addr;
                } addr;
index 7b6931a..2e09d62 100644 (file)
@@ -1059,7 +1059,7 @@ static bool icmp_echo(struct sk_buff *skb)
                        if (ident_len != sizeof(iio->ident.addr.ctype3_hdr) +
                                         sizeof(struct in_addr))
                                goto send_mal_query;
-                       dev = ip_dev_find(net, iio->ident.addr.ip_addr.ipv4_addr.s_addr);
+                       dev = ip_dev_find(net, iio->ident.addr.ip_addr.ipv4_addr);
                        break;
 #if IS_ENABLED(CONFIG_IPV6)
                case ICMP_AFI_IP6: