@ -12,6 +12,7 @@
# include "../lib/u_async.h"
# include "../lib/debug_config.h"
# include "../lib/mem.h"
# include "../lib/ll_queue.h"
# include <stdlib.h>
# include <string.h>
@ -717,6 +718,7 @@ static void send_metrics(struct control_server* server, struct control_client* c
struct etcpmon_rsp_metrics * rsp = ( struct etcpmon_rsp_metrics * ) ( buffer + sizeof ( * hdr ) ) ;
/* Fill ETCP metrics */
rsp - > etcp . peer_node_id = conn - > peer_node_id ;
rsp - > etcp . rtt_last = conn - > rtt_last ;
rsp - > etcp . rtt_avg_10 = conn - > rtt_avg_10 ;
rsp - > etcp . rtt_avg_100 = conn - > rtt_avg_100 ;
@ -727,6 +729,29 @@ static void send_metrics(struct control_server* server, struct control_client* c
rsp - > etcp . unacked_bytes = conn - > unacked_bytes ;
rsp - > etcp . optimal_inflight = conn - > optimal_inflight ;
rsp - > etcp . links_count = links_count ;
/* Queue metrics */
rsp - > etcp . input_queue_bytes = ( uint32_t ) queue_total_bytes ( conn - > input_queue ) ;
rsp - > etcp . input_queue_packets = ( uint32_t ) queue_entry_count ( conn - > input_queue ) ;
rsp - > etcp . input_send_q_bytes = ( uint32_t ) queue_total_bytes ( conn - > input_send_q ) ;
rsp - > etcp . input_send_q_packets = ( uint32_t ) queue_entry_count ( conn - > input_send_q ) ;
rsp - > etcp . input_wait_ack_bytes = ( uint32_t ) queue_total_bytes ( conn - > input_wait_ack ) ;
rsp - > etcp . input_wait_ack_packets = ( uint32_t ) queue_entry_count ( conn - > input_wait_ack ) ;
rsp - > etcp . ack_q_bytes = ( uint32_t ) queue_total_bytes ( conn - > ack_q ) ;
rsp - > etcp . ack_q_packets = ( uint32_t ) queue_entry_count ( conn - > ack_q ) ;
rsp - > etcp . recv_q_bytes = ( uint32_t ) queue_total_bytes ( conn - > recv_q ) ;
rsp - > etcp . recv_q_packets = ( uint32_t ) queue_entry_count ( conn - > recv_q ) ;
rsp - > etcp . output_queue_bytes = ( uint32_t ) queue_total_bytes ( conn - > output_queue ) ;
rsp - > etcp . output_queue_packets = ( uint32_t ) queue_entry_count ( conn - > output_queue ) ;
/* Error counters */
rsp - > etcp . reinit_count = conn - > reinit_count ;
rsp - > etcp . reset_count = conn - > reset_count ;
rsp - > etcp . pkt_format_errors = ( conn - > links & & conn - > links - > conn ) ? ( uint32_t ) conn - > links - > conn - > pkt_format_errors : 0 ;
/* Timer flags */
rsp - > etcp . retrans_timer_active = ( conn - > retrans_timer ! = NULL ) ? 1 : 0 ;
rsp - > etcp . ack_resp_timer_active = ( conn - > ack_resp_timer ! = NULL ) ? 1 : 0 ;
/* Fill TUN metrics */
if ( instance - > tun ) {
@ -756,6 +781,9 @@ static void send_metrics(struct control_server* server, struct control_client* c
link_info [ i ] . nat_changes_count = link - > nat_changes_count ;
link_info [ i ] . rtt_last = link - > rtt_last ;
link_info [ i ] . tt_last = link - > tt_last ;
link_info [ i ] . init_timer_active = ( link - > init_timer ! = NULL ) ? 1 : 0 ;
link_info [ i ] . keepalive_timer_active = ( link - > keepalive_timer ! = NULL ) ? 1 : 0 ;
link_info [ i ] . shaper_timer_active = ( link - > shaper_timer ! = NULL ) ? 1 : 0 ;
link = link - > next ;
}