[RFC v3 02/32] build-sys: add HAVE_IPPROTO_MPTCP

marcandre.lureau@redhat.com posted 32 patches 4 years ago
[RFC v3 02/32] build-sys: add HAVE_IPPROTO_MPTCP
Posted by marcandre.lureau@redhat.com 4 years ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

The QAPI schema shouldn't rely on C system headers #define, but on
configure-time project #define, so we can express the build condition in
a C-independent way.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 meson.build         | 2 ++
 qapi/sockets.json   | 2 +-
 io/dns-resolver.c   | 2 +-
 util/qemu-sockets.c | 6 +++---
 4 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/meson.build b/meson.build
index 9e43c9b311..6e871af4d0 100644
--- a/meson.build
+++ b/meson.build
@@ -1367,6 +1367,8 @@ config_host_data.set('HAVE_OPTRESET',
                      cc.has_header_symbol('getopt.h', 'optreset'))
 config_host_data.set('HAVE_UTMPX',
                      cc.has_header_symbol('utmpx.h', 'struct utmpx'))
+config_host_data.set('HAVE_IPPROTO_MPTCP',
+                     cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP'))
 
 # has_member
 config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID',
diff --git a/qapi/sockets.json b/qapi/sockets.json
index 7866dc27d6..c9101f937f 100644
--- a/qapi/sockets.json
+++ b/qapi/sockets.json
@@ -69,7 +69,7 @@
     '*ipv4': 'bool',
     '*ipv6': 'bool',
     '*keep-alive': 'bool',
-    '*mptcp': { 'type': 'bool', 'if': 'IPPROTO_MPTCP' } } }
+    '*mptcp': { 'type': 'bool', 'if': 'HAVE_IPPROTO_MPTCP' } } }
 
 ##
 # @UnixSocketAddress:
diff --git a/io/dns-resolver.c b/io/dns-resolver.c
index a5946a93bf..53b0e8407a 100644
--- a/io/dns-resolver.c
+++ b/io/dns-resolver.c
@@ -122,7 +122,7 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver,
             .ipv4 = iaddr->ipv4,
             .has_ipv6 = iaddr->has_ipv6,
             .ipv6 = iaddr->ipv6,
-#ifdef IPPROTO_MPTCP
+#ifdef HAVE_IPPROTO_MPTCP
             .has_mptcp = iaddr->has_mptcp,
             .mptcp = iaddr->mptcp,
 #endif
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index f2f3676d1f..02eb2f3d34 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -278,7 +278,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr,
 
     /* create socket + bind/listen */
     for (e = res; e != NULL; e = e->ai_next) {
-#ifdef IPPROTO_MPTCP
+#ifdef HAVE_IPPROTO_MPTCP
         if (saddr->has_mptcp && saddr->mptcp) {
             e->ai_protocol = IPPROTO_MPTCP;
         }
@@ -462,7 +462,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp)
         error_free(local_err);
         local_err = NULL;
 
-#ifdef IPPROTO_MPTCP
+#ifdef HAVE_IPPROTO_MPTCP
         if (saddr->has_mptcp && saddr->mptcp) {
             e->ai_protocol = IPPROTO_MPTCP;
         }
@@ -699,7 +699,7 @@ int inet_parse(InetSocketAddress *addr, const char *str, Error **errp)
         }
         addr->has_keep_alive = true;
     }
