Projects
Eulaceura:Factory
gazelle
_service:obs_scm:0082-add-keep-alive-info.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0082-add-keep-alive-info.patch of Package gazelle
From 5e6a73b66e0b231237ea3a3bbedfe4dd4d974f45 Mon Sep 17 00:00:00 2001 From: hantwofish <hankangkang5@huawei.com> Date: Mon, 11 Dec 2023 05:03:04 +0800 Subject: [PATCH] add keep-alive info --- src/common/gazelle_dfx_msg.h | 2 ++ src/lstack/core/lstack_lwip.c | 2 ++ src/ltran/ltran_dfx.c | 25 ++++++++++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/common/gazelle_dfx_msg.h b/src/common/gazelle_dfx_msg.h index 3d559c3..478c440 100644 --- a/src/common/gazelle_dfx_msg.h +++ b/src/common/gazelle_dfx_msg.h @@ -197,6 +197,8 @@ struct gazelle_stat_lstack_conn_info { uint32_t eventlist; uint32_t keepalive; uint32_t keep_idle; + uint32_t keep_intvl; + uint32_t keep_cnt; }; struct gazelle_stat_lstack_conn { diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c index c4b1ebc..cbb771f 100644 --- a/src/lstack/core/lstack_lwip.c +++ b/src/lstack/core/lstack_lwip.c @@ -1151,6 +1151,8 @@ static void copy_pcb_to_conn(struct gazelle_stat_lstack_conn_info *conn, const s conn->rcv_nxt = pcb->rcv_nxt; conn->keepalive = (ip_get_option(pcb, SOF_KEEPALIVE) != 0); conn->keep_idle = pcb->keep_idle; + conn->keep_intvl = pcb->keep_intvl; + conn->keep_cnt = pcb->keep_cnt; if (netconn != NULL && netconn->recvmbox != NULL) { conn->recv_cnt = rte_ring_count(netconn->recvmbox->ring); diff --git a/src/ltran/ltran_dfx.c b/src/ltran/ltran_dfx.c index ebe1323..2a84cb8 100644 --- a/src/ltran/ltran_dfx.c +++ b/src/ltran/ltran_dfx.c @@ -52,6 +52,7 @@ #define GAZELLE_MAX_LATENCY_TIME 1800 // max latency time 30mins #define GAZELLE_DECIMAL 10 +#define GAZELLE_KEEPALIVE_STR_LEN 35 static int32_t g_unix_fd = -1; static int32_t g_ltran_rate_show_flag = GAZELLE_OFF; // not show when first get total statistics @@ -995,6 +996,20 @@ static void gazelle_print_lstack_stat_snmp(void *buf, const struct gazelle_stat_ } while (true); } +static void gazelle_keepalive_string(char* str, int buff_len, struct gazelle_stat_lstack_conn_info *conn_info) +{ + if (conn_info->keepalive == 0) { + return; + } + int ret = sprintf_s(str, buff_len - 1, "(%u,%u,%u)", conn_info->keep_idle, conn_info->keep_intvl, + conn_info->keep_cnt); + if (ret < 0) { + printf("gazelle_keepalive_string sprintf_s fail ret=%d\n", ret); + return; + } + str[strlen(str)] = '\0'; +} + static void gazelle_print_lstack_stat_conn(void *buf, const struct gazelle_stat_msg_request *req_msg) { uint32_t i; @@ -1007,6 +1022,7 @@ static void gazelle_print_lstack_stat_conn(void *buf, const struct gazelle_stat_ struct gazelle_stat_lstack_conn *conn = &stat->data.conn; struct timeval time = {0}; gettimeofday(&time, NULL); + char keepalive_info_str[GAZELLE_KEEPALIVE_STR_LEN] = {0}; printf("Active Internet connections (servers and established)\n"); do { @@ -1014,7 +1030,7 @@ static void gazelle_print_lstack_stat_conn(void *buf, const struct gazelle_stat_ printf("No. Proto lwip_recv recv_ring in_send send_ring cwn rcv_wnd snd_wnd snd_buf snd_nxt" " lastack rcv_nxt events epoll_ev evlist fd Local Address" " Foreign Address State" - " keep-alive keep-idle\n"); + " keep-alive keep-alive(idle,intvl,cnt)\n"); uint32_t unread_pkts = 0; uint32_t unsend_pkts = 0; for (i = 0; i < conn->conn_num && i < GAZELLE_LSTACK_MAX_CONN; i++) { @@ -1027,15 +1043,18 @@ static void gazelle_print_lstack_stat_conn(void *buf, const struct gazelle_stat_ if ((conn_info->state == GAZELLE_ACTIVE_LIST) || (conn_info->state == GAZELLE_TIME_WAIT_LIST)) { inet_ntop(domain, lip, str_ip, sizeof(str_ip)); inet_ntop(domain, rip, str_rip, sizeof(str_rip)); + + gazelle_keepalive_string(keepalive_info_str, sizeof(keepalive_info_str)/sizeof(char), conn_info); + sprintf_s(str_laddr, sizeof(str_laddr), "%s:%hu", str_ip, conn_info->l_port); sprintf_s(str_raddr, sizeof(str_raddr), "%s:%hu", str_rip, conn_info->r_port); printf("%-6utcp %-10u%-10u%-8u%-10u%-9d%-9d%-10d%-10d%-15u%-15u%-15u%-10x%-10x%-7d%-7d" - "%-52s %-52s %s %-5d %-9u\n", i, conn_info->recv_cnt, conn_info->recv_ring_cnt, conn_info->in_send, + "%-52s %-52s %s %-5d %s\n", i, conn_info->recv_cnt, conn_info->recv_ring_cnt, conn_info->in_send, conn_info->send_ring_cnt, conn_info->cwn, conn_info->rcv_wnd, conn_info->snd_wnd, conn_info->snd_buf, conn_info->snd_nxt, conn_info->lastack, conn_info->rcv_nxt, conn_info->events, conn_info->epoll_events, conn_info->eventlist, conn_info->fd, str_laddr, str_raddr, tcp_state_to_str(conn_info->tcp_sub_state), - conn_info->keepalive, conn_info->keep_idle); + conn_info->keepalive, keepalive_info_str); } else if (conn_info->state == GAZELLE_LISTEN_LIST) { inet_ntop(domain, lip, str_ip, sizeof(str_ip)); sprintf_s(str_laddr, sizeof(str_laddr), "%s:%hu", str_ip, conn_info->l_port); -- 2.27.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2