[Git][NTPsec/ntpsec][deglobal] Structified packet counters.

Ian Bruene gitlab at mg.gitlab.com
Fri May 18 16:34:24 UTC 2018


Ian Bruene pushed to branch deglobal at NTPsec / ntpsec


Commits:
c5205c0a by Ian Bruene at 2018-05-18T16:33:43Z
Structified packet counters.

- - - - -


4 changed files:

- include/ntpd.h
- ntpd/ntp_control.c
- ntpd/ntp_proto.c
- ntpd/ntp_util.c


Changes:

=====================================
include/ntpd.h
=====================================
--- a/include/ntpd.h
+++ b/include/ntpd.h
@@ -337,18 +337,21 @@ extern int	sys_minsane;		/* minimum candidates */
 /*
  * Statistics counters
  */
-extern uptime_t	sys_stattime;		/* time since sysstats reset */
-extern uint64_t	sys_received;		/* packets received */
-extern uint64_t	sys_processed;		/* packets for this host */
-extern uint64_t	sys_restricted;	 	/* restricted packets */
-extern uint64_t	sys_newversion;		/* current version  */
-extern uint64_t	sys_oldversion;		/* old version */
-extern uint64_t	sys_badlength;		/* bad length or format */
-extern uint64_t	sys_badauth;		/* bad authentication */
-extern uint64_t	sys_declined;		/* declined */
-extern uint64_t	sys_limitrejected;	/* rate exceeded */
-extern uint64_t	sys_kodsent;		/* KoD sent */
-extern uptime_t	use_stattime;		/* time since usestats reset */
+struct statistics_counters {
+    uptime_t	sys_stattime;		/* time since sysstats reset */
+    uint64_t	sys_received;		/* packets received */
+    uint64_t	sys_processed;		/* packets for this host */
+    uint64_t	sys_restricted;	 	/* restricted packets */
+    uint64_t	sys_newversion;		/* current version  */
+    uint64_t	sys_oldversion;		/* old version */
+    uint64_t	sys_badlength;		/* bad length or format */
+    uint64_t	sys_badauth;		/* bad authentication */
+    uint64_t	sys_declined;		/* declined */
+    uint64_t	sys_limitrejected;	/* rate exceeded */
+    uint64_t	sys_kodsent;		/* KoD sent */
+    uptime_t	use_stattime;		/* time since usestats reset */
+};
+extern volatile struct statistics_counters stat_count;
 
 /* Signalling: Set by signal handlers */
 struct signals_detected {


=====================================
ntpd/ntp_control.c
=====================================
--- a/ntpd/ntp_control.c
+++ b/ntpd/ntp_control.c
@@ -1764,47 +1764,48 @@ ctl_putsys(
 		break;
 
 	case CS_SS_RESET:
-		ctl_putuint(sys_var[varid].text, current_time - sys_stattime);
+		ctl_putuint(sys_var[varid].text,
+					current_time - stat_count.sys_stattime);
 		break;
 
 	case CS_SS_RECEIVED:
-		ctl_putuint(sys_var[varid].text, sys_received);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_received);
 		break;
 
 	case CS_SS_THISVER:
-		ctl_putuint(sys_var[varid].text, sys_newversion);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_newversion);
 		break;
 
 	case CS_SS_OLDVER:
-		ctl_putuint(sys_var[varid].text, sys_oldversion);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_oldversion);
 		break;
 
 	case CS_SS_BADFORMAT:
-		ctl_putuint(sys_var[varid].text, sys_badlength);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_badlength);
 		break;
 
 	case CS_SS_BADAUTH:
-		ctl_putuint(sys_var[varid].text, sys_badauth);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_badauth);
 		break;
 
 	case CS_SS_DECLINED:
-		ctl_putuint(sys_var[varid].text, sys_declined);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_declined);
 		break;
 
 	case CS_SS_RESTRICTED:
-		ctl_putuint(sys_var[varid].text, sys_restricted);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_restricted);
 		break;
 
 	case CS_SS_LIMITED:
-		ctl_putuint(sys_var[varid].text, sys_limitrejected);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_limitrejected);
 		break;
 
 	case CS_SS_KODSENT:
-		ctl_putuint(sys_var[varid].text, sys_kodsent);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_kodsent);
 		break;
 
 	case CS_SS_PROCESSED:
-		ctl_putuint(sys_var[varid].text, sys_processed);
+		ctl_putuint(sys_var[varid].text, stat_count.sys_processed);
 		break;
 
 	case CS_AUTHDELAY:
@@ -2995,7 +2996,7 @@ static void configure(
 			msyslog(LOG_NOTICE,
 				"MODE6: runtime config from %s rejected due to nomodify restriction",
 				socktoa(&rbufp->recv_srcadr));
-		sys_restricted++;
+		stat_count.sys_restricted++;
 		return;
 	}
 
