xref: /openbmc/qemu/net/colo.h (revision 59509ec16b7ee92b3f8261c554023aa1d3169317)
1*59509ec1SZhang Chen /*
2*59509ec1SZhang Chen  * COarse-grain LOck-stepping Virtual Machines for Non-stop Service (COLO)
3*59509ec1SZhang Chen  * (a.k.a. Fault Tolerance or Continuous Replication)
4*59509ec1SZhang Chen  *
5*59509ec1SZhang Chen  * Copyright (c) 2016 HUAWEI TECHNOLOGIES CO., LTD.
6*59509ec1SZhang Chen  * Copyright (c) 2016 FUJITSU LIMITED
7*59509ec1SZhang Chen  * Copyright (c) 2016 Intel Corporation
8*59509ec1SZhang Chen  *
9*59509ec1SZhang Chen  * Author: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
10*59509ec1SZhang Chen  *
11*59509ec1SZhang Chen  * This work is licensed under the terms of the GNU GPL, version 2 or
12*59509ec1SZhang Chen  * later.  See the COPYING file in the top-level directory.
13*59509ec1SZhang Chen  */
14*59509ec1SZhang Chen 
15*59509ec1SZhang Chen #ifndef QEMU_COLO_PROXY_H
16*59509ec1SZhang Chen #define QEMU_COLO_PROXY_H
17*59509ec1SZhang Chen 
18*59509ec1SZhang Chen #include "slirp/slirp.h"
19*59509ec1SZhang Chen 
20*59509ec1SZhang Chen #define HASHTABLE_MAX_SIZE 16384
21*59509ec1SZhang Chen 
22*59509ec1SZhang Chen typedef struct Packet {
23*59509ec1SZhang Chen     void *data;
24*59509ec1SZhang Chen     union {
25*59509ec1SZhang Chen         uint8_t *network_header;
26*59509ec1SZhang Chen         struct ip *ip;
27*59509ec1SZhang Chen     };
28*59509ec1SZhang Chen     uint8_t *transport_header;
29*59509ec1SZhang Chen     int size;
30*59509ec1SZhang Chen } Packet;
31*59509ec1SZhang Chen 
32*59509ec1SZhang Chen int parse_packet_early(Packet *pkt);
33*59509ec1SZhang Chen void connection_hashtable_reset(GHashTable *connection_track_table);
34*59509ec1SZhang Chen Packet *packet_new(const void *data, int size);
35*59509ec1SZhang Chen void packet_destroy(void *opaque, void *user_data);
36*59509ec1SZhang Chen 
37*59509ec1SZhang Chen #endif /* QEMU_COLO_PROXY_H */
38