Exemple #1
0
/*----------------------------------------------------------------------
 * 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;
}