コード例 #1
0
ファイル: rslvhost.cpp プロジェクト: neilgroves/MlbDev
/*	***********************************************************************	*/
int NPSL_ResolveHostBasic(const char *host_string, char *out_host_name,
	struct in_addr *out_host_in_addr, char *out_host_inet,
	unsigned long *out_host_ulong, char *error_text)
{
	int          return_code;
	NPSL_HOSTENT hent_data;
	char         buffer[8192];

	if ((return_code = NPSL_GetHostByString(host_string, &hent_data, buffer,
		sizeof(buffer), error_text)) == NPSL_SUCCESS) {
		if (out_host_name != NULL)
			strcpy(out_host_name, hent_data.h_name);
		if (out_host_in_addr != NULL)
			*out_host_in_addr = *((struct in_addr *) hent_data.h_addr_list[0]);
		if (out_host_inet != NULL)
			NPSL_AddrStructToINetBasic(((struct in_addr *)
				hent_data.h_addr_list[0]), out_host_inet, error_text);
		if (out_host_ulong != NULL) {
			memset(out_host_ulong, '\0', sizeof(*out_host_ulong));
			memcpy(out_host_ulong, hent_data.h_addr_list[0], 4);
		}
	}

	return(return_code);
}
コード例 #2
0
ファイル: rslvhost.cpp プロジェクト: neilgroves/MlbDev
/*	***********************************************************************	*/
int NPSL_ResolveHostToAddrStruct(const char *host_string,
	struct in_addr *out_host, char *error_text)
{
	int          return_code;
	NPSL_HOSTENT hent_data;
	char         buffer[8192];

	if ((return_code = NPSL_GetHostByString(host_string, &hent_data, buffer,
		sizeof(buffer), error_text)) == NPSL_SUCCESS) {
		if (out_host != NULL)
			*out_host = *((struct in_addr *) hent_data.h_addr_list[0]);
	}

