aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorAlan Somers <asomers@FreeBSD.org>2019-11-26 05:06:25 +0000
committerAlan Somers <asomers@FreeBSD.org>2019-11-26 05:06:25 +0000
commit2eb6acc2775b7c597f02907dc22fb839c4f229e3 (patch)
tree38430f65816b4a2e96a53a6fedd89003edf99639 /sbin
parent98b49d8e1a8b6c9b01dd623be7984b06c116481d (diff)
downloadsrc-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.c10
-rw-r--r--sbin/ping6/ping6.c10
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