From nobody Mon Feb 9 05:41:03 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1608050214; cv=none; d=zohomail.com; s=zohoarc; b=Y9G8Ed4WL+MuxReNDCASmkkBphqh4xdRLna8FAOiJVm2t3YjN+28hIfM2tlkHuhsY81/i+GBth2FCj6aYw38fxE+ZMNJFcxxMmMAkZLu7IC6sWNQ00H6PWtgtZjxc7iv46+M5mvWixHsUQLdtbbeLsO4g3GAlMr/d7qSgf0+uOk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608050214; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=sDAZDUZnLGJmS+Y9/23vLX8k1ckhg9TgdsR5cTt0Hbc=; b=ktGRcaNXkYVh28sjxu3VNEkmjwGa8WEj7HfLN7Fka3kqhNSJ6nsH5xbR5OA0JqSEelZN741mGBVk+dTGmLXqsFw6RjviRfVtX8cygQqDUPXEYooJYSYalxM6QTbtjlPTEH1MaPjrr045gc8I+pxa+iWC8MGXGbsCKG4sJoERU+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1608050214598363.4557511756997; Tue, 15 Dec 2020 08:36:54 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.54550.94948 (Exim 4.92) (envelope-from ) id 1kpDJW-0006s5-4T; Tue, 15 Dec 2020 16:36:38 +0000 Received: by outflank-mailman (output) from mailman id 54550.94948; Tue, 15 Dec 2020 16:36:38 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kpDJV-0006rP-SS; Tue, 15 Dec 2020 16:36:37 +0000 Received: by outflank-mailman (input) for mailman id 54550; Tue, 15 Dec 2020 16:36:36 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1kpDJU-00066M-Hk for xen-devel@lists.xenproject.org; Tue, 15 Dec 2020 16:36:36 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 6a6e8cc7-3db9-4848-9c53-86f1bff27f9a; Tue, 15 Dec 2020 16:36:12 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 2C46CAF8D; Tue, 15 Dec 2020 16:36:09 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 6a6e8cc7-3db9-4848-9c53-86f1bff27f9a X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1608050169; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sDAZDUZnLGJmS+Y9/23vLX8k1ckhg9TgdsR5cTt0Hbc=; b=IesJbGGKovHNVj2Tp6PkcohkjOpjXZ3paIMcB9zpe1vd2KjLssLMRNYaVnk5SWT7v7+cS8 jzvleg+GbmH7LwMiSq5sZWLL5XXxg+fxqlfYoVPgGiZ2SC/vE4Nf8S1Z3S07uHq37UeYky V2vourtvMtnWNDDn9qqGCAnnGQMZuzE= From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Ian Jackson , Wei Liu , Paul Durrant , Julien Grall Subject: [PATCH v10 07/25] tools/xenstore: add basic live-update command parsing Date: Tue, 15 Dec 2020 17:35:45 +0100 Message-Id: <20201215163603.21700-8-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201215163603.21700-1-jgross@suse.com> References: <20201215163603.21700-1-jgross@suse.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) Content-Type: text/plain; charset="utf-8" Add the basic parts for parsing the live-update control command. For now only add the parameter evaluation and calling appropriate functions. Those function only print a message for now and return success. Signed-off-by: Juergen Gross Reviewed-by: Paul Durrant Reviewed-by: Julien Grall --- V2: - keep consistent style in lu_arch() (Pawel Wieczorkiewicz) - fix handling of force flag (Pawel Wieczorkiewicz) - use xprintf() instead of trace() for better stubdom diag - add conn parameter to subfunctions V4: - make several parameters/variables const (Julien Grall) - don't reject an option specified multiple times (Julien Grall) - use syslog() for messages Signed-off-by: Juergen Gross --- tools/xenstore/xenstored_control.c | 105 ++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 1 deletion(-) diff --git a/tools/xenstore/xenstored_control.c b/tools/xenstore/xenstored_= control.c index 00fda5acdb..e3f0d34528 100644 --- a/tools/xenstore/xenstored_control.c +++ b/tools/xenstore/xenstored_control.c @@ -19,7 +19,9 @@ #include #include #include +#include #include +#include =20 #include "utils.h" #include "talloc.h" @@ -149,12 +151,113 @@ static int do_control_print(void *ctx, struct connec= tion *conn, return 0; } =20 +static const char *lu_abort(const void *ctx, struct connection *conn) +{ + syslog(LOG_INFO, "live-update: abort\n"); + return NULL; +} + +static const char *lu_cmdline(const void *ctx, struct connection *conn, + const char *cmdline) +{ + syslog(LOG_INFO, "live-update: cmdline %s\n", cmdline); + return NULL; +} + +#ifdef __MINIOS__ +static const char *lu_binary_alloc(const void *ctx, struct connection *con= n, + unsigned long size) +{ + syslog(LOG_INFO, "live-update: binary size %lu\n", size); + return NULL; +} + +static const char *lu_binary_save(const void *ctx, struct connection *conn, + unsigned int size, const char *data) +{ + return NULL; +} + +static const char *lu_arch(const void *ctx, struct connection *conn, + char **vec, int num) +{ + if (num =3D=3D 2 && !strcmp(vec[0], "-b")) + return lu_binary_alloc(ctx, conn, atol(vec[1])); + if (num > 2 && !strcmp(vec[0], "-d")) + return lu_binary_save(ctx, conn, atoi(vec[1]), vec[2]); + + errno =3D EINVAL; + return NULL; +} +#else +static const char *lu_binary(const void *ctx, struct connection *conn, + const char *filename) +{ + syslog(LOG_INFO, "live-update: binary %s\n", filename); + return NULL; +} + +static const char *lu_arch(const void *ctx, struct connection *conn, + char **vec, int num) +{ + if (num =3D=3D 2 && !strcmp(vec[0], "-f")) + return lu_binary(ctx, conn, vec[1]); + + errno =3D EINVAL; + return NULL; +} +#endif + +static const char *lu_start(const void *ctx, struct connection *conn, + bool force, unsigned int to) +{ + syslog(LOG_INFO, "live-update: start, force=3D%d, to=3D%u\n", force, to); + return NULL; +} + static int do_control_lu(void *ctx, struct connection *conn, char **vec, int num) { const char *resp; + const char *ret =3D NULL; + unsigned int i; + bool force =3D false; + unsigned int to =3D 0; + + if (num < 1) + return EINVAL; + + if (!strcmp(vec[0], "-a")) { + if (num =3D=3D 1) + ret =3D lu_abort(ctx, conn); + else + return EINVAL; + } else if (!strcmp(vec[0], "-c")) { + if (num =3D=3D 2) + ret =3D lu_cmdline(ctx, conn, vec[1]); + else + return EINVAL; + } else if (!strcmp(vec[0], "-s")) { + for (i =3D 1; i < num; i++) { + if (!strcmp(vec[i], "-F")) + force =3D true; + else if (!strcmp(vec[i], "-t") && i < num - 1) { + i++; + to =3D atoi(vec[i]); + } else + return EINVAL; + } + ret =3D lu_start(ctx, conn, force, to); + } else { + errno =3D 0; + ret =3D lu_arch(ctx, conn, vec, num); + if (errno) + return errno; + } =20 - resp =3D talloc_strdup(ctx, "NYI"); + if (!ret) + ret =3D "OK"; + resp =3D talloc_strdup(ctx, ret); send_reply(conn, XS_CONTROL, resp, strlen(resp) + 1); return 0; } --=20 2.26.2