From ca517ad854e305e197a043456b7ae981f93b22ed Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Thu, 24 May 2001 09:17:52 +0000 Subject: Add a -A option to ping which beeps when packets are lost. PR: 11818 Submitted by: Marc Evans marc@destek.net --- sbin/ping/ping.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'sbin/ping/ping.c') diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index 3b573c6296c4..1209dc894090 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -135,6 +135,7 @@ int options; #endif /*IPSEC_POLICY_IPSEC*/ #endif /*IPSEC*/ #define F_TTL 0x8000 +#define F_MISSED 0x10000 /* * MAX_DUP_CHK is the number of bits in received table, i.e. the maximum @@ -150,6 +151,7 @@ int datalen = DEFDATALEN; int s; /* socket file descriptor */ u_char outpack[MAXPACKET]; char BSPACE = '\b'; /* characters written for flood */ +char BBELL = '\a'; /* characters written for MISSED and AUDIBLE */ char DOT = '.'; char *hostname; char *shostname; @@ -236,7 +238,7 @@ main(argc, argv) datap = &outpack[8 + PHDR_LEN]; while ((ch = getopt(argc, argv, - "I:LQRS:T:c:adfi:l:m:np:qrs:t:v" + "AI:LQRS:T:c:adfi:l:m:np:qrs:t:v" #ifdef IPSEC #ifdef IPSEC_POLICY_IPSEC "P:" @@ -245,6 +247,9 @@ main(argc, argv) )) != -1) { switch(ch) { + case 'A': + options |= F_MISSED; + break; case 'a': options |= F_AUDIBLE; break; @@ -695,6 +700,9 @@ main(argc, argv) intvl.tv_sec = MAXWAIT; } (void)gettimeofday(&last, NULL); + + if (ntransmitted != nreceived+1 && options & F_MISSED) + (void)write(STDOUT_FILENO, &BBELL, 1); } } finish(); @@ -855,7 +863,7 @@ pr_pack(buf, cc, from, tv) if (dupflag) (void)printf(" (DUP!)"); if (options & F_AUDIBLE) - (void)printf("\a"); + (void)write(STDOUT_FILENO, &BBELL, 1); /* check the data */ cp = (u_char*)&icp->icmp_data[PHDR_LEN]; dp = &outpack[8 + PHDR_LEN]; -- cgit v1.2.3