/*---------------------------------------------------------------------- * host_in_file * look if resolved host is in "file" * return * 0 if present * 1 if not * -1 error occured *----------------------------------------------------------------------*/ static int host_in_file( const char *host, const char *file ) { FILE *fp; char buf[512], *cp; DENTER(TOP_LAYER, "host_in_file"); fp = fopen(file, "r"); if (!fp) { DRETURN(-1); } while (fgets(buf, sizeof(buf), fp)) { for (cp = strtok(buf, " \t\n,"); cp; cp = strtok(NULL, " \t\n,")) { char* resolved_host = NULL; cl_com_cached_gethostbyname(cp,&resolved_host,NULL,NULL,NULL); if (resolved_host) { if (!sge_hostcmp(host, resolved_host )) { FCLOSE(fp); sge_free(&resolved_host); DRETURN(0); } sge_free(&resolved_host); } } } FCLOSE(fp); DRETURN(1); FCLOSE_ERROR: DRETURN(0); }
extern int main(int argc, char** argv) { int retval = 0; int arg = 0; struct in_addr addr; struct in_addr addr2; char* rhost = NULL; int loops = -1; if (argc < 3) { printf("usage: test_cl_hostname_list <DEBUGLEVEL> hostnames\n"); exit(1); } printf("commlib setup ...\n"); retval = cl_com_setup_commlib(CL_NO_THREAD, (cl_log_t)atoi(argv[1]), NULL); printf("%s\n\n",cl_get_error_text(retval)); printf("reslovling host addr 129.157.141.10 ...\n"); addr = inet_makeaddr(129*256+157,141*256+10); printf("ip addr: %s\n",inet_ntoa(addr)); /* inet_ntoa() is not MT save */ addr2 = inet_makeaddr(192*256+168,11*256+1); printf("ip addr2: %s\n",inet_ntoa(addr2)); /* inet_ntoa() is not MT save */ while ((loops--) != 0) { arg = 2; printf("loop\n\n\n"); while( argv[arg] != NULL) { printf("resolving host \"%s\" ...\n", argv[arg]); retval = cl_com_cached_gethostbyname(argv[arg],&rhost,NULL,NULL,NULL); printf("%s\n",cl_get_error_text(retval)); if (rhost != NULL) { printf(" -> host resolved as \"%s\"\n", rhost ); free(rhost); rhost = NULL; } printf("cl_com_gethostbyaddr ... %s\n", inet_ntoa(addr)); /* inet_ntoa() is not MT save */ retval = cl_com_cached_gethostbyaddr(&addr, &rhost, NULL, NULL); printf("%s\n",cl_get_error_text(retval)); if (retval == CL_RETVAL_OK) { printf(" -> host name is \"%s\"\n", rhost); } free(rhost); rhost = NULL; printf("cl_com_gethostbyaddr ... %s\n",inet_ntoa(addr2) ); /* inet_ntoa() is not MT save */ retval = cl_com_cached_gethostbyaddr(&addr2, &rhost, NULL, NULL); printf("%s\n",cl_get_error_text(retval)); if (retval == CL_RETVAL_OK) { printf(" -> host name is \"%s\"\n", rhost); } free(rhost); rhost = NULL; printf("***********************************************************\n"); arg++; } sleep(1); } printf("commlib cleanup ...\n"); retval = cl_com_cleanup_commlib(); printf("%s\n\n",cl_get_error_text(retval)); printf("main done\n"); return 0; }