int main(void) { struct addrinfo *addr; int fd, status; struct sockaddr saddr; socklen_t slen; char buf[20]; unsigned int port; plan_tests(14); port = server(AF_INET, SOCK_STREAM); sprintf(buf, "%u", port); addr = double_addr_lookup(buf); ok1(addr); fd = net_connect(addr); ok1(fd >= 0); slen = sizeof(saddr); ok1(getsockname(fd, &saddr, &slen) == 0); diag("family = %d", saddr.sa_family); ok1(saddr.sa_family == AF_INET); status = read(fd, buf, sizeof(buf)); ok(status == strlen("Yay!"), "Read returned %i (%s)", status, strerror(errno)); ok1(strncmp(buf, "Yay!", strlen("Yay!")) == 0); close(fd); double_addr_free(addr); port = server(AF_INET6, SOCK_STREAM); sprintf(buf, "%u", port); addr = double_addr_lookup(buf); ok1(addr); fd = net_connect(addr); ok1(fd >= 0); slen = sizeof(saddr); ok1(getsockname(fd, &saddr, &slen) == 0); ok1(saddr.sa_family == AF_INET6); status = read(fd, buf, sizeof(buf)); ok(status == strlen("Yay!"), "Read returned %i (%s)", status, strerror(errno)); ok1(strncmp(buf, "Yay!", strlen("Yay!")) == 0); close(fd); double_addr_free(addr); wait(&status); ok1(WIFEXITED(status)); ok1(WEXITSTATUS(status) == 0); /* This exits depending on whether all tests passed */ return exit_status(); }
int main(void) { struct addrinfo *addr; int fd, status; struct sockaddr saddr; socklen_t slen; char buf[20]; int port; bool fake_double; plan_tests(14); port = server(AF_INET, SOCK_STREAM); if (port == -1) { /* No IPv4 support? Maybe one day this will happen! */ if (errno == EAFNOSUPPORT) skip(6, "No IPv4 socket support"); else fail("Could not create IPv4 listening socket: %s", strerror(errno)); } else { sprintf(buf, "%u", port); addr = double_addr_lookup(buf, &fake_double); ok1(addr); fd = net_connect(addr); ok1(fd >= 0); slen = sizeof(saddr); ok1(getsockname(fd, &saddr, &slen) == 0); diag("family = %d", saddr.sa_family); ok1(saddr.sa_family == AF_INET); status = read(fd, buf, sizeof(buf)); ok(status == strlen("Yay!"), "Read returned %i (%s)", status, strerror(errno)); ok1(strncmp(buf, "Yay!", strlen("Yay!")) == 0); close(fd); double_addr_free(addr, fake_double); } port = server(AF_INET6, SOCK_STREAM); if (port == -1) { /* No IPv6 support? */ if (errno == EAFNOSUPPORT) skip(6, "No IPv6 socket support"); else fail("Could not create IPv6 listening socket: %s", strerror(errno)); } else { sprintf(buf, "%u", port); addr = double_addr_lookup(buf, &fake_double); ok1(addr); fd = net_connect(addr); ok1(fd >= 0); slen = sizeof(saddr); ok1(getsockname(fd, &saddr, &slen) == 0); ok1(saddr.sa_family == AF_INET6); status = read(fd, buf, sizeof(buf)); ok(status == strlen("Yay!"), "Read returned %i (%s)", status, strerror(errno)); ok1(strncmp(buf, "Yay!", strlen("Yay!")) == 0); close(fd); double_addr_free(addr, fake_double); } wait(&status); ok1(WIFEXITED(status)); ok1(WEXITSTATUS(status) == 0); /* This exits depending on whether all tests passed */ return exit_status(); }