diff options
author | Alan Somers <asomers@FreeBSD.org> | 2019-11-26 05:06:25 +0000 |
---|---|---|
committer | Alan Somers <asomers@FreeBSD.org> | 2019-11-26 05:06:25 +0000 |
commit | 2eb6acc2775b7c597f02907dc22fb839c4f229e3 (patch) | |
tree | 38430f65816b4a2e96a53a6fedd89003edf99639 /sbin | |
parent | 98b49d8e1a8b6c9b01dd623be7984b06c116481d (diff) | |
download | src-2eb6acc2775b7c597f02907dc22fb839c4f229e3.tar.gz src-2eb6acc2775b7c597f02907dc22fb839c4f229e3.zip |
ping, ping6: Use setitimer(2) instead of obsolete alarm(3)
Submitted by: Ján Sučan <sucanjan@gmail.com>
Differential Revision: https://reviews.freebsd.org/D22103
Notes
Notes:
svn path=/head/; revision=355106
Diffstat (limited to 'sbin')
-rw-r--r-- | sbin/ping/ping.c | 10 | ||||
-rw-r--r-- | sbin/ping6/ping6.c | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/sbin/ping/ping.c b/sbin/ping/ping.c index ebe97fb8e03a..011c77df816d 100644 --- a/sbin/ping/ping.c +++ b/sbin/ping/ping.c @@ -505,7 +505,15 @@ main(int argc, char *const *argv) if (alarmtimeout > MAXALARM) errx(EX_USAGE, "invalid timeout: `%s' > %d", optarg, MAXALARM); - alarm((int)alarmtimeout); + { + struct itimerval itv; + + timerclear(&itv.it_interval); + timerclear(&itv.it_value); + itv.it_value.tv_sec = (time_t)alarmtimeout; + if (setitimer(ITIMER_REAL, &itv, NULL) != 0) + err(1, "setitimer"); + } break; case 'v': options |= F_VERBOSE; diff --git a/sbin/ping6/ping6.c b/sbin/ping6/ping6.c index 5bd9de92545d..dd592f38e076 100644 --- a/sbin/ping6/ping6.c +++ b/sbin/ping6/ping6.c @@ -574,7 +574,15 @@ main(int argc, char *argv[]) if (alarmtimeout > MAXALARM) errx(EX_USAGE, "invalid timeout: `%s' > %d", optarg, MAXALARM); - alarm((int)alarmtimeout); + { + struct itimerval itv; + + timerclear(&itv.it_interval); + timerclear(&itv.it_value); + itv.it_value.tv_sec = (time_t)alarmtimeout; + if (setitimer(ITIMER_REAL, &itv, NULL) != 0) + err(1, "setitimer"); + } break; #ifdef IPSEC #ifdef IPSEC_POLICY_IPSEC |