From 80df8f2518aa07ef3c328e1c634573347e130cf0 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 21 Oct 2018 18:35:46 +0900 Subject: [PATCH] missing: support old linux/fou.h linux/fou.h was introduced in 3.18. FOU_ATTR_REMCSUM_NOPARTIAL was added in 4.0. FOU_CMD_GET was added in 4.1. Follow-up for 53cb501a1314740fa777f145067cefccda954487. Fixes #10474. --- meson.build | 2 +- src/basic/missing.h | 46 +++++++++++++---------- src/libsystemd/sd-netlink/netlink-types.c | 2 +- src/network/netdev/fou-tunnel.h | 3 +- src/network/netdev/tunnel.c | 6 +-- 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/meson.build b/meson.build index 7960e97893..3b01021562 100644 --- a/meson.build +++ b/meson.build @@ -476,7 +476,6 @@ foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'], ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'], ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'], ['FOU_CMD_GET', 'linux/fou.h'], - ['FOU_ENCAP_GUE', 'linux/fou.h'], ] prefix = decl.length() > 2 ? decl[2] : '' have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix) @@ -608,6 +607,7 @@ if not cc.has_header('sys/capability.h') endif foreach header : ['crypt.h', 'linux/btrfs.h', + 'linux/fou.h', 'linux/memfd.h', 'linux/vm_sockets.h', 'sys/auxv.h', diff --git a/src/basic/missing.h b/src/basic/missing.h index e666e2ba2d..648a2b92d9 100644 --- a/src/basic/missing.h +++ b/src/basic/missing.h @@ -1417,33 +1417,39 @@ struct statx { #define FOU_GENL_VERSION 0x1 #endif +#if !HAVE_LINUX_FOU_H +#define FOU_ATTR_UNSPEC 0 +#define FOU_ATTR_PORT 1 +#define FOU_ATTR_AF 2 +#define FOU_ATTR_IPPROTO 3 +#define FOU_ATTR_TYPE 4 +#endif #if !HAVE_FOU_ATTR_REMCSUM_NOPARTIAL -#define FOU_ATTR_UNSPEC 0 -#define FOU_ATTR_PORT 1 -#define FOU_ATTR_AF 2 -#define FOU_ATTR_IPPROTO 3 -#define FOU_ATTR_TYPE 4 #define FOU_ATTR_REMCSUM_NOPARTIAL 5 -#define __FOU_ATTR_MAX 6 - -#define FOU_ATTR_MAX (__FOU_ATTR_MAX - 1) +#undef FOU_ATTR_MAX +#endif +#ifndef FOU_ATTR_MAX +#define FOU_ATTR_MAX 5 #endif +#if !HAVE_LINUX_FOU_H +#define FOU_CMD_UNSPEC 0 +#define FOU_CMD_ADD 1 +#define FOU_CMD_DEL 2 +#endif #if !HAVE_FOU_CMD_GET -#define FOU_CMD_UNSPEC 0 -#define FOU_CMD_ADD 1 -#define FOU_CMD_DEL 2 -#define FOU_CMD_GET 3 -#define __FOU_CMD_MAX 4 - -#define FOU_CMD_MAX (__FOU_CMD_MAX - 1) +#define FOU_CMD_GET 3 +#undef FOU_CMD_MAX +#endif +#ifndef FOU_CMD_MAX +#define FOU_CMD_MAX 3 #endif -#if !HAVE_FOU_ENCAP_GUE -#define FOU_ENCAP_UNSPEC 0 -#define FOU_ENCAP_DIRECT 1 -#define FOU_ENCAP_GUE 2 -#define __FOU_ENCAP_MAX 3 +#if !HAVE_LINUX_FOU_H +#define FOU_ENCAP_UNSPEC 0 +#define FOU_ENCAP_DIRECT 1 +#define FOU_ENCAP_GUE 2 +#define __FOU_ENCAP_MAX 3 #define FOU_ENCAP_MAX (__FOU_ENCAP_MAX - 1) #endif diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index 1e5b6a9dbb..3365906813 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -17,7 +17,7 @@ #include #include -#if HAVE_FOU_CMD_GET +#if HAVE_LINUX_FOU_H #include #endif diff --git a/src/network/netdev/fou-tunnel.h b/src/network/netdev/fou-tunnel.h index 58bcab3164..28111fd157 100644 --- a/src/network/netdev/fou-tunnel.h +++ b/src/network/netdev/fou-tunnel.h @@ -1,11 +1,12 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ #pragma once -#if HAVE_FOU_CMD_GET +#if HAVE_LINUX_FOU_H #include #endif #include "in-addr-util.h" +#include "missing.h" #include "netdev/netdev.h" typedef enum FooOverUDPEncapType { diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c index e39dff7b90..826c7088fe 100644 --- a/src/network/netdev/tunnel.c +++ b/src/network/netdev/tunnel.c @@ -6,12 +6,12 @@ #include #include -#include "sd-netlink.h" - -#if HAVE_FOU_CMD_GET +#if HAVE_LINUX_FOU_H #include #endif +#include "sd-netlink.h" + #include "conf-parser.h" #include "missing.h" #include "networkd-link.h"