[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 4/4] colo: add trace for the tcp packet compariso
From: |
Mao Zhongyi |
Subject: |
[Qemu-devel] [PATCH v2 4/4] colo: add trace for the tcp packet comparison |
Date: |
Wed, 6 Dec 2017 17:57:28 +0800 |
Cc: Zhang Chen <address@hidden>
Cc: Li Zhijian <address@hidden>
Cc: Jason Wang <address@hidden>
Signed-off-by: Mao Zhongyi <address@hidden>
---
net/colo-compare.c | 16 ++++++++++++++++
net/colo.c | 1 +
net/colo.h | 1 +
net/trace-events | 1 +
4 files changed, 19 insertions(+)
diff --git a/net/colo-compare.c b/net/colo-compare.c
index 683ec4e..db1f586 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -129,6 +129,7 @@ static void fill_pkt_tcp_info(void *data, uint32_t *max_ack)
+ (tcphd->th_off << 2) - pkt->vnet_hdr_len;
pkt->payload_size = pkt->size - pkt->header_size;
pkt->seq_end = pkt->tcp_seq + pkt->payload_size;
+ pkt->flags = tcphd->th_flags;
}
/*
@@ -369,6 +370,16 @@ sec:
}
if (colo_mark_tcp_pkt(ppkt, spkt, &mark, min_ack)) {
+ trace_colo_compare_tcp_info("pri",
+ ppkt->tcp_seq, ppkt->tcp_ack,
+ ppkt->header_size, ppkt->payload_size,
+ ppkt->offset, ppkt->flags);
+
+ trace_colo_compare_tcp_info("sec",
+ spkt->tcp_seq, spkt->tcp_ack,
+ spkt->header_size, spkt->payload_size,
+ spkt->offset, spkt->flags);
+
if (mark == COLO_COMPARE_FREE_PRIMARY) {
conn->compare_seq = ppkt->seq_end;
colo_release_primary_pkt(s, ppkt);
@@ -387,6 +398,11 @@ sec:
goto pri;
}
} else {
+ qemu_hexdump((char *)ppkt->data, stderr,
+ "colo-compare ppkt", ppkt->size);
+ qemu_hexdump((char *)spkt->data, stderr,
+ "colo-compare spkt", spkt->size);
+
g_queue_push_head(&conn->primary_list, ppkt);
g_queue_push_head(&conn->secondary_list, spkt);
diff --git a/net/colo.c b/net/colo.c
index a7a7117..8426265 100644
--- a/net/colo.c
+++ b/net/colo.c
@@ -171,6 +171,7 @@ Packet *packet_new(const void *data, int size, int
vnet_hdr_len)
pkt->header_size = 0;
pkt->payload_size = 0;
pkt->offset = 0;
+ pkt->flags = 0;
return pkt;
}
diff --git a/net/colo.h b/net/colo.h
index aa08374..da6c36d 100644
--- a/net/colo.h
+++ b/net/colo.h
@@ -53,6 +53,7 @@ typedef struct Packet {
uint16_t payload_size; /* the payload length */
/* record the payload offset(the length that has been compared) */
uint16_t offset;
+ uint8_t flags; /* Flags(aka Control bits) */
} Packet;
typedef struct ConnectionKey {
diff --git a/net/trace-events b/net/trace-events
index 7b7cae5..7b594cf 100644
--- a/net/trace-events
+++ b/net/trace-events
@@ -13,6 +13,7 @@ colo_compare_icmp_miscompare(const char *sta, int size) ": %s
= %d"
colo_compare_ip_info(int psize, const char *sta, const char *stb, int ssize,
const char *stc, const char *std) "ppkt size = %d, ip_src = %s, ip_dst = %s,
spkt size = %d, ip_src = %s, ip_dst = %s"
colo_old_packet_check_found(int64_t old_time) "%" PRId64
colo_compare_miscompare(void) ""
+colo_compare_tcp_info(const char *pkt, uint32_t seq, uint32_t ack, int hdlen,
int pdlen, int offset, int flags) "%s: seq/ack= %u/%u hdlen= %d pdlen= %d
offset= %d flags=%d\n"
# net/filter-rewriter.c
colo_filter_rewriter_debug(void) ""
--
2.9.4