示例#1
0
int
ping_address (char *hostname)
{
  ping_set_type (ping, ICMP_ADDRESS);
  ping_set_event_handler (ping, recv_address, NULL);
  ping_set_packetsize (ping, 12);	/* FIXME: constant */
  ping_set_count (ping, 1);

  if (ping_set_dest (ping, hostname))
    error (EXIT_FAILURE, 0, "unknown host");

  printf ("PING %s (%s): sending address mask request\n",
	  ping->ping_hostname, inet_ntoa (ping->ping_dest.ping_sockaddr.sin_addr));

  return ping_run (ping, address_finish);
}
示例#2
0
int
main (int argc, char **argv)
{
  int index;
  int status = 0;

  set_program_name (argv[0]);
  
  if (getuid () == 0)
    is_root = true;

  /* Parse command line */
  iu_argp_init ("ping6", program_authors);
  argp_parse (&argp, argc, argv, 0, &index, NULL);

  ping = ping_init (0, getpid ());
  if (ping == NULL)
    /* ping_init() prints our error message.  */
    exit (1);

  setsockopt (ping->ping_fd, SOL_SOCKET, SO_BROADCAST, (char *) &one, sizeof (one));

  /* Reset root privileges */
  setuid (getuid ());

  argc -= index;
  argv += index;

  if (count != 0)
    ping_set_count (ping, count);

  if (socket_type != 0)
    ping_set_sockopt (ping, socket_type, &one, sizeof (one));

  if (options & OPT_INTERVAL)
    ping_set_interval (ping, interval);

  init_data_buffer (patptr, pattern_len);

  while (argc--)
    {
      status |= ping_echo (*argv++);
      ping_reset (ping);
    }

  return status;
}
示例#3
0
文件: ping.c 项目: millken/zhuxianB30
int
ping_main (struct Ping_Options *Ping_Opt)
{
  int one = 1;
  int ret = 0;

  if (getuid () == 0)
    is_root = true;

  /* Parse command line */
  parse_opt(Ping_Opt);
  
  ping = ping_init (ICMP_ECHO, getpid ());
  if (ping == NULL)
    /* ping_init() prints our error message.  */
    exit (1);

  ping_set_sockopt (ping, SO_BROADCAST, (char *) &one, sizeof (one));

  /* Reset root privileges */
  setuid (getuid ());

  if (count != 0)
    ping_set_count (ping, count);

  if (socket_type != 0)
    ping_set_sockopt (ping, socket_type, &one, sizeof (one));

  if (options & OPT_INTERVAL)
    ping_set_interval (ping, interval);

  init_data_buffer (patptr, pattern_len);
  ret = ping_echo (Ping_Opt->Host);

  Ping_Opt->SuccessCount = ping->ping_num_recv;
  Ping_Opt->FailureCount = ping->ping_num_xmit - ping->ping_num_recv;
  Ping_Opt->AverageResponseTime = ping->avg_time;
  Ping_Opt->MaximumResponseTime = ping->max_time;
  Ping_Opt->MinimumResponseTime = ping->min_time;

  free (ping);
  free (data_buffer);
  
  return ret;
}