Пример #1
0
const char *
pscom_con_info_str2(pscom_con_info_t *con_info1, pscom_con_info_t *con_info2)
{
	static char buf[sizeof("(xxx.xxx.xxx.xxx,pidxxx,0x_xblast_xblast__,XXXXXXXXXXXXXXXX)_____ to "
			       "(xxx.xxx.xxx.xxx,pidxxx,0x_xblast_xblast__,XXXXXXXXXXXXXXXX)_____")];
	snprintf(buf, sizeof(buf), "("INET_ADDR_FORMAT",%d,%p,%.8s) to ("INET_ADDR_FORMAT",%d,%p,%.8s)",
		 INET_ADDR_SPLIT(con_info1->node_id),
		 con_info1->pid,
		 con_info1->id,
		 con_info1->name,
		 INET_ADDR_SPLIT(con_info2->node_id),
		 con_info2->pid,
		 con_info2->id,
		 con_info2->name);
	return buf;
}
Пример #2
0
const char *
pscom_inetstr(int addr)
{
	static char ret[sizeof("xxx.xxx.xxx.xxx_____")];
	snprintf(ret, sizeof(ret), INET_ADDR_FORMAT,
		 INET_ADDR_SPLIT(addr));
	return ret;
}
Пример #3
0
const char *pscom_socket_ondemand_str(int nodeid, int portno, const char name[8])
{
	static char socket_str[sizeof("xxx.xxx.xxx.xxx:xxxxx@01234567____")];

	if (portno < 0 || portno > 65535) goto err_invalid_port;

	if (!name[0]) {
		snprintf(socket_str, sizeof(socket_str), INET_ADDR_FORMAT ":%u",
			 INET_ADDR_SPLIT(nodeid), portno);
	} else {
		snprintf(socket_str, sizeof(socket_str), INET_ADDR_FORMAT ":%u@%1.8s",
			 INET_ADDR_SPLIT(nodeid), portno, name);
	}
	return socket_str;
	/* error code */
err_invalid_port:
	errno = EINVAL;
	return NULL;
}
Пример #4
0
static
FILE *get_peer(void)
{
	int fd;

	struct addrinfo hints = {
		.ai_flags = AI_CANONNAME,
		//.ai_family   = AF_UNSPEC,
		.ai_family   = AF_INET,
		.ai_socktype = SOCK_STREAM
	};
	struct addrinfo *addrinfo;

	int n;
	n = getaddrinfo(arg_servername ? arg_servername : "0", arg_port, &hints, &addrinfo);
	if (n) {
		addrinfo = NULL;
		printf("getaddrinfo() failed: %s\n", gai_strerror(n));
		exit(1);
	}

	if (is_server) {
		int val = 1;
		int listen_fd;
		SCALL(listen_fd = socket(PF_INET, SOCK_STREAM, 0));

		setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR,
			   (void*) &val, sizeof(val));

		SCALL(bind(listen_fd, addrinfo->ai_addr, addrinfo->ai_addrlen));
		SCALL(listen(listen_fd, 1));
		printf("Waiting for connection\n");
		fd = accept(listen_fd, NULL, 0);
	} else {
		struct sockaddr_in *si = (struct sockaddr_in *)addrinfo->ai_addr;
		assert(si->sin_family == AF_INET);
		SCALL(fd = socket(PF_INET, SOCK_STREAM, 0));
		printf("Connect to "INET_ADDR_FORMAT" \n",
		       INET_ADDR_SPLIT(ntohl(si->sin_addr.s_addr)));

		SCALL(connect(fd, addrinfo->ai_addr, addrinfo->ai_addrlen));
	}

	if (addrinfo) freeaddrinfo(addrinfo);
	return fdopen(fd, "a+");
}