svn commit: r355106 - in head/sbin: ping ping6

Alan Somers asomers at FreeBSD.org
Tue Nov 26 05:06:26 UTC 2019


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 at 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


More information about the svn-src-head mailing list