Ejemplo n.º 1
0
/**
 * @brief
 *	Makes a connection to the server, returning the pbs_connect() result.
 *
 * @param[in]	server	- hostname of the pbs server to connect to
 * @param[in]	extend  - extend data to send along with the connection.
 *
 * @return	int
 * @retval	connection	success
 * @retval	0		fail
 */
int
cnt2server_extend(char *server, char *extend)
{
	int connect;

#if defined(PBS_SECURITY) && (PBS_SECURITY == KRB5)
	if (!getenv("PBSPRO_IGNORE_KERBEROS") && !pbsgss_can_get_creds()) {
		fprintf(stderr, "No Kerberos credentials found. Set \"PBSPRO_IGNORE_KERBEROS\" environment variable to skip this check.\n");
		exit(1);
	}
#endif
	
	connect = pbs_connect_extend(server, extend);
	if (connect <= 0) {
		if (pbs_errno > PBSE_) {
			switch (pbs_errno) {

				case PBSE_BADHOST:
					fprintf(stderr, "Unknown Host.\n");
					break;

				case PBSE_NOCONNECTS:
					fprintf(stderr, "Too many open connections.\n");
					break;

				case PBSE_NOSERVER:
					fprintf(stderr, "No default server name.\n");
					break;

				case PBSE_SYSTEM:
					fprintf(stderr, "System call failure.\n");
					break;

				case PBSE_PERM:
					fprintf(stderr, "No Permission.\n");
					break;

				case PBSE_PROTOCOL:
					fprintf(stderr, "Communication failure.\n");
					break;

			}
		} else if (errno != 0)
			perror(NULL);

		return (connect);
	}

	/*
	 * Disable Nagle's algorithm on the TCP connection to server.
	 * Nagle's algorithm is hurting cmd-server communication.
	 */
	if (pbs_connection_set_nodelay(connect) == -1) {
		fprintf(stderr, "Cannot set nodelay on connection %d (errno=%d)\n",
			connect, pbs_errno);
		return (PBSE_SYSTEM);
	}

	return (connect);
}
Ejemplo n.º 2
0
/**
 * @brief
 *	Makes a connection to the server, returning the pbs_connect() result.
 *
 * @param[in]	server	- hostname of the pbs server to connect to
 * @param[in]	extend  - extend data to send along with the connection.
 *
 * @return	int
 * @retval	connection	success
 * @retval	0		fail
 */
int
cnt2server_extend(char *server, char *extend)
{
	int connect;

	connect = pbs_connect_extend(server, extend);
	if (connect <= 0) {
		if (pbs_errno > PBSE_) {
			switch (pbs_errno) {

				case PBSE_BADHOST:
					fprintf(stderr, "Unknown Host.\n");
					break;

				case PBSE_NOCONNECTS:
					fprintf(stderr, "Too many open connections.\n");
					break;

				case PBSE_NOSERVER:
					fprintf(stderr, "No default server name.\n");
					break;

				case PBSE_SYSTEM:
					fprintf(stderr, "System call failure.\n");
					break;

				case PBSE_PERM:
					fprintf(stderr, "No Permission.\n");
					break;

				case PBSE_PROTOCOL:
					fprintf(stderr, "Communication failure.\n");
					break;

			}
		} else if (errno != 0)
			perror(NULL);

		return (connect);
	}

	return (connect);
}
Ejemplo n.º 3
0
/**
 * @brief
 *	A wrapper progarm to pbs_connect_extend() but this one not
 *	passing any 'extend' data to the connection.
 *
 * @param[in] server - server - the hostname of the pbs server to connect to.
 *
 * @retval int	- return value of pbs_connect_extend().
 */
int
__pbs_connect(char *server)
{
	return (pbs_connect_extend(server, NULL));
}