@@ -3448,7 +3449,7 @@ static void read_mru_list(
 			msyslog(LOG_NOTICE,
 				"MODE6: mrulist from %s rejected due to nomrulist restriction",
 				socktoa(&rbufp->recv_srcadr));
-		sys_restricted++;
+		stat_count.sys_restricted++;
 		return;
 	}
 	/*


=====================================
ntpd/ntp_proto.c
=====================================
--- a/ntpd/ntp_proto.c
+++ b/ntpd/ntp_proto.c
@@ -155,18 +155,7 @@ static int sys_orphwait = NTP_ORPHWAIT; /* orphan wait */
  * Statistics counters - first the good, then the bad
  * These get reset every hour if sysstats is enabled.
  */
-uptime_t	sys_stattime;		/* elapsed time since sysstats reset */
-uint64_t	sys_received;		/* packets received */
-uint64_t	sys_processed;		/* packets for this host */
-uint64_t	sys_newversion;		/* current version */
-uint64_t	sys_oldversion;		/* old version */
-uint64_t	sys_restricted;		/* access denied */
-uint64_t	sys_badlength;		/* bad length or format */
-uint64_t	sys_badauth;		/* bad authentication */
-uint64_t	sys_declined;		/* declined */
-uint64_t	sys_limitrejected;	/* rate exceeded */
-uint64_t	sys_kodsent;		/* KoD sent */
-uptime_t	use_stattime;		/* elapsed time since usestats reset */
+volatile struct statistics_counters stat_count;
 
 double	measured_tick;		/* non-overridable sys_tick (s) */
 
@@ -487,7 +476,7 @@ handle_fastxmit(
 	uint32_t xkeyid;
 
 	if (rbufp->dstadr->flags & INT_MCASTOPEN) {
-			sys_restricted++;
+			stat_count.sys_restricted++;
 	}
 
 	/* To prevent exposing an authentication oracle, only MAC
@@ -546,7 +535,7 @@ handle_procpkt(
 		}
 	} else {
 		/* This case should be unreachable. */
-		sys_declined++;
+		stat_count.sys_declined++;
 		return;
 	}
 
