lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sat, 20 Nov 2021 09:26:37 -0800
From:   Stephen Hemminger <stephen@...workplumber.org>
To:     Maxim Petrov <mmrmaximuzz@...il.com>
Cc:     netdev@...r.kernel.org
Subject: Re: [PATCH iproute2] Add missing headers to the project

On Sat, 20 Nov 2021 17:00:45 +0300
Maxim Petrov <mmrmaximuzz@...il.com> wrote:

> The project's headers are not self-contained, as they use some types without
> explicitly including the corresponding headers with definitions. That makes the
> overall headers structure fragile: reordering/updating the headers may break the
> compilation. IDEs also suffer and generate dozens of errors when jumping to some
> random header file, distracting programmers from more serious code issues.
> 
> Some building issue caused by missing headers has arised just recently and it
> required some local cleanup in a31e7b79 (mptcp: cleanup include section). In
> this patch I tried to improve the situation for the whole project by adding
> missing includes for virtually all the project headers, except uapi ones.
> 
> Signed-off-by: Maxim Petrov <mmrmaximuzz@...il.com>

Would be better to do this with an existing tool like IncludeWhatYouUse
Is this what you did?

From 343062efbb3895f9afbff015d49df497b180f3d9 Mon Sep 17 00:00:00 2001
From: Stephen Hemminger <stephen@...workplumber.org>
Date: Sat, 20 Nov 2021 09:21:22 -0800
Subject: [PATCH] lib: update headers using iwyu

This is a semi-automated patch generated by using the iwyu
tool: https://github.com/include-what-you-use/include-what-you-use

The result was manually corrected to remove unnecessary
references to <asm/int-ll64.h>
---
 lib/ax25_ntop.c       |  1 +
 lib/bpf_glue.c        |  3 ++-
 lib/bpf_legacy.c      | 21 +++++++++++++++------
 lib/cg_map.c          |  7 ++++---
 lib/color.c           |  3 ++-
 lib/inet_proto.c      |  5 +----
 lib/json_print.c      | 12 ++++++++++--
 lib/json_print_math.c |  2 +-
 lib/json_writer.c     |  6 +++---
 lib/libgenl.c         |  7 ++++++-
 lib/libnetlink.c      | 15 +++++++++++----
 lib/ll_addr.c         |  9 ---------
 lib/ll_map.c          | 10 ++++++----
 lib/ll_proto.c        | 13 ++-----------
 lib/ll_types.c        | 12 ------------
 lib/mnl_utils.c       |  9 ++++++++-
 lib/mpls_ntop.c       |  4 +++-
 lib/mpls_pton.c       |  4 +++-
 lib/names.c           |  5 ++---
 lib/netrom_ntop.c     |  1 +
 lib/rose_ntop.c       | 12 ------------
 lib/rt_names.c        | 11 +++--------
 lib/utils_math.c      |  2 +-
 23 files changed, 85 insertions(+), 89 deletions(-)

diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c
index cfd0e04b06f9..c76cf781d95c 100644
--- a/lib/ax25_ntop.c
+++ b/lib/ax25_ntop.c
@@ -3,6 +3,7 @@
 #include <errno.h>
 #include <sys/socket.h>
 #include <netax25/ax25.h>
+#include <stddef.h>
 
 #include "utils.h"
 
diff --git a/lib/bpf_glue.c b/lib/bpf_glue.c
index 70d001840f7b..b093031a0f9c 100644
--- a/lib/bpf_glue.c
+++ b/lib/bpf_glue.c
@@ -4,9 +4,10 @@
  * Authors:	Hangbin Liu <haliu@...hat.com>
  *
  */
-#include <limits.h>
+#include <stddef.h>
 
 #include "bpf_util.h"
+#include "linux/bpf.h"
 #ifdef HAVE_LIBBPF
 #include <bpf/bpf.h>
 #endif
diff --git a/lib/bpf_legacy.c b/lib/bpf_legacy.c
index 6e3891c9f1f1..88ea5ade640f 100644
--- a/lib/bpf_legacy.c
+++ b/lib/bpf_legacy.c
@@ -22,29 +22,38 @@
 #include <stdarg.h>
 #include <limits.h>
 #include <assert.h>