	return(return_code);
}
コード例 #3
0
ファイル: rslvhost.cpp プロジェクト: neilgroves/MlbDev
/*	***********************************************************************	*/
int NPSL_ResolveHostToName(const char *host_string, char *out_host,
	char *error_text)
{
	int          return_code;
	NPSL_HOSTENT hent_data;
	char         buffer[8192];

	if ((return_code = NPSL_GetHostByString(host_string, &hent_data, buffer,
		sizeof(buffer), error_text)) == NPSL_SUCCESS) {
		if (out_host != NULL)
			strcpy(out_host, hent_data.h_name);
	}

	return(return_code);
}
コード例 #4
0
ファイル: rslvhost.cpp プロジェクト: neilgroves/MlbDev
/*	***********************************************************************	*/
int NPSL_ResolveHostToULong(const char *host_string, unsigned long *out_host,
	char *error_text)
{
	int          return_code;
	NPSL_HOSTENT hent_data;
	char         buffer[8192];

	if ((return_code = NPSL_GetHostByString(host_string, &hent_data, buffer,
		sizeof(buffer), error_text)) == NPSL_SUCCESS) {
		if (out_host != NULL) {
			memset(out_host, '\0', sizeof(*out_host));
			memcpy(out_host, hent_data.h_addr_list[0], 4);
		}
	}

	return(return_code);
}
コード例 #5
0
ファイル: exphostl.cpp プロジェクト: mlbrock/MlbDev
/* *********************************************************************** */
int NPSL_ExpandHostNameList(unsigned int in_host_count, char **in_host_list,
	unsigned int *out_host_count, char ***out_host_list, char *error_text)
{
	int            return_code = NPSL_SUCCESS;
	unsigned int   count_1;

	*out_host_count = 0;
	*out_host_list  = NULL;

	try {
		MLB::Utility::StringSet tmp_set;
		for (count_1 = 0; count_1 < in_host_count; count_1++) {
			NPSL_HOSTENT hent_data;
			char         hent_buffer[2048];
			char         tmp_error_text[NPSL_MAX_ERROR_TEXT];
			if ((return_code = NPSL_GetHostByString(in_host_list[count_1],
				&hent_data, hent_buffer, sizeof(hent_buffer), tmp_error_text)) !=
				NPSL_SUCCESS) {
				sprintf(error_text,
					"Unable to get the host information for '%-.300s': %s",
					in_host_list[count_1], tmp_error_text);
				break;
			}
			tmp_set.insert(hent_data.h_name);
			char **this_ptr = hent_data.h_aliases;
			while (*this_ptr != NULL) {
				tmp_set.insert(*this_ptr);
				this_ptr++;
			}
		}
		if (return_code == NPSL_SUCCESS)
			MLB::Utility::StringContainerToCharPtrArray(tmp_set,
				*out_host_count, *out_host_list, "NPSL_ExpandHostNameList");
	}
	catch (const std::exception &except) {
		MLB::NPSLI_Internal::NPSLI_GetErrorFromException(except, error_text);
		return_code = NPSL_FAILURE;
	}

	return(return_code);
}
コード例 #6
0
ファイル: gethent.cpp プロジェクト: neilgroves/MlbDev
int main(int argc, char **argv)
{
	int            return_code = NPSL_FAILURE;
	unsigned int   count_1;
	unsigned int   count_2;
	char           buffer[1024];
	NPSL_HOSTENT   hostent_data;
	char         **tmp_list;
	char           inet_buffer[NPSL_MAX_IPV4_ADDR_STR + 1];
	char           error_text[NPSL_MAX_ERROR_TEXT];

	fprintf(stderr, "Test routine for 'NPSL_GetHostByAddr()'\n");
	fprintf(stderr, "                 'NPSL_GetHostByINet()'\n");
	fprintf(stderr, "                 'NPSL_GetHostByName()'\n");
	fprintf(stderr, "                 'NPSL_GetHostByString()'\n");
	fprintf(stderr, "---- ------- --- ------------------------\n\n");

	if (argc == 1)
		sprintf(error_text, "USAGE: %s { %s } [ { %s } . . . ]\n", argv[0],
			"<host-name> | <IP-address>", "<host-name> | <IP-address>");
	else if ((return_code = NPSL_SocketLibStartUp(NULL, error_text)) ==
		NPSL_SUCCESS) {
		for (count_1 = 1; count_1 < ((unsigned int) argc); count_1++) {
			printf("HOSTNAME: %s ---> ", argv[count_1]);
			printf("by %s ---> ",
				(!isdigit(*argv[count_1])) ? "name" : "address");
			if ((return_code = NPSL_GetHostByString(argv[count_1],
				&hostent_data, buffer, sizeof(buffer), error_text)) !=
				NPSL_SUCCESS)
				break;
			printf("DONE\n");
			printf("        : Host Name     : %s\n",
				hostent_data.h_name);
			printf("        : Address Type  : %d\n",
				hostent_data.h_addrtype);
			printf("        : Address Length: %d\n",
				hostent_data.h_length);
			if ((tmp_list = hostent_data.h_aliases)[0] != NULL) {
				count_2 = 0;
				while (*tmp_list != NULL) {
					printf("        : Alias %8u: %s\n", count_2++,
						*tmp_list);
					tmp_list++;
				}
			}
			if (((tmp_list = hostent_data.h_addr_list)[0] != NULL) &&
				(hostent_data.h_addrtype == AF_INET)) {
				count_2 = 0;
				while (*tmp_list != NULL) {
					printf("        : Address %6u: %s\n", count_2++,
						NPSL_AddrToINet(*tmp_list, inet_buffer));
					tmp_list++;
				}
			}
		}
		NPSL_SocketLibCleanUp(NULL, NULL);
	}

	if (return_code != NPSL_SUCCESS)
		fprintf(stderr, "\n\nERROR: %s\n\n", error_text);

	return(return_code);
}