Commit 3037e7a5 authored by Zhang Chen's avatar Zhang Chen Committed by Jason Wang
Browse files

net/colo-compare.c: Introduce parameter for compare_chr_send()



This patch change the compare_chr_send() parameter from CharBackend to CompareState,
we can get more information like vnet_hdr(We use it to support packet with vnet_header).

Signed-off-by: default avatarZhang Chen <zhangchen.fnst@cn.fujitsu.com>
Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
parent ada1a33f
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -97,7 +97,7 @@ enum {
    SECONDARY_IN,
};

static int compare_chr_send(CharBackend *out,
static int compare_chr_send(CompareState *s,
                            const uint8_t *buf,
                            uint32_t size);

@@ -483,7 +483,7 @@ static void colo_compare_connection(void *opaque, void *user_data)
        }

        if (result) {
            ret = compare_chr_send(&s->chr_out, pkt->data, pkt->size);
            ret = compare_chr_send(s, pkt->data, pkt->size);
            if (ret < 0) {
                error_report("colo_send_primary_packet failed");
            }
@@ -504,7 +504,7 @@ static void colo_compare_connection(void *opaque, void *user_data)
    }
}

static int compare_chr_send(CharBackend *out,
static int compare_chr_send(CompareState *s,
                            const uint8_t *buf,
                            uint32_t size)
{
@@ -515,12 +515,12 @@ static int compare_chr_send(CharBackend *out,
        return 0;
    }

    ret = qemu_chr_fe_write_all(out, (uint8_t *)&len, sizeof(len));
    ret = qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)&len, sizeof(len));
    if (ret != sizeof(len)) {
        goto err;
    }

    ret = qemu_chr_fe_write_all(out, (uint8_t *)buf, size);
    ret = qemu_chr_fe_write_all(&s->chr_out, (uint8_t *)buf, size);
    if (ret != size) {
        goto err;
    }
@@ -665,7 +665,7 @@ static void compare_pri_rs_finalize(SocketReadState *pri_rs)

    if (packet_enqueue(s, PRIMARY_IN)) {
        trace_colo_compare_main("primary: unsupported packet in");
        compare_chr_send(&s->chr_out, pri_rs->buf, pri_rs->packet_len);
        compare_chr_send(s, pri_rs->buf, pri_rs->packet_len);
    } else {
        /* compare connection */
        g_queue_foreach(&s->conn_list, colo_compare_connection, s);
@@ -774,7 +774,7 @@ static void colo_flush_packets(void *opaque, void *user_data)

    while (!g_queue_is_empty(&conn->primary_list)) {
        pkt = g_queue_pop_head(&conn->primary_list);
        compare_chr_send(&s->chr_out, pkt->data, pkt->size);
        compare_chr_send(s, pkt->data, pkt->size);
        packet_destroy(pkt, NULL);
    }
    while (!g_queue_is_empty(&conn->secondary_list)) {