@@ -1323,6 +1323,10 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
sock_compare_sec_in_ip,
sock_compare_sec_in_port);
+ APPEND_COLO_SOCK_SERVER(sock_compare_notify_id,
+ sock_compare_notify_ip,
+ sock_compare_notify_port);
+
APPEND_COLO_SOCK_SERVER(sock_redirector0_id,
sock_redirector0_ip,
sock_redirector0_port);
@@ -1364,13 +1368,15 @@ static int libxl__build_device_model_args_new(libxl__gc *gc,
}
if (nics[i].colo_compare_pri_in &&
nics[i].colo_compare_sec_in &&
- nics[i].colo_compare_out) {
+ nics[i].colo_compare_out &&
+ nics[i].colo_compare_notify_dev) {
flexarray_append(dm_args, "-object");
flexarray_append(dm_args,
- GCSPRINTF("colo-compare,id=c1,primary_in=%s,secondary_in=%s,outdev=%s",
+ GCSPRINTF("colo-compare,id=c1,primary_in=%s,secondary_in=%s,outdev=%s,notify_dev=%s",
nics[i].colo_compare_pri_in,
nics[i].colo_compare_sec_in,
- nics[i].colo_compare_out));
+ nics[i].colo_compare_out,
+ nics[i].colo_compare_notify_dev));
}
}
ioemu_nics++;
@@ -212,6 +212,9 @@ static void libxl__device_nic_add(libxl__egc *egc, uint32_t domid,
MAYBE_ADD_COLO_ARGS(sock_compare_sec_in_id);
MAYBE_ADD_COLO_ARGS(sock_compare_sec_in_ip);
MAYBE_ADD_COLO_ARGS(sock_compare_sec_in_port);
+ MAYBE_ADD_COLO_ARGS(sock_compare_notify_id);
+ MAYBE_ADD_COLO_ARGS(sock_compare_notify_ip);
+ MAYBE_ADD_COLO_ARGS(sock_compare_notify_port);
MAYBE_ADD_COLO_ARGS(sock_redirector0_id);
MAYBE_ADD_COLO_ARGS(sock_redirector0_ip);
MAYBE_ADD_COLO_ARGS(sock_redirector0_port);
@@ -232,6 +235,7 @@ static void libxl__device_nic_add(libxl__egc *egc, uint32_t domid,
MAYBE_ADD_COLO_ARGS(compare_pri_in);
MAYBE_ADD_COLO_ARGS(compare_sec_in);
MAYBE_ADD_COLO_ARGS(compare_out);
+ MAYBE_ADD_COLO_ARGS(compare_notify_dev);
MAYBE_ADD_COLO_ARGS(sock_sec_redirector0_id);
MAYBE_ADD_COLO_ARGS(sock_sec_redirector0_ip);
@@ -418,6 +422,9 @@ static int libxl__device_nic_from_xenstore(libxl__gc *gc,
CHECK_COLO_ARGS(sock_compare_sec_in_id);
CHECK_COLO_ARGS(sock_compare_sec_in_ip);
CHECK_COLO_ARGS(sock_compare_sec_in_port);
+ CHECK_COLO_ARGS(sock_compare_notify_id);
+ CHECK_COLO_ARGS(sock_compare_notify_ip);
+ CHECK_COLO_ARGS(sock_compare_notify_port);
CHECK_COLO_ARGS(sock_redirector0_id);
CHECK_COLO_ARGS(sock_redirector0_ip);
CHECK_COLO_ARGS(sock_redirector0_port);
@@ -438,6 +445,7 @@ static int libxl__device_nic_from_xenstore(libxl__gc *gc,
CHECK_COLO_ARGS(compare_pri_in);
CHECK_COLO_ARGS(compare_sec_in);
CHECK_COLO_ARGS(compare_out);
+ CHECK_COLO_ARGS(compare_notify_dev);
CHECK_COLO_ARGS(sock_sec_redirector0_id);
CHECK_COLO_ARGS(sock_sec_redirector0_ip);
CHECK_COLO_ARGS(sock_sec_redirector0_port);
@@ -639,6 +639,9 @@ libxl_device_nic = Struct("device_nic", [
("colo_sock_compare_sec_in_id", string),
("colo_sock_compare_sec_in_ip", string),
("colo_sock_compare_sec_in_port", string),
+ ("colo_sock_compare_notify_id", string),
+ ("colo_sock_compare_notify_ip", string),
+ ("colo_sock_compare_notify_port", string),
("colo_sock_redirector0_id", string),
("colo_sock_redirector0_ip", string),
("colo_sock_redirector0_port", string),
@@ -659,6 +662,7 @@ libxl_device_nic = Struct("device_nic", [
("colo_compare_pri_in", string),
("colo_compare_sec_in", string),
("colo_compare_out", string),
+ ("colo_compare_notify_dev", string),
("colo_sock_sec_redirector0_id", string),
("colo_sock_sec_redirector0_ip", string),
("colo_sock_sec_redirector0_port", string),
@@ -494,6 +494,12 @@ int parse_nic_config(libxl_device_nic *nic, XLU_Config **config, char *token)
replace_string(&nic->colo_sock_compare_pri_in_ip, oparg);
} else if (MATCH_OPTION("colo_sock_compare_pri_in_port", token, oparg)) {
replace_string(&nic->colo_sock_compare_pri_in_port, oparg);
+ } else if (MATCH_OPTION("colo_sock_compare_notify_id", token, oparg)) {
+ replace_string(&nic->colo_sock_compare_notify_id, oparg);
+ } else if (MATCH_OPTION("colo_sock_compare_notify_ip", token, oparg)) {
+ replace_string(&nic->colo_sock_compare_notify_ip, oparg);
+ } else if (MATCH_OPTION("colo_sock_compare_notify_port", token, oparg)) {
+ replace_string(&nic->colo_sock_compare_notify_port, oparg);
} else if (MATCH_OPTION("colo_filter_mirror_queue", token, oparg)) {
replace_string(&nic->colo_filter_mirror_queue, oparg);
} else if (MATCH_OPTION("colo_filter_mirror_outdev", token, oparg)) {
@@ -516,6 +522,8 @@ int parse_nic_config(libxl_device_nic *nic, XLU_Config **config, char *token)
replace_string(&nic->colo_compare_sec_in, oparg);
} else if (MATCH_OPTION("colo_compare_out", token, oparg)) {
replace_string(&nic->colo_compare_out, oparg);
+ } else if (MATCH_OPTION("colo_compare_notify_dev", token, oparg)) {
+ replace_string(&nic->colo_compare_notify_dev, oparg);
} else if (MATCH_OPTION("colo_sock_sec_redirector0_id", token, oparg)) {
replace_string(&nic->colo_sock_sec_redirector0_id, oparg);
Xen colo-frame can use the notify way communicate with qemu colo-compare. Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com> --- tools/libxl/libxl_dm.c | 12 +++++++++--- tools/libxl/libxl_nic.c | 8 ++++++++ tools/libxl/libxl_types.idl | 4 ++++ tools/xl/xl_parse.c | 8 ++++++++ 4 files changed, 29 insertions(+), 3 deletions(-)