From patchwork Thu Mar 11 11:40:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefano Babic X-Patchwork-Id: 1451089 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::53a; helo=mail-ed1-x53a.google.com; envelope-from=swupdate+bncbcxploxj6ikrbpudvcbamgqe6gps4oa@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20161025 header.b=F2ds9dAb; dkim-atps=neutral Received: from mail-ed1-x53a.google.com (mail-ed1-x53a.google.com [IPv6:2a00:1450:4864:20::53a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Dx6TH3bz4z9sXL for ; Thu, 11 Mar 2021 22:40:50 +1100 (AEDT) Received: by mail-ed1-x53a.google.com with SMTP id bi17sf9723592edb.6 for ; Thu, 11 Mar 2021 03:40:50 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1615462847; cv=pass; d=google.com; s=arc-20160816; b=MKlM886CZeaK83hpHTDp9X+ZuSf7rA+BHW1D9g5lZaq6CblS5I13Fzy7QbpOhRp+mA KkylhUzOrOMJH8adm+dQRUaOI+NBN0oqsVonZHPsUV+Ka84e+Ox9cHU2yyxOSLbrKV0N 10c4QYEILZtSOhFf/SK+sgyeIfoaVhMM0wg6YsN9l9HX6OCWjsYNiU9m7kXdrxPQ5Xee jlGro756HuoF2OI4hs0klnp0qRrqmCPhx/aoHsSATtJzv+K0GGakXyAWIZZfC6eXFpaL BOMcI4UJC7kfC0cnpm//2v617u5mPYQrrpUt25oEZ8w/ABZIO17Dc25ERsla3fIY3ZE2 /JDw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=4u5ujwpRmpVegAkhS6oN+wxbAnNgISsXKDIeueKd9lA=; b=d4oplrjnGsD2HUNTHGRT3S6qb6053RZ8/SgRJjQY6C1o1HoDuX9sgD3WWva9xG2k1j ST6/0i/wNjGtEDDInPRqhlbdlmsAM8lQkLwrRzhJq0xqdJvtX7LJLgns0yKKk5AYmTrX 3ctriflAF7lwamnH1/Tm0Mauety/CKMeC0CDZcDKi7bQWyc1xrMf/0idYkfkD8lDk2UZ quAJZDrcgJJqE4QycFGG0BQdo+Jdr5pJYBnsTceFOKB9ixRVq34WfsjfFH4hmpWtDuPm IJVBIObQHO+Lqpx7rtazfbxEYwcSVUOWLg8DraqUZlamYtdilCjlG41210+m0HPkD+CJ wB8g== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=neutral (google.com: 2001:a60:0:28:0:1:25:1 is neither permitted nor denied by best guess record for domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=4u5ujwpRmpVegAkhS6oN+wxbAnNgISsXKDIeueKd9lA=; b=F2ds9dAbVm6uA5eIMYIyMGWepUxK4w2Ta1b0cHFLuejTPkKa7KT+oqrSErhf3bB2qR x+uUKl2XLmQ9rngnwQTDPBAIMJayfiFg3qPdAgotgn30kf6EBJIinqXycBgHpf4q+J7D 9OsHhR2hbkp5UsbyEcqlWA4Z9w0CzInSga40C4WCltsTPHq1DRfMkUAcwQl+U8BrR3+b pKTbqaQ4dvG/JzetsD1ydGuD8CiPgPMb/hSUlHQ9cTHQdHDzJQ7KMLlI8ptHpHBMBjfs wRgIVry6i/hd+vZTCMBtMsMqiOI+eXxx7tl8pRmr0p4Jns2YEHoriu/qGWMNlixQ/Lrk p57Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=4u5ujwpRmpVegAkhS6oN+wxbAnNgISsXKDIeueKd9lA=; b=SFRnSZ/5Ph6SQz4tr79r9U5qSSxiCA6tsnd2tZhK1trMz4iCk33I0ZpS3J3l/sPvzp 6+el3v4u0Hlg4zJhSC1PvLNlY67uJ5grHhpLZ8KLw2kr8GLaGZI+Ojq+5YNYV8wXth73 Ycj1yYQdbdXSobFD7AcqH6g4bI2KlYvdcXAFmaESRkG/cOwbHeTRnDgE6au78wMY4rI2 apm6B03FaiS627c/NGA1mF0SN2OYEobTh6Tk0zGd1h+DQ2+0XrBUoTign5T4oThxMkn/ Y9Qh770rAsXkAAd6yGGuTalUbFH4IZOWZXqO3yHqE8d9VVEgqGaObhFCDyN5cmDBMn4C bcVQ== Sender: swupdate@googlegroups.com X-Gm-Message-State: AOAM532BpDlYdYqUDwmy7tNgOuA82yUfGv41oV764y4IWuNLIp/1nF5v pHLaCAfd/RHR+0NYtEfqo04= X-Google-Smtp-Source: ABdhPJxGzc/W13al13MUGqiNnVfQD8dQ8ZOnc3hdYzaQNultjzC0f862XMDgJKwzIHxQQup3zW3SXQ== X-Received: by 2002:a17:906:4955:: with SMTP id f21mr2764264ejt.74.1615462846959; Thu, 11 Mar 2021 03:40:46 -0800 (PST) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a17:906:40d2:: with SMTP id a18ls179576ejk.8.gmail; Thu, 11 Mar 2021 03:40:46 -0800 (PST) X-Received: by 2002:a17:906:3899:: with SMTP id q25mr2633403ejd.157.1615462846190; Thu, 11 Mar 2021 03:40:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615462846; cv=none; d=google.com; s=arc-20160816; b=kFxD7cIP40Ei0cpu5ziXfg7tHxToJywpD6PDDDJOajOYYYVY9Xfm8o4IJFeh4KfNQm DMSIx3CeYyxCsc822l5+nrNFDzQCmBTHbnK/NO+zSnYAIObu5nVjLmptn2ubj7cTwwfP XJseFzp/ciTe+w7Zmf+wOppN6UqiPGx00fMG+N3gmBXFYb5PpGFd3FLTAGf884LBNwm9 sEKVrvb4/EGMDlxzRCPpi2lIKyaGpXKaJ4eHResAAaqt6SoQ+VrVYKviSzVSU+0UEbMh tLB+cPbSTUFiaR2usjWC4+LMQ8+JsqogAfH8LGovBsaaZcgX/lFzEO7sR7BQdrQcnl0H 5TDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=HfPTjjdotJB1rFLlP5sXdoMYb/48WrsdVlHPXryMqwk=; b=ae8wFxdklX8Oav+7TKx1J9pDsDRi5ElJT+S35LaZvcZcAXx0OeUDtdBO74JvCMLlsZ undfqO9cDqtJaCd9u48KZgegTdoPigDyjZkdFmBgL7N+2t1p2wr0zFBHwFGxWA+opEky bS5nIWP9Fg5K563ywKu/fOera2TPdHWQHKbOGaujLZK33ugFVqXve/Mj4jERZwxMVkF2 4OMUpQZ0WgmsV3CYsnFXZmYfLjtwzvvhjIv0fxUYwk/I34sdOv3m0p3XvpzD47tZA9YU UA6dBpp3uF9YFT1CDJr+XDngq4FiNPiLhZvtbwqt2+tXx6lSb2VXRAQ0uKk5pi996KtE poNg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 2001:a60:0:28:0:1:25:1 is neither permitted nor denied by best guess record for domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Received: from mail-out.m-online.net (mail-out.m-online.net. [2001:a60:0:28:0:1:25:1]) by gmr-mx.google.com with ESMTPS id f25si90094edx.4.2021.03.11.03.40.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 11 Mar 2021 03:40:46 -0800 (PST) Received-SPF: neutral (google.com: 2001:a60:0:28:0:1:25:1 is neither permitted nor denied by best guess record for domain of sbabic@denx.de) client-ip=2001:a60:0:28:0:1:25:1; Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4Dx6T96rFJz1rwn0; Thu, 11 Mar 2021 12:40:45 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.70]) by mail.m-online.net (Postfix) with ESMTP id 4Dx6T96bwPz1qr4j; Thu, 11 Mar 2021 12:40:45 +0100 (CET) X-Virus-Scanned: amavisd-new at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.70]) (amavisd-new, port 10024) with ESMTP id Pnx1KwaVW6VD; Thu, 11 Mar 2021 12:40:45 +0100 (CET) Received: from babic.homelinux.org (host-88-217-136-221.customer.m-online.net [88.217.136.221]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPS; Thu, 11 Mar 2021 12:40:45 +0100 (CET) Received: from localhost (mail.babic.homelinux.org [127.0.0.1]) by babic.homelinux.org (Postfix) with ESMTP id A8F32454016E; Thu, 11 Mar 2021 12:40:44 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at babic.homelinux.org Received: from babic.homelinux.org ([127.0.0.1]) by localhost (mail.babic.homelinux.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id X60GtVlFFQ38; Thu, 11 Mar 2021 12:40:42 +0100 (CET) Received: from paperino.fritz.box (paperino.fritz.box [192.168.178.48]) by babic.homelinux.org (Postfix) with ESMTP id AF3F84542874; Thu, 11 Mar 2021 12:40:34 +0100 (CET) From: Stefano Babic To: swupdate@googlegroups.com Cc: Stefano Babic Subject: [swupdate] [PATCH 6/6] IPC: extend to set accepted versions Date: Thu, 11 Mar 2021 12:40:31 +0100 Message-Id: <20210311114031.71507-6-sbabic@denx.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210311114031.71507-1-sbabic@denx.de> References: <20210311114031.71507-1-sbabic@denx.de> MIME-Version: 1.0 X-Original-Sender: sbabic@denx.de X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 2001:a60:0:28:0:1:25:1 is neither permitted nor denied by best guess record for domain of sbabic@denx.de) smtp.mailfrom=sbabic@denx.de Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , Add IPC to set minimum, maximum and if the current version should not be reinstalled. Signed-off-by: Stefano Babic --- core/network_thread.c | 6 ++++++ core/stream_interface.c | 20 ++++++++++++++++++++ include/installer_priv.h | 2 +- include/network_ipc.h | 12 ++++++++++-- include/util.h | 5 +++++ ipc/network_ipc-if.c | 35 +++++++++++++++++++++++++++++++++++ 6 files changed, 77 insertions(+), 3 deletions(-) diff --git a/core/network_thread.c b/core/network_thread.c index c49dba5..168ae5d 100644 --- a/core/network_thread.c +++ b/core/network_thread.c @@ -513,6 +513,12 @@ void *network_thread (void *data) #endif msg.type = NACK; break; + case SET_VERSIONS_RANGE: + msg.type = ACK; + set_version_range(msg.data.versions.minimum_version, + msg.data.versions.maximum_version, + msg.data.versions.current_version); + break; case SET_UPDATE_STATE: value = *(update_state_t *)msg.data.msg; msg.type = (is_valid_state(value) && diff --git a/core/stream_interface.c b/core/stream_interface.c index a68f557..3b2c03b 100644 --- a/core/stream_interface.c +++ b/core/stream_interface.c @@ -689,3 +689,23 @@ int get_install_info(sourcetype *source, char *buf, size_t len) return len; } + +void set_version_range(const char *minversion, + const char *maxversion, const char *current) +{ + if (minversion && strnlen(minversion, SWUPDATE_GENERAL_STRING_SIZE)) { + strlcpy(inst.software->minimum_version, minversion, + sizeof(inst.software->minimum_version)); + inst.software->no_downgrading = true; + } + if (maxversion && strnlen(maxversion, SWUPDATE_GENERAL_STRING_SIZE)) { + strlcpy(inst.software->maximum_version, maxversion, + sizeof(inst.software->maximum_version)); + inst.software->check_max_version = true; + } + if (current && strnlen(current, SWUPDATE_GENERAL_STRING_SIZE)) { + strlcpy(inst.software->current_version, current, + sizeof(inst.software->current_version)); + inst.software->no_reinstalling = true; + } +} diff --git a/include/installer_priv.h b/include/installer_priv.h index d406f27..fc02255 100644 --- a/include/installer_priv.h +++ b/include/installer_priv.h @@ -18,7 +18,7 @@ struct installer { int last_error; /* error code if installation failed */ char errormsg[64]; /* error message if installation failed */ struct swupdate_request req; - struct swupdate_cfg const *software; + struct swupdate_cfg *software; }; #endif diff --git a/include/network_ipc.h b/include/network_ipc.h index 2939cdc..1a3d957 100644 --- a/include/network_ipc.h +++ b/include/network_ipc.h @@ -36,7 +36,8 @@ typedef enum { SET_AES_KEY, SET_UPDATE_STATE, /* set bootloader ustate */ GET_UPDATE_STATE, - REQ_INSTALL_EXT + REQ_INSTALL_EXT, + SET_VERSIONS_RANGE } msgtype; /* @@ -101,6 +102,11 @@ typedef union { char key_ascii[65]; /* Key size in ASCII (256 bit, 32 bytes bin) + termination */ char ivt_ascii[33]; /* Key size in ASCII (16 bytes bin) + termination */ } aeskeymsg; + struct { + char minimum_version[256]; + char maximum_version[256]; + char current_version[256]; + } versions; } msgdata; typedef struct { @@ -129,7 +135,9 @@ int swupdate_async_start(writedata wr_func, getstatus status_func, terminated end_func, void *priv, ssize_t size); int swupdate_set_aes(char *key, char *ivt); - +int swupdate_set_version_range(const char *minversion, + const char *maxversion, + const char *currentversion); #ifdef __cplusplus } // extern "C" #endif diff --git a/include/util.h b/include/util.h index ad2e90c..2987203 100644 --- a/include/util.h +++ b/include/util.h @@ -230,6 +230,11 @@ int get_install_info(sourcetype *source, char *buf, size_t len); void get_install_swset(char *buf, size_t len); void get_install_running_mode(char *buf, size_t len); +/* Setting global information */ +void set_version_range(const char *minversion, + const char *maxversion, + const char *current); + unsigned long long ustrtoull(const char *cp, unsigned int base); const char* get_tmpdir(void); diff --git a/ipc/network_ipc-if.c b/ipc/network_ipc-if.c index f09c417..20a442e 100644 --- a/ipc/network_ipc-if.c +++ b/ipc/network_ipc-if.c @@ -172,6 +172,41 @@ int swupdate_set_aes(char *key, char *ivt) return ipc_send_cmd(&msg); } +/* + * Set via IPC the range of accepted versions + * Versions are string and they can use semver + */ +int swupdate_set_version_range(const char *minversion, + const char *maxversion, + const char *currentversion) +{ + ipc_message msg; + + memset(&msg, 0, sizeof(msg)); + msg.magic = IPC_MAGIC; + msg.type = SET_VERSIONS_RANGE; + + if (minversion) { + strncpy(msg.data.versions.minimum_version, + minversion, + sizeof(msg.data.versions.minimum_version)); + } + + if (maxversion) { + strncpy(msg.data.versions.maximum_version, + maxversion, + sizeof(msg.data.versions.maximum_version)); + } + + if (currentversion) { + strncpy(msg.data.versions.current_version, + currentversion, + sizeof(msg.data.versions.maximum_version)); + } + + return ipc_send_cmd(&msg); +} + void swupdate_prepare_req(struct swupdate_request *req) { if (!req) return;