Exemplo n.º 1
0
/***************************************************************************
 * Support functions for slurm_allocate_resources_blocking()
 ***************************************************************************/
static listen_t *_create_allocation_response_socket(char *interface_hostname)
{
	listen_t *listen = NULL;
	uint16_t *ports;

	listen = xmalloc(sizeof(listen_t));

	if ((ports = slurm_get_srun_port_range()))
		listen->fd = slurm_init_msg_engine_ports(ports);
	else
		listen->fd = slurm_init_msg_engine_port(0);

	if (listen->fd < 0) {
		error("slurm_init_msg_engine_port error %m");
		return NULL;
	}

	if (slurm_get_stream_addr(listen->fd, &listen->address) < 0) {
		error("slurm_get_stream_addr error %m");
		slurm_shutdown_msg_engine(listen->fd);
		return NULL;
	}
	listen->hostname = xstrdup(interface_hostname);
	/* FIXME - screw it!  I can't seem to get the port number through
	   slurm_* functions */
	listen->port = ntohs(listen->address.sin_port);
	fd_set_nonblocking(listen->fd);

	return listen;
}
Exemplo n.º 2
0
/* Set up port to handle messages from slurmctld */
int slurmctld_msg_init(void)
{
	slurm_addr_t slurm_address;
	uint16_t port;
	static int slurmctld_fd = -1;
	uint16_t *ports;

	if (slurmctld_fd >= 0)	/* May set early for queued job allocation */
		return slurmctld_fd;

	slurmctld_comm_addr.port = 0;

	if ((ports = slurm_get_srun_port_range()))
		slurmctld_fd = slurm_init_msg_engine_ports(ports);
	else
		slurmctld_fd = slurm_init_msg_engine_port(0);

	if (slurmctld_fd < 0) {
		error("slurm_init_msg_engine_port error %m");
		exit(error_exit);
	}

	if (slurm_get_stream_addr(slurmctld_fd, &slurm_address) < 0) {
		error("slurm_get_stream_addr error %m");
		exit(error_exit);
	}
	fd_set_nonblocking(slurmctld_fd);
	/* hostname is not set,  so slurm_get_addr fails
	   slurm_get_addr(&slurm_address, &port, hostname, sizeof(hostname)); */
	port = ntohs(slurm_address.sin_port);
	slurmctld_comm_addr.port     = port;
	debug2("srun PMI messages to port=%u", slurmctld_comm_addr.port);

	return slurmctld_fd;
}