Example #1
0
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();
}
Example #2
0
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();
}