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/cg_map.c b/lib/cg_map.c
index 39f244dbc5bd..b60707910d0f 100644
--- a/lib/cg_map.c
+++ b/lib/cg_map.c
@@ -13,14 +13,13 @@
 #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"
 
+#include "cg_map.h"
+
 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/exec.c b/lib/exec.c
index 9b1c8f4a1396..c4588869b820 100644
--- a/lib/exec.c
+++ b/lib/exec.c
@@ -3,9 +3,11 @@
 #include <stdio.h>
 #include <errno.h>
 #include <unistd.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <string.h>
 
 #include "utils.h"
-#include "namespace.h"
 
 int cmd_exec(const char *cmd, char **argv, bool do_fork,
 	     int (*setup)(void *), void *arg)
diff --git a/lib/fs.c b/lib/fs.c
index f6f5f8a0b3bb..fdc2e718583b 100644
--- a/lib/fs.c
+++ b/lib/fs.c
@@ -10,19 +10,19 @@
  *
  */
 
-#include <sys/types.h>
 #include <sys/stat.h>
-#include <sys/socket.h>
 #include <sys/mount.h>
 #include <ctype.h>
 #include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
 #include <unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <limits.h>
 
+
 #include "utils.h"
 
 #ifndef HAVE_HANDLE_AT
diff --git a/lib/inet_proto.c b/lib/inet_proto.c
index 41e2e8b88d82..2422e1c58bfe 100644
--- a/lib/inet_proto.c
+++ b/lib/inet_proto.c
@@ -12,10 +12,6 @@
 
 #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>
 
diff --git a/lib/json_print.c b/lib/json_print.c
index e3a88375fe7c..6d1847c7491f 100644
--- a/lib/json_print.c
+++ b/lib/json_print.c
@@ -9,10 +9,16 @@
  * Authors:    Julien Fortin, <julien@cumulusnetworks.com>
  */
 
-#include <stdarg.h>
+
 #include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <sys/time.h>
 
 #include "utils.h"
+#include "color.h"
+#include "json_writer.h"
 #include "json_print.h"
 
 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..973a85c1a730 100644
--- a/lib/json_writer.c
+++ b/lib/json_writer.c
@@ -12,9 +12,9 @@
 #include <stdbool.h>
 #include <stdarg.h>
 #include <assert.h>
-#include <malloc.h>
 #include <inttypes.h>
 #include <stdint.h>
+#include <stdlib.h>
 
 #include "json_writer.h"
 
diff --git a/lib/libgenl.c b/lib/libgenl.c
index fca07f9fe768..ca15445b1850 100644
--- a/lib/libgenl.c
+++ b/lib/libgenl.c
@@ -6,9 +6,13 @@
 #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"
+
 #include "libgenl.h"
 
 static int genl_parse_getfamily(struct nlmsghdr *nlh)
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
index 7e977a6762f8..6b92bd82169d 100644
--- a/lib/libnetlink.c
+++ b/lib/libnetlink.c
@@ -14,20 +14,20 @@
 #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 <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"
 
 #ifndef __aligned
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..692299861498 100644
--- a/lib/ll_map.c
+++ b/lib/ll_map.c
@@ -12,17 +12,19 @@
 
 #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"
+
+#include "ll_map.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..fe5157350a16 100644
--- a/lib/mnl_utils.c
+++ b/lib/mnl_utils.c
@@ -7,11 +7,15 @@
 #include <string.h>
 #include <time.h>
 #include <libmnl/libmnl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <linux/genetlink.h>
+#include <linux/netlink.h>
 
-#include "libnetlink.h"
-#include "mnl_utils.h"
 #include "utils.h"
+#include "mnl_utils.h"
+
 
 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..c6add57dd123 100644
--- a/lib/names.c
+++ b/lib/names.c
@@ -14,7 +14,6 @@
 #include <errno.h>
 
 #include "names.h"
-#include "utils.h"
 
 #define MAX_ENTRIES  256
 #define NAME_MAX_LEN 512
diff --git a/lib/namespace.c b/lib/namespace.c
index 45a7deddb6c4..c32305d6c29e 100644
--- a/lib/namespace.c
+++ b/lib/namespace.c
@@ -11,8 +11,13 @@
 #include <fcntl.h>
 #include <dirent.h>
 #include <limits.h>
+#include <errno.h>
+#include <sched.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/mount.h>
+#include <unistd.h>
 
-#include "utils.h"
 #include "namespace.h"
 
 static void bind_etc(const char *name)
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..3845bdddd311 100644
--- a/lib/rt_names.c
+++ b/lib/rt_names.c
@@ -11,19 +11,13 @@
 
 #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 "rt_names.h"
-#include "utils.h"
 
 #define NAME_MAX_LEN 512
 
diff --git a/lib/utils.c b/lib/utils.c
index 53d310060284..f213b050ab8b 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -12,9 +12,10 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <stdbool.h>
+#include <stdint.h>
 #include <math.h>
 #include <unistd.h>
-#include <fcntl.h>
 #include <limits.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -22,9 +23,9 @@
 #include <ctype.h>
 #include <netdb.h>
 #include <arpa/inet.h>
-#include <asm/types.h>
-#include <linux/pkt_sched.h>
-#include <linux/param.h>
+#include <asm/param.h>
+#include <linux/capability.h>
+#include <strings.h>
 #include <linux/if_arp.h>
 #include <linux/mpls.h>
 #include <linux/snmp.h>
@@ -36,9 +37,9 @@
 #endif
 
 #include "rt_names.h"
+#include "color.h"
+
 #include "utils.h"
-#include "ll_map.h"
-#include "namespace.h"
 
 int resolve_hosts;
 int timestamp_short;
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"
 
