Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Nov 2019 05:06:25 +0000 (UTC)
From:      Alan Somers <asomers@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r355106 - in head/sbin: ping ping6
Message-ID:  <201911260506.xAQ56P57014822@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: asomers
Date: Tue Nov 26 05:06:25 2019
New Revision: 355106
URL: https://svnweb.freebsd.org/changeset/base/355106

Log:
  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

Modified:
  head/sbin/ping/ping.c
  head/sbin/ping6/ping6.c

Modified: head/sbin/ping/ping.c
==============================================================================
--- head/sbin/ping/ping.c	Tue Nov 26 02:50:25 2019	(r355105)
+++ head/sbin/ping/ping.c	Tue Nov 26 05:06:25 2019	(r355106)
@@ -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;

Modified: head/sbin/ping6/ping6.c
==============================================================================
--- head/sbin/ping6/ping6.c	Tue Nov 26 02:50:25 2019	(r355105)
+++ head/sbin/ping6/ping6.c	Tue Nov 26 05:06:25 2019	(r355106)
@@ -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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201911260506.xAQ56P57014822>