1e66f31c5Sopenharmony_ci#include <stdio.h>
2e66f31c5Sopenharmony_ci#include <uv.h>
3e66f31c5Sopenharmony_ci
4e66f31c5Sopenharmony_ciint main() {
5e66f31c5Sopenharmony_ci    char buf[512];
6e66f31c5Sopenharmony_ci    uv_interface_address_t *info;
7e66f31c5Sopenharmony_ci    int count, i;
8e66f31c5Sopenharmony_ci
9e66f31c5Sopenharmony_ci    uv_interface_addresses(&info, &count);
10e66f31c5Sopenharmony_ci    i = count;
11e66f31c5Sopenharmony_ci
12e66f31c5Sopenharmony_ci    printf("Number of interfaces: %d\n", count);
13e66f31c5Sopenharmony_ci    while (i--) {
14e66f31c5Sopenharmony_ci        uv_interface_address_t interface_a = info[i];
15e66f31c5Sopenharmony_ci
16e66f31c5Sopenharmony_ci        printf("Name: %s\n", interface_a.name);
17e66f31c5Sopenharmony_ci        printf("Internal? %s\n", interface_a.is_internal ? "Yes" : "No");
18e66f31c5Sopenharmony_ci
19e66f31c5Sopenharmony_ci        if (interface_a.address.address4.sin_family == AF_INET) {
20e66f31c5Sopenharmony_ci            uv_ip4_name(&interface_a.address.address4, buf, sizeof(buf));
21e66f31c5Sopenharmony_ci            printf("IPv4 address: %s\n", buf);
22e66f31c5Sopenharmony_ci        }
23e66f31c5Sopenharmony_ci        else if (interface_a.address.address4.sin_family == AF_INET6) {
24e66f31c5Sopenharmony_ci            uv_ip6_name(&interface_a.address.address6, buf, sizeof(buf));
25e66f31c5Sopenharmony_ci            printf("IPv6 address: %s\n", buf);
26e66f31c5Sopenharmony_ci        }
27e66f31c5Sopenharmony_ci
28e66f31c5Sopenharmony_ci        printf("\n");
29e66f31c5Sopenharmony_ci    }
30e66f31c5Sopenharmony_ci
31e66f31c5Sopenharmony_ci    uv_free_interface_addresses(info, count);
32e66f31c5Sopenharmony_ci    return 0;
33e66f31c5Sopenharmony_ci}
34