/* vi: set sw=4 ts=4: */
/*
- * $Id: ping.c,v 1.52 2002/06/06 11:47:00 andersen Exp $
+ * $Id: ping.c,v 1.54 2003/03/19 09:12:38 mjn3 Exp $
* Mini ping implementation for busybox
*
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
static void noresp(int ign)
{
printf("No response from %s\n", hostname);
- exit(0);
+ exit(EXIT_FAILURE);
}
static void ping(const char *host)
(struct sockaddr *) &pingaddr, sizeof(struct sockaddr_in));
if (c < 0 || c != sizeof(packet))
- perror_msg_and_die("sendto");
+ bb_perror_msg_and_die("sendto");
signal(SIGALRM, noresp);
alarm(5); /* give the host 5000ms to respond */
(struct sockaddr *) &from, &fromlen)) < 0) {
if (errno == EINTR)
continue;
- perror_msg("recvfrom");
+ bb_perror_msg("recvfrom");
continue;
}
if (c >= 76) { /* ip + icmp */
argc--;
argv++;
if (argc < 1)
- show_usage();
+ bb_show_usage();
ping(*argv);
return EXIT_SUCCESS;
}
(struct sockaddr *) &pingaddr, sizeof(struct sockaddr_in));
if (i < 0)
- perror_msg_and_die("sendto");
+ bb_perror_msg_and_die("sendto");
else if ((size_t)i != sizeof(packet))
- error_msg_and_die("ping wrote %d chars; %d expected", i,
+ bb_error_msg_and_die("ping wrote %d chars; %d expected", i,
(int)sizeof(packet));
signal(SIGALRM, sendping);
printf("\n");
} else
if (icmppkt->icmp_type != ICMP_ECHO)
- error_msg("Warning: Got ICMP %d (%s)",
+ bb_error_msg("Warning: Got ICMP %d (%s)",
icmppkt->icmp_type, icmp_type_name (icmppkt->icmp_type));
}
pingaddr.sin_family = AF_INET;
hostent = xgethostbyname(host);
if (hostent->h_addrtype != AF_INET)
- error_msg_and_die("unknown address type; only AF_INET is currently supported.");
+ bb_error_msg_and_die("unknown address type; only AF_INET is currently supported.");
memcpy(&pingaddr.sin_addr, hostent->h_addr, sizeof(pingaddr.sin_addr));
(struct sockaddr *) &from, &fromlen)) < 0) {
if (errno == EINTR)
continue;
- perror_msg("recvfrom");
+ bb_perror_msg("recvfrom");
continue;
}
unpack(packet, c, &from);
break;
case 'c':
if (--argc <= 0)
- show_usage();
+ bb_show_usage();
argv++;
pingcount = atoi(*argv);
break;
case 's':
if (--argc <= 0)
- show_usage();
+ bb_show_usage();
argv++;
datalen = atoi(*argv);
break;
default:
- show_usage();
+ bb_show_usage();
}
argc--;
argv++;
}
if (argc < 1)
- show_usage();
+ bb_show_usage();
myid = getpid() & 0xFFFF;
ping(*argv);