add packet type raw and pseudo

This commit is contained in:
luwenpeng
2024-11-13 14:43:38 +08:00
parent 8349a631e1
commit 492a7fb8ea
10 changed files with 65 additions and 52 deletions

View File

@@ -136,7 +136,7 @@ static void on_packet_forward(struct packet *pkt, enum packet_stage stage, void
struct session *sess = session_manager_rte_lookup_session_by_packet(sess_mgr_rte, pkt);
if (sess == NULL)
{
if (packet_is_ctrl(pkt))
if (packet_get_type(pkt) == PACKET_TYPE_PSEUDO)
{
goto fast_path;
}
@@ -154,7 +154,7 @@ static void on_packet_forward(struct packet *pkt, enum packet_stage stage, void
}
else
{
if (packet_is_ctrl(pkt))
if (packet_get_type(pkt) == PACKET_TYPE_PSEUDO)
{
goto ctrl_path;
}
@@ -226,17 +226,17 @@ static void on_packet_output(struct packet *pkt, enum packet_stage stage, void *
flow = FLOW_TYPE_S2C;
}
int is_ctrl = packet_is_ctrl(pkt);
int is_pseudo = (packet_get_type(pkt) == PACKET_TYPE_PSEUDO);
uint16_t len = packet_get_raw_len(pkt);
switch (packet_get_action(pkt))
{
case PACKET_ACTION_DROP:
session_inc_stat(sess, flow, (is_ctrl ? STAT_CONTROL_PACKETS_DROPPED : STAT_RAW_PACKETS_DROPPED), 1);
session_inc_stat(sess, flow, (is_ctrl ? STAT_CONTROL_BYTES_DROPPED : STAT_RAW_BYTES_DROPPED), len);
session_inc_stat(sess, flow, (is_pseudo ? STAT_PSEUDO_PACKETS_DROPPED : STAT_RAW_PACKETS_DROPPED), 1);
session_inc_stat(sess, flow, (is_pseudo ? STAT_PSEUDO_BYTES_DROPPED : STAT_RAW_BYTES_DROPPED), len);
break;
case PACKET_ACTION_FORWARD:
session_inc_stat(sess, flow, (is_ctrl ? STAT_CONTROL_PACKETS_TRANSMITTED : STAT_RAW_PACKETS_TRANSMITTED), 1);
session_inc_stat(sess, flow, (is_ctrl ? STAT_CONTROL_BYTES_TRANSMITTED : STAT_RAW_BYTES_TRANSMITTED), len);
session_inc_stat(sess, flow, (is_pseudo ? STAT_PSEUDO_PACKETS_TRANSMITTED : STAT_RAW_PACKETS_TRANSMITTED), 1);
session_inc_stat(sess, flow, (is_pseudo ? STAT_PSEUDO_BYTES_TRANSMITTED : STAT_RAW_BYTES_TRANSMITTED), len);
break;
default:
assert(0);

View File

@@ -412,14 +412,14 @@ int session_to_str(const struct session *sess, int bref, char *buff, int size)
used += snprintf(buff + used, size - used, "\"%s_injected_bytes_success\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_INJECTED_BYTES_SUCCESS));
// control packets
used += snprintf(buff + used, size - used, "\"%s_control_packets_received\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_PACKETS_RECEIVED));
used += snprintf(buff + used, size - used, "\"%s_control_bytes_received\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_BYTES_RECEIVED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_packets_received\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_PACKETS_RECEIVED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_bytes_received\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_BYTES_RECEIVED));
used += snprintf(buff + used, size - used, "\"%s_control_packets_transmitted\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_PACKETS_TRANSMITTED));
used += snprintf(buff + used, size - used, "\"%s_control_bytes_transmitted\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_BYTES_TRANSMITTED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_packets_transmitted\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_PACKETS_TRANSMITTED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_bytes_transmitted\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_BYTES_TRANSMITTED));
used += snprintf(buff + used, size - used, "\"%s_control_packets_dropped\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_PACKETS_DROPPED));
used += snprintf(buff + used, size - used, "\"%s_control_bytes_dropped\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_CONTROL_BYTES_DROPPED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_packets_dropped\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_PACKETS_DROPPED));
used += snprintf(buff + used, size - used, "\"%s_pseudo_bytes_dropped\":%" PRIu64 ",", str[i], session_get_stat(sess, type[i], STAT_PSEUDO_BYTES_DROPPED));
if (session_get_type(sess) == SESSION_TYPE_TCP)
{