xref: /qemu/tests/unit/socket-helpers.h (revision 9b589ffb1237ec54f8341d8a80ba77f31d428842)
1*9b589ffbSDaniel P. Berrange /*
2*9b589ffbSDaniel P. Berrange  * Helper functions for tests using sockets
3*9b589ffbSDaniel P. Berrange  *
4*9b589ffbSDaniel P. Berrange  * Copyright 2015-2018 Red Hat, Inc.
5*9b589ffbSDaniel P. Berrange  *
6*9b589ffbSDaniel P. Berrange  * This program is free software; you can redistribute it and/or
7*9b589ffbSDaniel P. Berrange  * modify it under the terms of the GNU General Public License as
8*9b589ffbSDaniel P. Berrange  * published by the Free Software Foundation; either version 2 or
9*9b589ffbSDaniel P. Berrange  * (at your option) version 3 of the License.
10*9b589ffbSDaniel P. Berrange  *
11*9b589ffbSDaniel P. Berrange  * This program is distributed in the hope that it will be useful,
12*9b589ffbSDaniel P. Berrange  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13*9b589ffbSDaniel P. Berrange  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*9b589ffbSDaniel P. Berrange  * GNU General Public License for more details.
15*9b589ffbSDaniel P. Berrange  *
16*9b589ffbSDaniel P. Berrange  * You should have received a copy of the GNU General Public License
17*9b589ffbSDaniel P. Berrange  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18*9b589ffbSDaniel P. Berrange  *
19*9b589ffbSDaniel P. Berrange  */
20*9b589ffbSDaniel P. Berrange 
21*9b589ffbSDaniel P. Berrange /*
22*9b589ffbSDaniel P. Berrange  * @hostname: a DNS name or numeric IP address
23*9b589ffbSDaniel P. Berrange  *
24*9b589ffbSDaniel P. Berrange  * Check whether it is possible to bind to ports
25*9b589ffbSDaniel P. Berrange  * on the DNS name or IP address @hostname. If an IP address
26*9b589ffbSDaniel P. Berrange  * is used, it must not be a wildcard address.
27*9b589ffbSDaniel P. Berrange  *
28*9b589ffbSDaniel P. Berrange  * Returns 0 on success, -1 on error with errno set
29*9b589ffbSDaniel P. Berrange  */
30*9b589ffbSDaniel P. Berrange int socket_can_bind(const char *hostname);
31*9b589ffbSDaniel P. Berrange 
32*9b589ffbSDaniel P. Berrange /*
33*9b589ffbSDaniel P. Berrange  * @has_ipv4: set to true on return if IPv4 is available
34*9b589ffbSDaniel P. Berrange  * @has_ipv6: set to true on return if IPv6 is available
35*9b589ffbSDaniel P. Berrange  *
36*9b589ffbSDaniel P. Berrange  * Check whether IPv4 and/or IPv6 are available for use.
37*9b589ffbSDaniel P. Berrange  * On success, @has_ipv4 and @has_ipv6 will be set to
38*9b589ffbSDaniel P. Berrange  * indicate whether the respective protocols are available.
39*9b589ffbSDaniel P. Berrange  *
40*9b589ffbSDaniel P. Berrange  * Returns 0 on success, -1 on fatal error
41*9b589ffbSDaniel P. Berrange  */
42*9b589ffbSDaniel P. Berrange int socket_check_protocol_support(bool *has_ipv4, bool *has_ipv6);
43