252 lines
7.5 KiB
Diff
252 lines
7.5 KiB
Diff
From 2e7e0201564db608dffc1d9ac24c0691ea14fd2e Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Date: Fri, 20 Jun 2014 19:45:45 -0400
|
|
Subject: [PATCH] missing.h: add various network enums
|
|
|
|
We used to check if e.g. IFLA_BOND_MAX is defined and provide fallback
|
|
values in missing.h is it wasn't. But over time, various kernel
|
|
versions added IFLA_* defines, so checking for IFLA_BOND_MAX is not
|
|
enough if the kernel is new enough to have some of them but too old to
|
|
have all. In case we detect that the latest known enum value is
|
|
missing, #define most of them.
|
|
|
|
https://bugs.freedesktop.org/show_bug.cgi?id=80095
|
|
(cherry picked from commit 81577dc22887debaf9b19bf1034a2887fb9069c7)
|
|
|
|
Conflicts:
|
|
src/network/networkd-vxlan.c
|
|
---
|
|
configure.ac | 29 +++++++--
|
|
src/network/networkd-tunnel.c | 1 +
|
|
src/shared/missing.h | 145 ++++++++++++++++++++++++++++++------------
|
|
3 files changed, 130 insertions(+), 45 deletions(-)
|
|
|
|
diff --git a/configure.ac b/configure.ac
|
|
index faf7f722..b755f489 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -266,12 +266,33 @@ LIBS="$save_LIBS"
|
|
|
|
AC_CHECK_FUNCS([fanotify_init fanotify_mark])
|
|
AC_CHECK_FUNCS([__secure_getenv secure_getenv])
|
|
-AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, setns, LO_FLAGS_PARTSCAN], [], [], [[#include <sys/types.h>
|
|
+AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, setns, LO_FLAGS_PARTSCAN],
|
|
+ [], [], [[
|
|
+#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <sys/mount.h>
|
|
#include <fcntl.h>
|
|
#include <sched.h>
|
|
-#include <linux/loop.h>]])
|
|
+#include <linux/loop.h>
|
|
+]])
|
|
+
|
|
+AC_CHECK_DECLS([IFLA_PHYS_PORT_ID,
|
|
+ IFLA_BOND_AD_INFO,
|
|
+ IFLA_VLAN_PROTOCOL,
|
|
+ IFLA_VXLAN_LOCAL6,
|
|
+ IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
|
|
+ IFLA_BRIDGE_VLAN_INFO],
|
|
+[], [], [[
|
|
+#include <inttypes.h>
|
|
+#include <netinet/in.h>
|
|
+#include <netinet/ether.h>
|
|
+#include <linux/rtnetlink.h>
|
|
+#include <net/if.h>
|
|
+#include <linux/ip.h>
|
|
+#include <linux/if_tunnel.h>
|
|
+#include <linux/if_link.h>
|
|
+#include <linux/if_bridge.h>
|
|
+]])
|
|
|
|
# This makes sure pkg.m4 is available.
|
|
m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
|
|
@@ -870,10 +891,10 @@ AC_SUBST(DNS_SERVERS)
|
|
# ------------------------------------------------------------------------------
|
|
have_networkd=no
|
|
AC_ARG_ENABLE(networkd, AS_HELP_STRING([--disable-networkd], [disable networkd]))
|
|
-if test "x$enable_networkd" != "xno"; then
|
|
+AS_IF([test "x$enable_networkd" != "xno"], [
|
|
AC_DEFINE(ENABLE_NETWORKD, 1, [Define if networkd support is to be enabled])
|
|
have_networkd=yes
|
|
-fi
|
|
+])
|
|
AM_CONDITIONAL(ENABLE_NETWORKD, [test "x$have_networkd" = "xyes"])
|
|
|
|
# ------------------------------------------------------------------------------
|
|
diff --git a/src/network/networkd-tunnel.c b/src/network/networkd-tunnel.c
|
|
index 60b16ba8..604d9240 100644
|
|
--- a/src/network/networkd-tunnel.c
|
|
+++ b/src/network/networkd-tunnel.c
|
|
@@ -29,6 +29,7 @@
|
|
#include "networkd.h"
|
|
#include "network-internal.h"
|
|
#include "util.h"
|
|
+#include "missing.h"
|
|
|
|
|
|
static int netdev_fill_ipip_rtnl_message(Link *link, sd_rtnl_message *m) {
|
|
diff --git a/src/shared/missing.h b/src/shared/missing.h
|
|
index 716d3b8f..f129f0b2 100644
|
|
--- a/src/shared/missing.h
|
|
+++ b/src/shared/missing.h
|
|
@@ -92,19 +92,6 @@
|
|
#define IP_TRANSPARENT 19
|
|
#endif
|
|
|
|
-#ifndef IFLA_CARRIER
|
|
- #define IFLA_CARRIER 33
|
|
- #ifndef IFLA_NUM_RX_QUEUES
|
|
- #define IFLA_NUM_RX_QUEUES 32
|
|
- #ifndef IFLA_NUM_TX_QUEUES
|
|
- #define IFLA_NUM_TX_QUEUES 31
|
|
- #ifndef IFLA_PROMISCUITY
|
|
- #define IFLA_PROMISCUITY 30
|
|
- #endif
|
|
- #endif
|
|
- #endif
|
|
-#endif
|
|
-
|
|
#ifndef SOL_NETLINK
|
|
#define SOL_NETLINK 270
|
|
#endif
|
|
@@ -384,34 +371,110 @@ static inline int setns(int fd, int nstype) {
|
|
#define LOOP_CTL_GET_FREE 0x4C82
|
|
#endif
|
|
|
|
-#ifndef IFLA_BOND_MAX
|
|
-enum {
|
|
- IFLA_BOND_UNSPEC,
|
|
- IFLA_BOND_MODE,
|
|
- IFLA_BOND_ACTIVE_SLAVE,
|
|
- IFLA_BOND_MIIMON,
|
|
- IFLA_BOND_UPDELAY,
|
|
- IFLA_BOND_DOWNDELAY,
|
|
- IFLA_BOND_USE_CARRIER,
|
|
- IFLA_BOND_ARP_INTERVAL,
|
|
- IFLA_BOND_ARP_IP_TARGET,
|
|
- IFLA_BOND_ARP_VALIDATE,
|
|
- IFLA_BOND_ARP_ALL_TARGETS,
|
|
- IFLA_BOND_PRIMARY,
|
|
- IFLA_BOND_PRIMARY_RESELECT,
|
|
- IFLA_BOND_FAIL_OVER_MAC,
|
|
- IFLA_BOND_XMIT_HASH_POLICY,
|
|
- IFLA_BOND_RESEND_IGMP,
|
|
- IFLA_BOND_NUM_PEER_NOTIF,
|
|
- IFLA_BOND_ALL_SLAVES_ACTIVE,
|
|
- IFLA_BOND_MIN_LINKS,
|
|
- IFLA_BOND_LP_INTERVAL,
|
|
- IFLA_BOND_PACKETS_PER_SLAVE,
|
|
- IFLA_BOND_AD_LACP_RATE,
|
|
- IFLA_BOND_AD_SELECT,
|
|
- IFLA_BOND_AD_INFO,
|
|
- __IFLA_BOND_MAX,
|
|
-};
|
|
+#if !HAVE_DECL_IFLA_PHYS_PORT_ID
|
|
+#undef IFLA_PROMISCUITY
|
|
+#define IFLA_PROMISCUITY 30
|
|
+#define IFLA_NUM_TX_QUEUES 31
|
|
+#define IFLA_NUM_RX_QUEUES 32
|
|
+#define IFLA_CARRIER 33
|
|
+#define IFLA_PHYS_PORT_ID 34
|
|
+#define __IFLA_MAX 35
|
|
+
|
|
+#define IFLA_MAX (__IFLA_MAX - 1)
|
|
+#endif
|
|
+
|
|
+#if !HAVE_DECL_IFLA_BOND_AD_INFO
|
|
+#define IFLA_BOND_UNSPEC 0
|
|
+#define IFLA_BOND_MODE 1
|
|
+#define IFLA_BOND_ACTIVE_SLAVE 2
|
|
+#define IFLA_BOND_MIIMON 3
|
|
+#define IFLA_BOND_UPDELAY 4
|
|
+#define IFLA_BOND_DOWNDELAY 5
|
|
+#define IFLA_BOND_USE_CARRIER 6
|
|
+#define IFLA_BOND_ARP_INTERVAL 7
|
|
+#define IFLA_BOND_ARP_IP_TARGET 8
|
|
+#define IFLA_BOND_ARP_VALIDATE 9
|
|
+#define IFLA_BOND_ARP_ALL_TARGETS 10
|
|
+#define IFLA_BOND_PRIMARY 11
|
|
+#define IFLA_BOND_PRIMARY_RESELECT 12
|
|
+#define IFLA_BOND_FAIL_OVER_MAC 13
|
|
+#define IFLA_BOND_XMIT_HASH_POLICY 14
|
|
+#define IFLA_BOND_RESEND_IGMP 15
|
|
+#define IFLA_BOND_NUM_PEER_NOTIF 16
|
|
+#define IFLA_BOND_ALL_SLAVES_ACTIVE 17
|
|
+#define IFLA_BOND_MIN_LINKS 18
|
|
+#define IFLA_BOND_LP_INTERVAL 19
|
|
+#define IFLA_BOND_PACKETS_PER_SLAVE 20
|
|
+#define IFLA_BOND_AD_LACP_RATE 21
|
|
+#define IFLA_BOND_AD_SELECT 22
|
|
+#define IFLA_BOND_AD_INFO 23
|
|
+#define __IFLA_BOND_MAX 24
|
|
|
|
#define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1)
|
|
#endif
|
|
+
|
|
+#if !HAVE_DECL_IFLA_VLAN_PROTOCOL
|
|
+#define IFLA_VLAN_UNSPEC 0
|
|
+#define IFLA_VLAN_ID 1
|
|
+#define IFLA_VLAN_FLAGS 2
|
|
+#define IFLA_VLAN_EGRESS_QOS 3
|
|
+#define IFLA_VLAN_INGRESS_QOS 4
|
|
+#define IFLA_VLAN_PROTOCOL 5
|
|
+#define __IFLA_VLAN_MAX 6
|
|
+
|
|
+#define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
|
|
+#endif
|
|
+
|
|
+#if !HAVE_DECL_IFLA_VXLAN_LOCAL6
|
|
+#define IFLA_VXLAN_UNSPEC 0
|
|
+#define IFLA_VXLAN_ID 1
|
|
+#define IFLA_VXLAN_GROUP 2
|
|
+#define IFLA_VXLAN_LINK 3
|
|
+#define IFLA_VXLAN_LOCAL 4
|
|
+#define IFLA_VXLAN_TTL 5
|
|
+#define IFLA_VXLAN_TOS 6
|
|
+#define IFLA_VXLAN_LEARNING 7
|
|
+#define IFLA_VXLAN_AGEING 8
|
|
+#define IFLA_VXLAN_LIMIT 9
|
|
+#define IFLA_VXLAN_PORT_RANGE 10
|
|
+#define IFLA_VXLAN_PROXY 11
|
|
+#define IFLA_VXLAN_RSC 12
|
|
+#define IFLA_VXLAN_L2MISS 13
|
|
+#define IFLA_VXLAN_L3MISS 14
|
|
+#define IFLA_VXLAN_PORT 15
|
|
+#define IFLA_VXLAN_GROUP6 16
|
|
+#define IFLA_VXLAN_LOCAL6 17
|
|
+#define __IFLA_VXLAN_MAX 18
|
|
+
|
|
+#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
|
|
+#endif
|
|
+
|
|
+#if !HAVE_DECL_IFLA_IPTUN_6RD_RELAY_PREFIXLEN
|
|
+#define IFLA_IPTUN_UNSPEC 0
|
|
+#define IFLA_IPTUN_LINK 1
|
|
+#define IFLA_IPTUN_LOCAL 2
|
|
+#define IFLA_IPTUN_REMOTE 3
|
|
+#define IFLA_IPTUN_TTL 4
|
|
+#define IFLA_IPTUN_TOS 5
|
|
+#define IFLA_IPTUN_ENCAP_LIMIT 6
|
|
+#define IFLA_IPTUN_FLOWINFO 7
|
|
+#define IFLA_IPTUN_FLAGS 8
|
|
+#define IFLA_IPTUN_PROTO 9
|
|
+#define IFLA_IPTUN_PMTUDISC 10
|
|
+#define IFLA_IPTUN_6RD_PREFIX 11
|
|
+#define IFLA_IPTUN_6RD_RELAY_PREFIX 12
|
|
+#define IFLA_IPTUN_6RD_PREFIXLEN 13
|
|
+#define IFLA_IPTUN_6RD_RELAY_PREFIXLEN 14
|
|
+#define __IFLA_IPTUN_MAX 15
|
|
+
|
|
+#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
|
|
+#endif
|
|
+
|
|
+#if !HAVE_DECL_IFLA_BRIDGE_VLAN_INFO
|
|
+#define IFLA_BRIDGE_FLAGS 0
|
|
+#define IFLA_BRIDGE_MODE 1
|
|
+#define IFLA_BRIDGE_VLAN_INFO 2
|
|
+#define __IFLA_BRIDGE_MAX 3
|
|
+
|
|
+#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
|
|
+#endif
|