xref: /qemu/tests/unit/socket-helpers.h (revision f91005e195e7e1485e60cb121731589960f1a3c9)
19b589ffbSDaniel P. Berrange /*
29b589ffbSDaniel P. Berrange  * Helper functions for tests using sockets
39b589ffbSDaniel P. Berrange  *
49b589ffbSDaniel P. Berrange  * Copyright 2015-2018 Red Hat, Inc.
59b589ffbSDaniel P. Berrange  *
69b589ffbSDaniel P. Berrange  * This program is free software; you can redistribute it and/or
79b589ffbSDaniel P. Berrange  * modify it under the terms of the GNU General Public License as
89b589ffbSDaniel P. Berrange  * published by the Free Software Foundation; either version 2 or
99b589ffbSDaniel P. Berrange  * (at your option) version 3 of the License.
109b589ffbSDaniel P. Berrange  *
119b589ffbSDaniel P. Berrange  * This program is distributed in the hope that it will be useful,
129b589ffbSDaniel P. Berrange  * but WITHOUT ANY WARRANTY; without even the implied warranty of
139b589ffbSDaniel P. Berrange  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
149b589ffbSDaniel P. Berrange  * GNU General Public License for more details.
159b589ffbSDaniel P. Berrange  *
169b589ffbSDaniel P. Berrange  * You should have received a copy of the GNU General Public License
179b589ffbSDaniel P. Berrange  * along with this program; if not, see <http://www.gnu.org/licenses/>.
189b589ffbSDaniel P. Berrange  */
199b589ffbSDaniel P. Berrange 
20*f91005e1SMarkus Armbruster #ifndef TESTS_SOCKET_HELPERS_H
21*f91005e1SMarkus Armbruster #define TESTS_SOCKET_HELPERS_H
22*f91005e1SMarkus Armbruster 
239b589ffbSDaniel P. Berrange /*
249b589ffbSDaniel P. Berrange  * @hostname: a DNS name or numeric IP address
259b589ffbSDaniel P. Berrange  *
26abd983c0SDaniel P. Berrange  * Check whether it is possible to bind & connect to ports
279b589ffbSDaniel P. Berrange  * on the DNS name or IP address @hostname. If an IP address
289b589ffbSDaniel P. Berrange  * is used, it must not be a wildcard address.
299b589ffbSDaniel P. Berrange  *
309b589ffbSDaniel P. Berrange  * Returns 0 on success, -1 on error with errno set
319b589ffbSDaniel P. Berrange  */
32abd983c0SDaniel P. Berrange int socket_can_bind_connect(const char *hostname);
339b589ffbSDaniel P. Berrange 
349b589ffbSDaniel P. Berrange /*
359b589ffbSDaniel P. Berrange  * @has_ipv4: set to true on return if IPv4 is available
369b589ffbSDaniel P. Berrange  * @has_ipv6: set to true on return if IPv6 is available
379b589ffbSDaniel P. Berrange  *
389b589ffbSDaniel P. Berrange  * Check whether IPv4 and/or IPv6 are available for use.
399b589ffbSDaniel P. Berrange  * On success, @has_ipv4 and @has_ipv6 will be set to
409b589ffbSDaniel P. Berrange  * indicate whether the respective protocols are available.
419b589ffbSDaniel P. Berrange  *
429b589ffbSDaniel P. Berrange  * Returns 0 on success, -1 on fatal error
439b589ffbSDaniel P. Berrange  */
449b589ffbSDaniel P. Berrange int socket_check_protocol_support(bool *has_ipv4, bool *has_ipv6);
45*f91005e1SMarkus Armbruster 
46*f91005e1SMarkus Armbruster #endif
47