From nobody Tue Feb 10 01:16:12 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=1610638741; cv=none; d=zohomail.com; s=zohoarc; b=Y0JhPDxltllM//UtbTp9w+xBVJMJdjposAYdot/Lra2iqZx1wc5NJaJ9MJ1tJcqU7YBtOayvxFtAnBZew7B/zadvQLBYR4oJxrv/NQ5yf+I+f8Kkf3QjvP22d1kFZGI06zvqWK3aC1zAKvykyyiCg6L6lDe0kWgTPqvR0ulKJ+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610638741; 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=/nflSyskC2kS0M54iM8hYwK5qRRqM3a5TA3r174vCRE=; b=OA2QsbLWVbXiRSyTWVEjh8JzhWwbf065xOZ1PbGmk3cmNY+J/al+3Ie0TrT3lLlL6moh/cncewpYUvCg6r1wdx+bICIid7xMnoZ+UtdYNZIW9diofJFu4a3W9SBVALuKbYhR6YSpsb5qsV8jDgj1/P2SXMowaBoKAWS0AoxVRWc= 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 1610638741332982.9479475648499; Thu, 14 Jan 2021 07:39:01 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.67219.119860 (Exim 4.92) (envelope-from ) id 1l04hy-0003R6-IT; Thu, 14 Jan 2021 15:38:46 +0000 Received: by outflank-mailman (output) from mailman id 67219.119860; Thu, 14 Jan 2021 15:38:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l04hy-0003Qc-5A; Thu, 14 Jan 2021 15:38:46 +0000 Received: by outflank-mailman (input) for mailman id 67219; Thu, 14 Jan 2021 15:38:44 +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 1l04hw-0002Sh-JN for xen-devel@lists.xenproject.org; Thu, 14 Jan 2021 15:38:44 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id c05357bf-316d-4d21-b443-9784992fea9e; Thu, 14 Jan 2021 15:38:10 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 7042CAED7; Thu, 14 Jan 2021 15:38:08 +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: c05357bf-316d-4d21-b443-9784992fea9e 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=1610638688; 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=/nflSyskC2kS0M54iM8hYwK5qRRqM3a5TA3r174vCRE=; b=L3KPxNJi/3apLs82SsjIgo5xSecUQLacvNNEwZjJUxvH2EcFMoxI6ZoMFk+1Y3vmjcIqzh Q5SWa2xqsAHGFhQMGx/OrIA9BqhAAB5d4l/cmkt4lkJ3oUxyBOTIubCq2Y/Z845ue28iqf FxebIEha/J1ZCsYHu9vqVYMx29Hehls= From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Ian Jackson , Wei Liu , Paul Durrant , Julien Grall Subject: [PATCH v11 08/27] tools/xenstore: add basic live-update command parsing Date: Thu, 14 Jan 2021 16:37:44 +0100 Message-Id: <20210114153803.2591-9-jgross@suse.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210114153803.2591-1-jgross@suse.com> References: <20210114153803.2591-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 --- 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