/* *********************************************************************** */ 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); }
/* *********************************************************************** */ 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); }
/* *********************************************************************** */ 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); }
/* *********************************************************************** */ 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); }
/* *********************************************************************** */ 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); }
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); }