Example #1
0
int main(int argc, char *argv[])
{
  struct hostent *he = NULL;
  char* resolved_name = NULL;
  int retval = CL_RETVAL_OK;
  char* ip_string = NULL;
  char** tp = NULL;
  char** tp2 = NULL;
  int name_only = 0;
  int sge_aliasing = 0;
  int all_option = 0;
  int system_error = 0;

#if defined(CRAY)  
  struct sockaddr_in  addr;
#else
  struct in_addr addr;
#endif

  if (argc < 2) {
    usage();
  }

  ip_string = argv[1];
  if (!strcmp(argv[1], "-help")) {
     usage();
  }
  if (!strcmp(argv[1], "-name")) {
     if (argc != 3) {
        usage(); 
     }
     name_only = 1;
     ip_string = argv[2];
  }   
  if (!strcmp(argv[1], "-aname")) {
     if (argc != 3) {
        usage(); 
     }
     name_only = 1;
     sge_aliasing = 1;
     ip_string = argv[2];
  }   
  if (!strcmp(argv[1], "-all")) {
     if (argc != 3) {
        usage(); 
     }
     name_only = 0;
     sge_aliasing = 1;
     all_option = 1;
     ip_string = argv[2];
  }

  
  retval = cl_com_setup_commlib(CL_NO_THREAD ,CL_LOG_OFF, NULL);
  if (retval != CL_RETVAL_OK) {
     fprintf(stderr,"%s\n",cl_get_error_text(retval));
     exit(1);
  }

  if (sge_aliasing ) {
     cl_com_set_alias_file(sge_get_alias_path());
  }

  retval = cl_com_set_error_func(gethostbyaddr_communication_error);
  if (retval != CL_RETVAL_OK) {
     fprintf(stderr,"%s\n",cl_get_error_text(retval));
     exit(1);
  }
  

#if defined(CRAY)
  addr.sin_addr.s_addr = inet_addr(ip_string);
#else
  addr.s_addr = inet_addr(ip_string);
#endif

  retval = cl_com_cached_gethostbyaddr(&addr, &resolved_name, &he, &system_error);
  if (retval != CL_RETVAL_OK) {
     cl_com_cleanup_commlib();
     if (error_reported == 0) {
        char* err_text = cl_com_get_h_error_string(system_error);

        if (err_text == NULL) {
           err_text = strdup(strerror(system_error));
           if (err_text == NULL) {
              err_text = strdup("unexpected error");
           }
        }
        if ( ip_string == NULL) {
            ip_string = "NULL";
        }

        fprintf(stderr,"error resolving ip "SFQ": %s (%s)\n",ip_string, cl_get_error_text(retval), err_text); 

        free(err_text); 
        err_text = NULL;
     }
     exit(1);
  }

  if (he == NULL) {
     fprintf(stderr,"%s\n","could not get hostent struct");
  }

  if (name_only) {
     if (sge_aliasing) {
        if (resolved_name != NULL) {
           printf("%s\n",resolved_name);
        } else {
           fprintf(stderr,"%s\n","unexpected error");
           exit(1);
        }
     } else {
        if (he != NULL) {
           printf("%s\n",he->h_name);
        } else {
           fprintf(stderr,"%s\n","could not get hostent struct");
           exit(1);
        }
     }
  } else {
     if (he != NULL) {
        printf(MSG_SYSTEM_HOSTNAMEIS_S,he->h_name);
        printf("\n");
     }
   
     if (resolved_name != NULL && all_option) {
        printf("SGE name: %s\n",resolved_name);
        free(resolved_name);
        resolved_name = NULL;
     } 
   
     if (he != NULL) {
        printf(MSG_SYSTEM_ALIASES );
   
        for (tp = he->h_aliases; *tp; tp++)
          printf("%s ", *tp);
        printf("\n");
     
        printf(MSG_SYSTEM_ADDRESSES );
   
        for (tp2 = he->h_addr_list; *tp2; tp2++)
           printf("%s ", inet_ntoa(* (struct in_addr *) *tp2));  /* inet_ntoa() is not MT save */
        printf("\n");    
     }
  }
  sge_free_hostent(&he);
  if (resolved_name != NULL) {
     free(resolved_name);
     resolved_name = NULL;
  }
  retval = cl_com_cleanup_commlib();
  if (retval != CL_RETVAL_OK) {
     fprintf(stderr,"%s\n",cl_get_error_text(retval));
     exit(1);
  }
  return 0;
}
Example #2
0
int main(int argc,char *argv[]) {
   struct hostent *he = NULL;
   char* resolved_name = NULL;
   int retval = CL_RETVAL_OK;
   char **tp,**tp2;
   int name_only = 0;
   int sge_aliasing = 0;
   int all_option = 0;
   int system_error = 0;

   if (argc < 1 ) {
      usage();
   } 
   if (argc >= 2) {
      if (!strcmp(argv[1], "-help")) {
         usage();
      }
      if (!strcmp(argv[1], "-name")) {
         if (argc != 2) {
            usage(); 
         }
         name_only = 1;
      }   
      if (!strcmp(argv[1], "-aname")) {
         if (argc != 2) {
            usage(); 
         }
         name_only = 1;
         sge_aliasing = 1;
      }   
      if (!strcmp(argv[1], "-all")) {
         if (argc != 2) {
            usage(); 
         }
         name_only = 0;
         sge_aliasing = 1;
         all_option = 1;
      }
   }
  
   if (name_only == 0 && argc != 1 && all_option == 0) {
      usage();
   }
     
  retval = cl_com_setup_commlib(CL_NO_THREAD ,CL_LOG_OFF, NULL);
  if (retval != CL_RETVAL_OK) {
     fprintf(stderr,"%s\n",cl_get_error_text(retval));
     exit(1);
  }

  if (sge_aliasing ) {
     const char *alias_path = sge_get_alias_path();
     cl_com_set_alias_file(alias_path);
     sge_free(&alias_path);
  }

  retval = cl_com_gethostname(&resolved_name, NULL, &he, &system_error);
  if (retval != CL_RETVAL_OK) {
     char* err_text = cl_com_get_h_error_string(system_error);
     if (err_text == NULL) {
        err_text = strdup(strerror(system_error));
        if (err_text == NULL) {
           err_text = strdup("unexpected error");
        }
     }
     fprintf(stderr,"error resolving local host: %s (%s)\n",cl_get_error_text(retval), err_text);
     sge_free(&err_text); 
     cl_com_cleanup_commlib();
     exit(1);
  }


  if (name_only) {
     if (sge_aliasing) {
        if (resolved_name != NULL) {
           printf("%s\n",resolved_name);
        } else {
           printf("%s\n","unexpected error");
        }
     } else {
        if (he != NULL) {
           printf("%s\n",he->h_name);
        } else {
           printf("%s\n","could not get hostent struct");
        }
     }
  } else {
     if (he != NULL) {
        printf(MSG_SYSTEM_HOSTNAMEIS_S , he->h_name);
        	printf("\n");

        	if (resolved_name != NULL && all_option) {
           	printf("SGE name: %s\n",resolved_name);
        	}

        	printf("%s", MSG_SYSTEM_ALIASES);

        	for (tp = he->h_aliases; *tp; tp++) {
           	printf("%s ", *tp);
        	}
        	printf("\n");

        	printf("%s", MSG_SYSTEM_ADDRESSES);
        	for (tp2 = he->h_addr_list; *tp2; tp2++) {
           	printf("%s ", inet_ntoa(* (struct in_addr *) *tp2));  /* inet_ntoa() is not MT save */
        	}
        	printf("\n");
     	} else {
			fprintf(stderr,"%s\n","could not get hostent struct");
      }
   }
  sge_free(&resolved_name);
  sge_free_hostent(&he);

   retval = cl_com_cleanup_commlib();
   if (retval != CL_RETVAL_OK) {
      fprintf(stderr,"%s\n",cl_get_error_text(retval));
      exit(1);
   }
   return 0;
}