summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-11-12 15:23:36 +0100
committerThomas Haller <thaller@redhat.com>2018-11-12 16:02:35 +0100
commit37e47fbdabd6439c022a5fc3b72176aa6c4e569f (patch)
tree1b28f12df5c5ea05360fa680293deea1480c16c4
parent45e54840dbc099b74078b92d47d78caa46f54f41 (diff)
downloadNetworkManager-37e47fbdabd6439c022a5fc3b72176aa6c4e569f.tar.gz
build: avoid header conflict for <linux/if.h> and <net/if.h> with "nm-platform.h"
In the past, the headers "linux/if.h" and "net/if.h" were incompatible. That means, we can either include one or the other, but not both. This is fixed in the meantime, however the issue still exists when building against older kernel/glibc. That means, including one of these headers from a header file is problematic. In particular if it's a header like "nm-platform.h", which itself is dragged in by many other headers. Avoid that by not including these headers from "platform.h", but instead from the source files where needed (or possibly from less popular header files). Currently there is no problem. However, this allows an unknowing user to include <net/if.h> at the same time with "nm-platform.h", which is easy to get wrong.
-rw-r--r--src/devices/nm-device-infiniband.c1
-rw-r--r--src/devices/nm-device-ip-tunnel.c1
-rw-r--r--src/devices/nm-device-macvlan.c1
-rw-r--r--src/devices/nm-device-wpan.c1
-rw-r--r--src/dhcp/nm-dhcp-dhclient-utils.c1
-rw-r--r--src/ndisc/nm-ndisc.h1
-rw-r--r--src/nm-test-utils-core.h4
-rw-r--r--src/platform/nm-fake-platform.c1
-rw-r--r--src/platform/nm-platform-utils.c1
-rw-r--r--src/platform/nm-platform.c1
-rw-r--r--src/platform/nm-platform.h20
-rw-r--r--src/platform/nmp-object.c1
-rw-r--r--src/platform/tests/test-common.h3
-rw-r--r--src/platform/wifi/nm-wifi-utils-nl80211.c1
-rw-r--r--src/platform/wpan/nm-wpan-utils.c2
-rw-r--r--src/tests/test-ip6-config.c1
16 files changed, 29 insertions, 12 deletions
diff --git a/src/devices/nm-device-infiniband.c b/src/devices/nm-device-infiniband.c
index afb5655580..01edf80749 100644
--- a/src/devices/nm-device-infiniband.c
+++ b/src/devices/nm-device-infiniband.c
@@ -22,6 +22,7 @@
#include "nm-device-infiniband.h"
+#include <linux/if.h>
#include <linux/if_infiniband.h>
#include "NetworkManagerUtils.h"
diff --git a/src/devices/nm-device-ip-tunnel.c b/src/devices/nm-device-ip-tunnel.c
index 568403c626..1c7e6d51e5 100644
--- a/src/devices/nm-device-ip-tunnel.c
+++ b/src/devices/nm-device-ip-tunnel.c
@@ -27,6 +27,7 @@
#include <linux/if.h>
#include <linux/ip.h>
#include <linux/if_tunnel.h>
+#include <linux/ip6_tunnel.h>
#include "nm-device-private.h"
#include "nm-manager.h"
diff --git a/src/devices/nm-device-macvlan.c b/src/devices/nm-device-macvlan.c
index ff386c82ed..2b21215451 100644
--- a/src/devices/nm-device-macvlan.c
+++ b/src/devices/nm-device-macvlan.c
@@ -23,6 +23,7 @@
#include "nm-device-macvlan.h"
#include <string.h>
+#include <linux/if_link.h>
#include "nm-device-private.h"
#include "settings/nm-settings.h"
diff --git a/src/devices/nm-device-wpan.c b/src/devices/nm-device-wpan.c
index 7aa70aa3cb..c2fa7f4e8d 100644
--- a/src/devices/nm-device-wpan.c
+++ b/src/devices/nm-device-wpan.c
@@ -25,6 +25,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
+#include <linux/if.h>
#include "nm-act-request.h"
#include "nm-device-private.h"
diff --git a/src/dhcp/nm-dhcp-dhclient-utils.c b/src/dhcp/nm-dhcp-dhclient-utils.c
index a2c3bfb65d..b442e2ef75 100644
--- a/src/dhcp/nm-dhcp-dhclient-utils.c
+++ b/src/dhcp/nm-dhcp-dhclient-utils.c
@@ -24,6 +24,7 @@
#include <string.h>
#include <ctype.h>
#include <arpa/inet.h>
+#include <net/if.h>
#include "nm-utils/nm-dedup-multi.h"
diff --git a/src/ndisc/nm-ndisc.h b/src/ndisc/nm-ndisc.h
index 73eef368ed..6c0c026442 100644
--- a/src/ndisc/nm-ndisc.h
+++ b/src/ndisc/nm-ndisc.h
@@ -23,6 +23,7 @@
#include <stdlib.h>
#include <netinet/in.h>
+#include <linux/if_addr.h>
#include "nm-setting-ip6-config.h"
#include "NetworkManagerUtils.h"
diff --git a/src/nm-test-utils-core.h b/src/nm-test-utils-core.h
index 5e89cb39f1..dbfe71ada3 100644
--- a/src/nm-test-utils-core.h
+++ b/src/nm-test-utils-core.h
@@ -88,8 +88,8 @@ nmtst_platform_ip4_address_full (const char *address, const char *peer_address,
{
NMPlatformIP4Address *addr = nmtst_platform_ip4_address (address, peer_address, plen);
- G_STATIC_ASSERT (IFNAMSIZ == sizeof (addr->label));
- g_assert (!label || strlen (label) < IFNAMSIZ);
+ G_STATIC_ASSERT (NMP_IFNAMSIZ == sizeof (addr->label));
+ g_assert (!label || strlen (label) < NMP_IFNAMSIZ);
addr->ifindex = ifindex;
addr->addr_source = source;
diff --git a/src/platform/nm-fake-platform.c b/src/platform/nm-fake-platform.c
index 460720ca83..1814eeb967 100644
--- a/src/platform/nm-fake-platform.c
+++ b/src/platform/nm-fake-platform.c
@@ -26,6 +26,7 @@
#include <unistd.h>
#include <netinet/icmp6.h>
#include <netinet/in.h>
+#include <linux/if.h>
#include <linux/rtnetlink.h>
#include "nm-utils.h"
diff --git a/src/platform/nm-platform-utils.c b/src/platform/nm-platform-utils.c
index 85d2b3247f..01651f466c 100644
--- a/src/platform/nm-platform-utils.c
+++ b/src/platform/nm-platform-utils.c
@@ -29,6 +29,7 @@
#include <linux/ethtool.h>
#include <linux/sockios.h>
#include <linux/mii.h>
+#include <linux/if.h>
#include <linux/version.h>
#include <linux/rtnetlink.h>
#include <fcntl.h>
diff --git a/src/platform/nm-platform.c b/src/platform/nm-platform.c
index 1667edaa25..494e2ddaf6 100644
--- a/src/platform/nm-platform.c
+++ b/src/platform/nm-platform.c
@@ -31,6 +31,7 @@
#include <netdb.h>
#include <string.h>
#include <linux/ip.h>
+#include <linux/if.h>
#include <linux/if_tun.h>
#include <linux/if_tunnel.h>
#include <linux/rtnetlink.h>
diff --git a/src/platform/nm-platform.h b/src/platform/nm-platform.h
index 00dd02e9a6..2a18d8adf2 100644
--- a/src/platform/nm-platform.h
+++ b/src/platform/nm-platform.h
@@ -21,12 +21,6 @@
#ifndef __NETWORKMANAGER_PLATFORM_H__
#define __NETWORKMANAGER_PLATFORM_H__
-#include <netinet/in.h>
-#include <linux/if.h>
-#include <linux/if_addr.h>
-#include <linux/if_link.h>
-#include <linux/ip6_tunnel.h>
-
#include "nm-dbus-interface.h"
#include "nm-core-types-internal.h"
@@ -53,6 +47,12 @@
/*****************************************************************************/
+/* IFNAMSIZ is both defined in <linux/if.h> and <net/if.h>. In the past, these
+ * headers conflicted, so we cannot simply include either of them in a header-file.*/
+#define NMP_IFNAMSIZ 16
+
+/*****************************************************************************/
+
struct udev_device;
typedef gboolean (*NMPObjectPredicateFunc) (const NMPObject *obj,
@@ -208,7 +208,7 @@ typedef enum {
struct _NMPlatformLink {
__NMPlatformObject_COMMON;
- char name[IFNAMSIZ];
+ char name[NMP_IFNAMSIZ];
NMLinkType type;
/* rtnl_link_get_type(), IFLA_INFO_KIND. */
@@ -355,7 +355,7 @@ struct _NMPlatformIP4Address {
* */
in_addr_t peer_address; /* PTP peer address */
- char label[IFNAMSIZ];
+ char label[NMP_IFNAMSIZ];
};
/**
@@ -1106,12 +1106,12 @@ const char *nm_platform_error_to_string (NMPlatformError error,
((const char *) NULL), -1, (path)
#define NMP_SYSCTL_PATHID_NETDIR_unsafe(dirfd, ifname, path) \
- nm_sprintf_bufa (NM_STRLEN ("net:/sys/class/net//\0") + IFNAMSIZ + strlen (path), \
+ nm_sprintf_bufa (NM_STRLEN ("net:/sys/class/net//\0") + NMP_IFNAMSIZ + strlen (path), \
"net:/sys/class/net/%s/%s", (ifname), (path)), \
(dirfd), (path)
#define NMP_SYSCTL_PATHID_NETDIR(dirfd, ifname, path) \
- nm_sprintf_bufa (NM_STRLEN ("net:/sys/class/net//"path"/\0") + IFNAMSIZ, \
+ nm_sprintf_bufa (NM_STRLEN ("net:/sys/class/net//"path"/\0") + NMP_IFNAMSIZ, \
"net:/sys/class/net/%s/%s", (ifname), path), \
(dirfd), (""path"")
diff --git a/src/platform/nmp-object.c b/src/platform/nmp-object.c
index 66fc69358d..5e1ebb56e2 100644
--- a/src/platform/nmp-object.c
+++ b/src/platform/nmp-object.c
@@ -24,6 +24,7 @@
#include <unistd.h>
#include <linux/rtnetlink.h>
+#include <linux/if.h>
#include <libudev.h>
#include "nm-utils.h"
diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h
index 1baadfa116..7e81baeac0 100644
--- a/src/platform/tests/test-common.h
+++ b/src/platform/tests/test-common.h
@@ -21,6 +21,9 @@
#include <syslog.h>
#include <string.h>
#include <arpa/inet.h>
+#include <linux/if.h>
+#include <linux/if_link.h>
+#include <linux/ip6_tunnel.h>
#include "platform/nm-platform.h"
#include "platform/nmp-object.h"
diff --git a/src/platform/wifi/nm-wifi-utils-nl80211.c b/src/platform/wifi/nm-wifi-utils-nl80211.c
index ca00bf9d56..c8ff0b4bf4 100644
--- a/src/platform/wifi/nm-wifi-utils-nl80211.c
+++ b/src/platform/wifi/nm-wifi-utils-nl80211.c
@@ -30,6 +30,7 @@
#include <net/ethernet.h>
#include <unistd.h>
#include <linux/nl80211.h>
+#include <linux/if.h>
#include "platform/nm-netlink.h"
#include "nm-wifi-utils-private.h"
diff --git a/src/platform/wpan/nm-wpan-utils.c b/src/platform/wpan/nm-wpan-utils.c
index 53bd677d23..478a8f0b01 100644
--- a/src/platform/wpan/nm-wpan-utils.c
+++ b/src/platform/wpan/nm-wpan-utils.c
@@ -21,6 +21,8 @@
#include "nm-wpan-utils.h"
+#include <linux/if.h>
+
#include "platform/linux/nl802154.h"
#include "platform/nm-netlink.h"
#include "platform/nm-platform-utils.h"
diff --git a/src/tests/test-ip6-config.c b/src/tests/test-ip6-config.c
index 3069944837..51807dea6b 100644
--- a/src/tests/test-ip6-config.c
+++ b/src/tests/test-ip6-config.c
@@ -22,6 +22,7 @@
#include <string.h>
#include <arpa/inet.h>
+#include <linux/if_addr.h>
#include "nm-ip6-config.h"