-#ifdef IPPROTO_MPTCP
+#ifdef HAVE_IPPROTO_MPTCP
     begin = strstr(optstr, ",mptcp");
     if (begin) {
         if (inet_parse_flag("mptcp", begin + strlen(",mptcp"),
-- 
2.33.0.113.g6c40894d24


Re: [RFC v3 02/32] build-sys: add HAVE_IPPROTO_MPTCP
Posted by Paolo Bonzini 3 years, 12 months ago
On 07/09/21 14:19, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The QAPI schema shouldn't rely on C system headers #define, but on
> configure-time project #define, so we can express the build condition in
> a C-independent way.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   meson.build         | 2 ++
>   qapi/sockets.json   | 2 +-
>   io/dns-resolver.c   | 2 +-
>   util/qemu-sockets.c | 6 +++---
>   4 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index 9e43c9b311..6e871af4d0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1367,6 +1367,8 @@ config_host_data.set('HAVE_OPTRESET',
>                        cc.has_header_symbol('getopt.h', 'optreset'))
>   config_host_data.set('HAVE_UTMPX',
>                        cc.has_header_symbol('utmpx.h', 'struct utmpx'))
> +config_host_data.set('HAVE_IPPROTO_MPTCP',
> +                     cc.has_header_symbol('netinet/in.h', 'IPPROTO_MPTCP'))
>   
>   # has_member
>   config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID',
> diff --git a/qapi/sockets.json b/qapi/sockets.json
> index 7866dc27d6..c9101f937f 100644
> --- a/qapi/sockets.json
> +++ b/qapi/sockets.json
> @@ -69,7 +69,7 @@
>       '*ipv4': 'bool',
>       '*ipv6': 'bool',
>       '*keep-alive': 'bool',
> -    '*mptcp': { 'type': 'bool', 'if': 'IPPROTO_MPTCP' } } }
> +    '*mptcp': { 'type': 'bool', 'if': 'HAVE_IPPROTO_MPTCP' } } }
>   
>   ##
>   # @UnixSocketAddress:
> diff --git a/io/dns-resolver.c b/io/dns-resolver.c
> index a5946a93bf..53b0e8407a 100644
> --- a/io/dns-resolver.c
> +++ b/io/dns-resolver.c
> @@ -122,7 +122,7 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver,
>               .ipv4 = iaddr->ipv4,
>               .has_ipv6 = iaddr->has_ipv6,
>               .ipv6 = iaddr->ipv6,
> -#ifdef IPPROTO_MPTCP
> +#ifdef HAVE_IPPROTO_MPTCP
>               .has_mptcp = iaddr->has_mptcp,
>               .mptcp = iaddr->mptcp,
>   #endif
> diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
> index f2f3676d1f..02eb2f3d34 100644
> --- a/util/qemu-sockets.c
> +++ b/util/qemu-sockets.c
> @@ -278,7 +278,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr,
>   
>       /* create socket + bind/listen */
>       for (e = res; e != NULL; e = e->ai_next) {
> -#ifdef IPPROTO_MPTCP
> +#ifdef HAVE_IPPROTO_MPTCP
>           if (saddr->has_mptcp && saddr->mptcp) {
>               e->ai_protocol = IPPROTO_MPTCP;
>           }
> @@ -462,7 +462,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp)
>           error_free(local_err);
>           local_err = NULL;
>   
> -#ifdef IPPROTO_MPTCP
> +#ifdef HAVE_IPPROTO_MPTCP
>           if (saddr->has_mptcp && saddr->mptcp) {
>               e->ai_protocol = IPPROTO_MPTCP;
>           }
> @@ -699,7 +699,7 @@ int inet_parse(InetSocketAddress *addr, const char *str, Error **errp)
>           }
>           addr->has_keep_alive = true;
>       }
> -#ifdef IPPROTO_MPTCP
> +#ifdef HAVE_IPPROTO_MPTCP
>       begin = strstr(optstr, ",mptcp");
>       if (begin) {
>           if (inet_parse_flag("mptcp", begin + strlen(",mptcp"),
> 

Queued, thanks.

Paolo


Re: [RFC v3 02/32] build-sys: add HAVE_IPPROTO_MPTCP
Posted by Markus Armbruster 4 years ago
marcandre.lureau@redhat.com writes:

> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> The QAPI schema shouldn't rely on C system headers #define, but on
> configure-time project #define, so we can express the build condition in
> a C-independent way.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Reviewed-by: Markus Armbruster <armbru@redhat.com>