+#include <bsd/string.h>
+#include <elf.h>
+#include <netinet/in.h>
+#include <sys/socket.h>
+#include <sys/statfs.h>
+#include <syscall.h>
 
 #ifdef HAVE_ELF
 #include <libelf.h>
 #include <gelf.h>
 #endif
 
-#include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/un.h>
-#include <sys/vfs.h>
 #include <sys/mount.h>
-#include <sys/syscall.h>
 #include <sys/sendfile.h>
 #include <sys/resource.h>
 
-#include <arpa/inet.h>
-
 #include "utils.h"
 #include "json_print.h"
-
 #include "bpf_util.h"
 #include "bpf_elf.h"
 #include "bpf_scm.h"
+#include "linux/bpf.h"
+#include "linux/bpf_common.h"
+#include "linux/btf.h"
+#include "linux/elf-em.h"
+#include "linux/filter.h"
+#include "linux/if_alg.h"
+#include "linux/limits.h"
+#include "linux/magic.h"
+#include "linux/rtnetlink.h"
 
 struct bpf_prog_meta {
 	const char *type;
diff --git a/lib/cg_map.c b/lib/cg_map.c
index 39f244dbc5bd..80d605d98663 100644
--- a/lib/cg_map.c
+++ b/lib/cg_map.c
@@ -9,18 +9,19 @@
  * Authors:	Dmitry Yakunin <zeil@...dex-team.ru>
  */
 
+#include "cg_map.h"
+
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <stdbool.h>
-#include <linux/types.h>
-#include <linux/limits.h>
 #include <ftw.h>
 
-#include "cg_map.h"
 #include "list.h"
 #include "utils.h"
 
+struct stat;
+
 struct cg_cache {
 	struct hlist_node id_hash;
 	__u64	id;
diff --git a/lib/color.c b/lib/color.c
index 59976847295c..930cd5a9a59f 100644
--- a/lib/color.c
+++ b/lib/color.c
@@ -5,10 +5,11 @@
 #include <string.h>
 #include <unistd.h>
 #include <sys/socket.h>
-#include <sys/types.h>
+#include <stdbool.h>
 #include <linux/if.h>
 
 #include "color.h"
+
 #include "utils.h"
 
 static void set_color_palette(void);
diff --git a/lib/inet_proto.c b/lib/inet_proto.c
index 41e2e8b88d82..fe1333ce80dc 100644
--- a/lib/inet_proto.c
+++ b/lib/inet_proto.c
@@ -12,12 +12,9 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
 #include <netdb.h>
 #include <string.h>
+#include <bsd/string.h>
 
 #include "rt_names.h"
 #include "utils.h"
diff --git a/lib/json_print.c b/lib/json_print.c
index e3a88375fe7c..51c443e0123d 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -9,11 +9,19 @@
  * Authors:    Julien Fortin, <julien@...ulusnetworks.com>
  */
 
-#include <stdarg.h>
+#include "json_print.h"
+
 #include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <sys/time.h>
 
 #include "utils.h"
-#include "json_print.h"
+#include "color.h"
+#include "json_writer.h"
+
+struct timeval;
 
 static json_writer_t *_jw;
 
diff --git a/lib/json_print_math.c b/lib/json_print_math.c
index f4d504995924..837b8dcd4a6f 100644
--- a/lib/json_print_math.c
+++ b/lib/json_print_math.c
@@ -1,11 +1,11 @@
 // SPDX-License-Identifier: GPL-2.0+
 
-#include <stdarg.h>
 #include <stdio.h>
 #include <math.h>
 
 #include "utils.h"
 #include "json_print.h"
+#include "color.h"
 
 char *sprint_size(__u32 sz, char *buf)
 {
diff --git a/lib/json_writer.c b/lib/json_writer.c
index 88c5eb888225..e2d410beb2dc 100644
--- a/lib/json_writer.c
+++ b/lib/json_writer.c
@@ -8,15 +8,15 @@
  * Authors:	Stephen Hemminger <stephen@...workplumber.org>
  */
 
+#include "json_writer.h"
+
 #include <stdio.h>
 #include <stdbool.h>
 #include <stdarg.h>
 #include <assert.h>
-#include <malloc.h>
 #include <inttypes.h>
 #include <stdint.h>
-
-#include "json_writer.h"
+#include <stdlib.h>
 
 struct json_writer {
 	FILE		*out;	/* output file */
diff --git a/lib/libgenl.c b/lib/libgenl.c
index fca07f9fe768..288ccefcc449 100644
--- a/lib/libgenl.c
+++ b/lib/libgenl.c
@@ -6,9 +6,14 @@
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
+#include <string.h>
 
 #include <linux/genetlink.h>
+
+#include "libnetlink.h"
+#include "linux/netlink.h"
+
+struct rtattr;
 #include "libgenl.h"
 
 static int genl_parse_getfamily(struct nlmsghdr *nlh)
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index 7e977a6762f8..22977e005303 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -14,21 +14,28 @@
 #include <stdlib.h>
 #include <stdbool.h>
 #include <unistd.h>
-#include <fcntl.h>
-#include <net/if_arp.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
 #include <string.h>
 #include <errno.h>
 #include <time.h>
-#include <sys/uio.h>
+#include <bits/types/struct_iovec.h>
+#include <bsd/sys/cdefs.h>
+#include <stdint.h>
+#include <sys/param.h>
 #include <linux/fib_rules.h>
 #include <linux/if_addrlabel.h>
 #include <linux/if_bridge.h>
 #include <linux/nexthop.h>
 
 #include "libnetlink.h"
+
 #include "utils.h"
+#include "linux/if_addr.h"
+#include "linux/if_link.h"
+#include "linux/neighbour.h"
+#include "linux/netconf.h"
+#include "linux/netlink.h"
+#include "linux/rtnetlink.h"
 
 #ifndef __aligned
 #define __aligned(x)		__attribute__((aligned(x)))
diff --git a/lib/ll_addr.c b/lib/ll_addr.c
index d6fd736b1e3a..9a5c45faf5dc 100644
--- a/lib/ll_addr.c
+++ b/lib/ll_addr.c
@@ -10,19 +10,10 @@
  */
 
 #include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
 #include <arpa/inet.h>
 #include <string.h>
-
-#include <linux/netdevice.h>
 #include <linux/if_arp.h>
-#include <linux/sockios.h>
-
 #include "rt_names.h"
 #include "utils.h"
 
diff --git a/lib/ll_map.c b/lib/ll_map.c
index 70ea3d499c8f..1ec94bdcd495 100644
--- a/lib/ll_map.c
+++ b/lib/ll_map.c
@@ -10,19 +10,21 @@
  *
  */
 
+#include "ll_map.h"
+
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
 #include <string.h>
 #include <net/if.h>
+#include <stdbool.h>
 
 #include "libnetlink.h"
-#include "ll_map.h"
 #include "list.h"
 #include "utils.h"
+#include "linux/if_link.h"
+#include "linux/netlink.h"
+#include "linux/rtnetlink.h"
 
 struct ll_cache {
 	struct hlist_node idx_hash;
diff --git a/lib/ll_proto.c b/lib/ll_proto.c
index 78179311c066..aa92fa939f9d 100644
--- a/lib/ll_proto.c
+++ b/lib/ll_proto.c
@@ -10,21 +10,12 @@
  */
 
 #include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
 #include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-
-#include <linux/netdevice.h>
-#include <linux/if_arp.h>
-#include <linux/sockios.h>
+#include <strings.h>
 
 #include "utils.h"
 #include "rt_names.h"
+#include "linux/if_ether.h"
 
 
 #define __PF(f,n) { ETH_P_##f, #n },
diff --git a/lib/ll_types.c b/lib/ll_types.c
index 49da15df911d..484956f91f7e 100644
--- a/lib/ll_types.c
+++ b/lib/ll_types.c
@@ -10,19 +10,7 @@
  */
 
 #include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-
-#include <linux/netdevice.h>
 #include <linux/if_arp.h>
-#include <linux/sockios.h>
-
 #include "rt_names.h"
 #include "utils.h"
 
diff --git a/lib/mnl_utils.c b/lib/mnl_utils.c
index d5abff58d816..2ee1045731c9 100644
--- a/lib/mnl_utils.c
+++ b/lib/mnl_utils.c
@@ -7,11 +7,18 @@
 #include <string.h>
 #include <time.h>
 #include <libmnl/libmnl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <linux/genetlink.h>
 
-#include "libnetlink.h"
 #include "mnl_utils.h"
+
+#include "libnetlink.h"
 #include "utils.h"
+#include "linux/netlink.h"
+
+struct mnl_socket;
 
 struct mnl_socket *mnlu_socket_open(int bus)
 {
diff --git a/lib/mpls_ntop.c b/lib/mpls_ntop.c
index f8d89f421ecb..f11358956946 100644
--- a/lib/mpls_ntop.c
+++ b/lib/mpls_ntop.c
@@ -2,8 +2,10 @@
 
 #include <errno.h>
 #include <string.h>
-#include <sys/types.h>
 #include <netinet/in.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/socket.h>
 #include <linux/mpls.h>
 
 #include "utils.h"
diff --git a/lib/mpls_pton.c b/lib/mpls_pton.c
index 065374eb11bf..715f49b96dce 100644
--- a/lib/mpls_pton.c
+++ b/lib/mpls_pton.c
@@ -2,8 +2,10 @@
 
 #include <errno.h>
 #include <string.h>
-#include <sys/types.h>
 #include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
 #include <linux/mpls.h>
 
 #include "utils.h"
diff --git a/lib/names.c b/lib/names.c
index b46ea7910946..3f086bb5eb0e 100644
--- a/lib/names.c
+++ b/lib/names.c
@@ -8,14 +8,13 @@
  *
  */
 
+#include "names.h"
+
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
 
-#include "names.h"
-#include "utils.h"
-
 #define MAX_ENTRIES  256
 #define NAME_MAX_LEN 512
 
diff --git a/lib/netrom_ntop.c b/lib/netrom_ntop.c
index 3dd6cb0b3d23..e3e9a2dbb6f6 100644
--- a/lib/netrom_ntop.c
+++ b/lib/netrom_ntop.c
@@ -2,6 +2,7 @@
 
 #include <sys/socket.h>
 #include <errno.h>
+#include <stddef.h>
 #include <linux/ax25.h>
 
 #include "utils.h"
diff --git a/lib/rose_ntop.c b/lib/rose_ntop.c
index c9ba712c515c..9676fa0844c0 100644
--- a/lib/rose_ntop.c
+++ b/lib/rose_ntop.c
@@ -1,22 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 
 #include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
 #include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
 #include <errno.h>
-
-#include <linux/netdevice.h>
-#include <linux/if_arp.h>
-#include <linux/sockios.h>
 #include <linux/rose.h>
 
-#include "rt_names.h"
 #include "utils.h"
 
 static const char *rose_ntop1(const rose_address *src, char *dst,
diff --git a/lib/rt_names.c b/lib/rt_names.c
index b976471d7979..a4ae0c7b7e96 100644
--- a/lib/rt_names.c
+++ b/lib/rt_names.c
@@ -11,19 +11,14 @@
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
-#include <fcntl.h>
 #include <string.h>
-#include <sys/time.h>
-#include <sys/socket.h>
 #include <dirent.h>
-#include <limits.h>
-
-#include <asm/types.h>
 #include <linux/rtnetlink.h>
 
+#include "linux/limits.h"
+#include "linux/netlink.h"
+
 #include "rt_names.h"
-#include "utils.h"
 
 #define NAME_MAX_LEN 512
 
diff --git a/lib/utils_math.c b/lib/utils_math.c
index 9ef3dd6ed93b..1c3780119649 100644
--- a/lib/utils_math.c
+++ b/lib/utils_math.c
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <math.h>
-#include <asm/types.h>
+#include <strings.h>
 
 #include "utils.h"
 
-- 
2.30.2

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