@@ -689,10 +678,10 @@ receive(
 	unsigned short restrict_mask;
 	bool authenticated = false;
 
-	sys_received++;
+	stat_count.sys_received++;
 
 	if(!is_vn_mode_acceptable(rbufp)) {
-		sys_badlength++;
+		stat_count.sys_badlength++;
 		goto done;
 	}
 
@@ -707,19 +696,19 @@ receive(
 #endif
 
 	if(check_early_restrictions(rbufp, restrict_mask)) {
-		sys_restricted++;
+		stat_count.sys_restricted++;
 		goto done;
 	}
 
 	restrict_mask = ntp_monitor(rbufp, restrict_mask);
 	if (restrict_mask & RES_LIMITED) {
-		sys_limitrejected++;
+		stat_count.sys_limitrejected++;
 		if(!(restrict_mask & RES_KOD)) { goto done; }
 	}
 
 	if(is_control_packet(rbufp)) {
 		process_control(rbufp, restrict_mask);
-		sys_processed++;
+		stat_count.sys_processed++;
 		goto done;
 	}
 
@@ -730,18 +719,18 @@ receive(
 	{
 	uint8_t hisversion = PKT_VERSION(rbufp->recv_buffer[0]);
 	if (hisversion == NTP_VERSION) {
-		sys_newversion++;		/* new version */
+		stat_count.sys_newversion++;		/* new version */
 	} else if (!(restrict_mask & RES_VERSION) && hisversion >=
 	    NTP_OLDVERSION) {
-		sys_oldversion++;		/* previous version */
+		stat_count.sys_oldversion++;		/* previous version */
 	} else {
-		sys_badlength++;
+		stat_count.sys_badlength++;
 		goto done;			/* old version */
 	}
 	}
 
 	if (!parse_packet(rbufp)) {
-		sys_badlength++;
+		stat_count.sys_badlength++;
 		goto done;
 	}
 
@@ -752,7 +741,7 @@ receive(
 	     * with a different key. */
 	    peer = findpeer(rbufp);
 	    if (NULL == peer) {
-		sys_declined++;
+		stat_count.sys_declined++;
 		goto done;
 	    }
 	}
@@ -775,7 +764,7 @@ receive(
 				 (int)(rbufp->recv_length - (rbufp->mac_len + 4)),
 				 (int)(rbufp->mac_len + 4))) {
 
-			sys_badauth++;
+			stat_count.sys_badauth++;
 			if(peer != NULL) {
 				peer->badauth++;
 				peer->flash |= BOGON5;
@@ -795,11 +784,11 @@ receive(
 	    case MODE_ACTIVE:  /* remote site using "peer" in config file */
 	    case MODE_CLIENT:  /* Request for us as a server. */
 		handle_fastxmit(rbufp, restrict_mask, authenticated);
-		sys_processed++;
+		stat_count.sys_processed++;
 		break;
 	    case MODE_SERVER:  /* Reply to our request. */
 		handle_procpkt(rbufp, peer);
-		sys_processed++;
+		stat_count.sys_processed++;
 		peer->processed++;
 		break;
 	    default:
@@ -807,7 +796,7 @@ receive(
 		   which are a security nightmare.  So they go to the
 		   bit bucket until this improves.
 		*/
-		sys_declined++;
+		stat_count.sys_declined++;
 		break;
 	}
 
@@ -2231,7 +2220,7 @@ fast_xmit(
 	 * synchronization.
 	 */
 	if (flags & RES_KOD) {
-		sys_kodsent++;
+		stat_count.sys_kodsent++;
 		xpkt.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC,
 		    PKT_VERSION(rbufp->pkt.li_vn_mode), xmode);
 		xpkt.stratum = STRATUM_PKT_UNSPEC;
@@ -2770,10 +2759,10 @@ init_proto(const bool verbose)
 	measure_precision(verbose);
 	get_systime(&dummy);
 	sys_survivors = 0;
-	sys_stattime = current_time;
+	stat_count.sys_stattime = current_time;
 	orphwait = current_time + (unsigned long)sys_orphwait;
 	proto_clr_stats();
-	use_stattime = current_time;
+	stat_count.use_stattime = current_time;
 	hardpps_enable = false;
 	stats_control = true;
 }
@@ -2895,16 +2884,16 @@ proto_config(
 void
 proto_clr_stats(void)
 {
-	sys_stattime = current_time;
-	sys_received = 0;
-	sys_processed = 0;
-	sys_newversion = 0;
-	sys_oldversion = 0;
-	sys_declined = 0;
-	sys_restricted = 0;
-	sys_badlength = 0;
-	sys_badauth = 0;
-	sys_limitrejected = 0;
-	sys_kodsent = 0;
+	stat_count.sys_stattime = current_time;
+	stat_count.sys_received = 0;
+	stat_count.sys_processed = 0;
+	stat_count.sys_newversion = 0;
+	stat_count.sys_oldversion = 0;
+	stat_count.sys_declined = 0;
+	stat_count.sys_restricted = 0;
+	stat_count.sys_badlength = 0;
+	stat_count.sys_badauth = 0;
+	stat_count.sys_limitrejected = 0;
+	stat_count.sys_kodsent = 0;
 }
 


=====================================
ntpd/ntp_util.c
=====================================
--- a/ntpd/ntp_util.c
+++ b/ntpd/ntp_util.c
@@ -595,11 +595,12 @@ record_sys_stats(void)
 		fprintf(sysstats.fp,
 		    "%s %u %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64
 		    " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 " %" PRIu64 "\n",
-		    timespec_to_MJDtime(&now), current_time - sys_stattime,
-		    sys_received, sys_processed, sys_newversion,
-		    sys_oldversion, sys_restricted, sys_badlength,
-		    sys_badauth, sys_declined, sys_limitrejected,
-		    sys_kodsent);
+		    timespec_to_MJDtime(&now), current_time - stat_count.sys_stattime,
+			stat_count.sys_received, stat_count.sys_processed,
+			stat_count.sys_newversion, stat_count.sys_oldversion,
+			stat_count.sys_restricted, stat_count.sys_badlength,
+		    stat_count.sys_badauth, stat_count.sys_declined,
+			stat_count.sys_limitrejected, stat_count.sys_kodsent);
 		fflush(sysstats.fp);
 		proto_clr_stats();
 	}
@@ -638,7 +639,7 @@ void record_use_stats(void)
 		stimex += usage.ru_stime.tv_sec -  oldusage.ru_stime.tv_sec;
 		fprintf(usestats.fp,
 		    "%s %u %.3f %.3f %ld %ld %ld %ld %ld %ld %ld %ld %ld\n",
-		    timespec_to_MJDtime(&now), current_time - use_stattime,
+		    timespec_to_MJDtime(&now), current_time - stat_count.use_stattime,
 		    utime, stimex,
 		    usage.ru_minflt -   oldusage.ru_minflt,
 		    usage.ru_majflt -   oldusage.ru_majflt,
@@ -651,7 +652,7 @@ void record_use_stats(void)
 		    usage.ru_maxrss );
 		fflush(usestats.fp);
 		oldusage = usage;
-		use_stattime = current_time;
+		stat_count.use_stattime = current_time;
 	}
 }
 



View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/c5205c0a4896e8404d819d862ca161a2e57d9a80

-- 
View it on GitLab: https://gitlab.com/NTPsec/ntpsec/commit/c5205c0a4896e8404d819d862ca161a2e57d9a80
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ntpsec.org/pipermail/vc/attachments/20180518/5db08199/attachment.html>


More information about the vc mailing list