build-sys: add HAVE_IPPROTO_MPTCP

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>
Message-Id: <20210907121943.3498701-3-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Marc-André Lureau 2021-09-07 16:19:13 +04:00 committed by Paolo Bonzini
parent fcb3ab341a
commit 653163fcbc
4 changed files with 7 additions and 5 deletions

View File

@ -122,7 +122,7 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver,
.ipv4 = iaddr->ipv4, .ipv4 = iaddr->ipv4,
.has_ipv6 = iaddr->has_ipv6, .has_ipv6 = iaddr->has_ipv6,
.ipv6 = iaddr->ipv6, .ipv6 = iaddr->ipv6,
#ifdef IPPROTO_MPTCP #ifdef HAVE_IPPROTO_MPTCP
.has_mptcp = iaddr->has_mptcp, .has_mptcp = iaddr->has_mptcp,
.mptcp = iaddr->mptcp, .mptcp = iaddr->mptcp,
#endif #endif

View File

@ -1374,6 +1374,8 @@ config_host_data.set('HAVE_OPTRESET',
cc.has_header_symbol('getopt.h', 'optreset')) cc.has_header_symbol('getopt.h', 'optreset'))
config_host_data.set('HAVE_UTMPX', config_host_data.set('HAVE_UTMPX',
cc.has_header_symbol('utmpx.h', 'struct 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 # has_member
config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID', config_host_data.set('HAVE_SIGEV_NOTIFY_THREAD_ID',

View File

@ -69,7 +69,7 @@
'*ipv4': 'bool', '*ipv4': 'bool',
'*ipv6': 'bool', '*ipv6': 'bool',
'*keep-alive': 'bool', '*keep-alive': 'bool',
'*mptcp': { 'type': 'bool', 'if': 'IPPROTO_MPTCP' } } } '*mptcp': { 'type': 'bool', 'if': 'HAVE_IPPROTO_MPTCP' } } }
## ##
# @UnixSocketAddress: # @UnixSocketAddress:

View File

@ -278,7 +278,7 @@ static int inet_listen_saddr(InetSocketAddress *saddr,
/* create socket + bind/listen */ /* create socket + bind/listen */
for (e = res; e != NULL; e = e->ai_next) { for (e = res; e != NULL; e = e->ai_next) {
#ifdef IPPROTO_MPTCP #ifdef HAVE_IPPROTO_MPTCP
if (saddr->has_mptcp && saddr->mptcp) { if (saddr->has_mptcp && saddr->mptcp) {
e->ai_protocol = IPPROTO_MPTCP; e->ai_protocol = IPPROTO_MPTCP;
} }
@ -462,7 +462,7 @@ int inet_connect_saddr(InetSocketAddress *saddr, Error **errp)
error_free(local_err); error_free(local_err);
local_err = NULL; local_err = NULL;
#ifdef IPPROTO_MPTCP #ifdef HAVE_IPPROTO_MPTCP
if (saddr->has_mptcp && saddr->mptcp) { if (saddr->has_mptcp && saddr->mptcp) {
e->ai_protocol = IPPROTO_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; addr->has_keep_alive = true;
} }
#ifdef IPPROTO_MPTCP #ifdef HAVE_IPPROTO_MPTCP
begin = strstr(optstr, ",mptcp"); begin = strstr(optstr, ",mptcp");
if (begin) { if (begin) {
if (inet_parse_flag("mptcp", begin + strlen(",mptcp"), if (inet_parse_flag("mptcp", begin + strlen(",mptcp"),