COLO-Proxy: Add colo-compare notify args
authorZhang Chen <zhangchen.fnst@cn.fujitsu.com>
Mon, 6 Mar 2017 02:59:24 +0000 (10:59 +0800)
committerWei Liu <wei.liu2@citrix.com>
Tue, 14 Mar 2017 11:36:48 +0000 (11:36 +0000)
Xen colo-frame can use the notify way communicate with
qemu colo-compare.

Signed-off-by: Zhang Chen <zhangchen.fnst@cn.fujitsu.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/libxl/libxl_dm.c
tools/libxl/libxl_nic.c
tools/libxl/libxl_types.idl
tools/xl/xl_parse.c

index 0fabd64714a5723ff55151d8f88c88f7bac7fc0a..4344c5349f586a07bb301b4d2d37574bd5b7da3f 100644 (file)
@@ -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++;
index 5e1fecd92c2bf0021d37b73579e27ba2f3e31adc..33954a2fe73a8047663f217ff0b98a9f9c3aa001 100644 (file)
@@ -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);
index 47e96b1232007a3ad9c0d0714e856f8dcc37d0fd..516bd792ec2cc62ba0e1e0822c1f6b5e51c38ea5 100644 (file)
@@ -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),
index d2bbe266ed7bb62e0853635a3001c427cac0fc7e..77e91c872dbab3d33143fa22e2a0ee9f87e01e98 100644 (file)
@@ -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);