| 
					
				 | 
			
			
				@@ -3121,6 +3121,50 @@ rep_hist_hs_stats_write(time_t now) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return start_of_hs_stats_interval + WRITE_STATS_INTERVAL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#define MAX_LINK_PROTO_TO_LOG 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static uint64_t link_proto_count[MAX_LINK_PROTO_TO_LOG+1][2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Note that we negotiated link protocol version <b>link_proto</b>, on 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * a connection that started here iff <b>started_here</b> is true. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rep_hist_note_negotiated_link_proto(unsigned link_proto, int started_here) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  started_here = !!started_here; /* force to 0 or 1 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (link_proto > MAX_LINK_PROTO_TO_LOG) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    log_warn(LD_BUG, "Can't log link protocol %u", link_proto); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  link_proto_count[link_proto][started_here]++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** Log a heartbeat message explaining how many connections of each link 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * protocol version we have used. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rep_hist_log_link_protocol_counts(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  log_notice(LD_HEARTBEAT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             "Since startup, we have initiated " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v1 connections, " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v2 connections, " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v3 connections, and " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v4 connections; and received " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v1 connections, " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v2 connections, " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v3 connections, and " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_FORMAT" v4 connections.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[1][1]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[2][1]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[3][1]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[4][1]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[1][0]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[2][0]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[3][0]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             U64_PRINTF_ARG(link_proto_count[4][0])); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Free all storage held by the OR/link history caches, by the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * bandwidth history arrays, by the port history, or by statistics . */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void 
			 |