Allow passing up to 5 arguments to the ext program via the query parameters. URI example: qemu+ext:///system?command=/bin/prog&ext_arg1=192.168.0.10&ext_arg2=8080 Signed-off-by: Sergey Dyasli <sergey.dyasli@nutanix.com> --- src/remote/remote_driver.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index ec71eaed8762..e5f425da74bf 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -805,6 +805,11 @@ static int doRemoteOpenExtractURIArgs(virConnectPtr conn, char **name, char **command, + char **extArg1, + char **extArg2, + char **extArg3, + char **extArg4, + char **extArg5, char **sockname, char **authtype, char **sshauth, @@ -829,6 +834,11 @@ doRemoteOpenExtractURIArgs(virConnectPtr conn, EXTRACT_URI_ARG_STR("name", *name); EXTRACT_URI_ARG_STR("command", *command); + EXTRACT_URI_ARG_STR("ext_arg1", *extArg1); + EXTRACT_URI_ARG_STR("ext_arg2", *extArg2); + EXTRACT_URI_ARG_STR("ext_arg3", *extArg3); + EXTRACT_URI_ARG_STR("ext_arg4", *extArg4); + EXTRACT_URI_ARG_STR("ext_arg5", *extArg5); EXTRACT_URI_ARG_STR("socket", *sockname); EXTRACT_URI_ARG_STR("auth", *authtype); EXTRACT_URI_ARG_STR("sshauth", *sshauth); @@ -895,6 +905,11 @@ doRemoteOpen(virConnectPtr conn, g_autofree char *tls_priority = NULL; g_autofree char *name = NULL; g_autofree char *command = NULL; + g_autofree char *extArg1 = NULL; + g_autofree char *extArg2 = NULL; + g_autofree char *extArg3 = NULL; + g_autofree char *extArg4 = NULL; + g_autofree char *extArg5 = NULL; g_autofree char *sockname = NULL; g_autofree char *netcat = NULL; g_autofree char *port = NULL; @@ -945,6 +960,11 @@ doRemoteOpen(virConnectPtr conn, if (doRemoteOpenExtractURIArgs(conn, &name, &command, + &extArg1, + &extArg2, + &extArg3, + &extArg4, + &extArg5, &sockname, &authtype, &sshauth, @@ -1195,7 +1215,8 @@ doRemoteOpen(virConnectPtr conn, break; case REMOTE_DRIVER_TRANSPORT_EXT: { - char const *cmd_argv[] = { command, NULL }; + char const *cmd_argv[] = { command, extArg1, extArg2, extArg3, + extArg4, extArg5, NULL }; if (!(priv->client = virNetClientNewExternal(cmd_argv))) goto error; -- 2.39.3