From patchwork Wed May 17 15:35:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Storm, Christian" X-Patchwork-Id: 1782743 X-Patchwork-Delegate: sbabic@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:4864:20::439; helo=mail-wr1-x439.google.com; envelope-from=swupdate+bncbdd6bwv65qpbbt7isorqmgqexybla4y@googlegroups.com; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.a=rsa-sha256 header.s=20221208 header.b=IGDFQIPE; dkim-atps=neutral Received: from mail-wr1-x439.google.com (mail-wr1-x439.google.com [IPv6:2a00:1450:4864:20::439]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QLxyb0yZRz20KF for ; Thu, 18 May 2023 01:35:49 +1000 (AEST) Received: by mail-wr1-x439.google.com with SMTP id ffacd0b85a97d-3079c6648e3sf575476f8f.2 for ; Wed, 17 May 2023 08:35:49 -0700 (PDT) ARC-Seal: i=3; a=rsa-sha256; t=1684337744; cv=pass; d=google.com; s=arc-20160816; b=nN1f+OGKEDlZ86MwqLjpPug18Rj/qVXgw4c34dZ+hX/Cr2qgslwMTnqJgyOmH60IbT 9D2Fv9TuBNxjcXwhWCvCYJzX/0ddEM/e9flBX6kwN6FR4MQ58LiywQAHizw8MODMlgW4 AaJxpYNouw4VjmyCV6RPEXBUXXaSXmsP+d5ZHbqh1VmxzIatXoz/j8fzpZPaLlFtA5uZ mRM37BQZ2uldlkljlBL7daHs+US9iwkkm7GAZEoX1i/hw9JVWz3sPATRM5jtGk1+Nty0 POrdfYMuBtBi2ic8epVcI8rQfr5Ny721hJ7BCiAseExeigh3QY+Wdsu+4hsfLwjQn8+t U0CQ== ARC-Message-Signature: i=3; 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:reply-to:mime-version:message-id :date:subject:cc:to:from:dkim-signature; bh=GXNLWp7xwrg0amqY3wckP2GIOi6CzTwODZpb4V+HjhY=; b=uKKtfysuYAdRqNNXFKZ9X16CmtH4AtSza6kJ5A0VkuR7uNOgdML3cqxZjZdKpbxBoB 69IX0qoJm4dvyNhBBbTeA+dBBbIVUMAsc13WDRzbVlcOMjSs4wn1c8AT6RupVPV6ZuYU /Xe7nHrdPvIoJnqysOc9QGPkPrfITX+K7ZGLfOly+FPhXTDHF7NeYg/r9whiWq8oOOSK y/aaYMmVaVCrTaGdikiCDe2ePz6n6o80FV0MEiwwGFAfkXi8n8vPrn+1FyRdgnrRh6FF GbLtSIqjkU+Sa63KOuvoBA+q1CCFb6LwKxkbPeClkvmf6v6649CM6R9wUdGYplmc/dv9 xIrQ== ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=q4cykKnR; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of christian.storm@siemens.com designates 2a01:111:f400:7e1b::614 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20221208; t=1684337744; x=1686929744; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GXNLWp7xwrg0amqY3wckP2GIOi6CzTwODZpb4V+HjhY=; b=IGDFQIPEqoH0ckiv2fknge1FhO1WNBZYmhR+/+XfqXcBMyZqDujH5mXWEemKu/sAHG YIKfP2TfV+TGJqIJ5xypYBhsyevEHVm0FY87CTgr5+g2nmWgyxOhUmNJ9yQRqx32M5ll V3H/BZSbgKo08S/RhLa7qebvvPF00fTWkTH+AvaRaT4r6C4j8o6NxELblg4GfOWwe2LO ljUQvLp8PWAA0FHRuhF104mJUD6GDyroA2WKG+63ItmMkOletJ+gimuki4CkOyulKnjA XLbBIFqilMBNptLI6bzmhB+d3qGXjqxg0AuGidSl0UwoOCzRdbGl2nMjWItVJ1TjJgzo PvWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684337744; x=1686929744; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:mime-version :message-id:date:subject:cc:to:from:x-beenthere:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=GXNLWp7xwrg0amqY3wckP2GIOi6CzTwODZpb4V+HjhY=; b=FI/xObfbeAsBubq5WT6GX2pCWTbb3H+VxCRnllhB4oskS8muVmBF+EVEoCPN4TFSbP 022AI7bwltKxIlGXW4E7wTMbjWMF+XyPEygn2jNuFR4YNRjokfQSDeOWb4knwTX/5LIj VxF31rN3l+JJacJXux6sm64cmbNbSNfkulxGaBVJbXDGdmbAMW35kreVKglaei6jB0h+ I8BcBe3tOOI79b5B1uAIjHza5HgiUKoEpGu6VPD2mxiUP+37Ci8It8JT6mhQuW9pSOoY 95xgnX1ucs9ADqbtCPdu+l/f0JITMU2sukeqyBY6aSrw02cPZRiUZUXA8oa2kCzgrkeA +AaA== X-Gm-Message-State: AC+VfDznrDly3LiTKT6lqq35XBRWtwMAPrypqapL6OcYSz2FC0uo7I4v ISgaFTI/0a/LNTL91lJjkcY= X-Google-Smtp-Source: ACHHUZ56Fq1U26qvDZXTCzz2EivvRR6XSoR0l6q9PR88tenxd2QnxGIlDJYLES57QJZluhMCNYZaiA== X-Received: by 2002:adf:ea51:0:b0:307:a4ee:4a29 with SMTP id j17-20020adfea51000000b00307a4ee4a29mr240254wrn.2.1684337743900; Wed, 17 May 2023 08:35:43 -0700 (PDT) X-BeenThere: swupdate@googlegroups.com Received: by 2002:a05:600c:4445:b0:3f1:68f0:7451 with SMTP id v5-20020a05600c444500b003f168f07451ls1583976wmn.3.-pod-canary-gmail; Wed, 17 May 2023 08:35:42 -0700 (PDT) X-Received: by 2002:a05:600c:20f:b0:3f4:2267:10c0 with SMTP id 15-20020a05600c020f00b003f4226710c0mr25639477wmi.28.1684337742215; Wed, 17 May 2023 08:35:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1684337742; cv=pass; d=google.com; s=arc-20160816; b=i4ieT+oowj4oRqXUbr4p4ApHO3l8g3pCBQqNF3umZFQbW4/d4xEE6xTLzLvRS1QxEs 28/yhT+2rEG5hxKrl4BP3NOKbNWrmh/LZHvu0JBIG4zRsukjnBXcdegpGWlSKLXLuNP+ 0qfQH/kAUY/2GsvqjEvt8wZehA0HF1R98WdA51FNzHnLu8iQf0NhVeGY8zESnVkpn7Qx kfslBY5gGD1UVssfO2PqZQfw/ZzQS/iEATliLhD4rI+yJ5w8AagHPHvU9i/YCbVv2S3t LUP7aoysyuEaJVrbJBXONMwob4ZMGLe8jCwdNIFNEh9c9wQUjjxIE8NFFDrKcohJvgnb eO9Q== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-transfer-encoding:message-id:date:subject:cc :to:from:dkim-signature; bh=3/G9wk37yO7eDMrcFYJkjsA8mpSG2VRUwCMdCECCknE=; b=tMenYDmFI55yVH8nTNk6gbIP/6myOW4Zu6+Inwut8nC0Q+cYW90BJyRrwqoxCiqh4b vSgADivR8qp7JDOenK5tf8+xbz3/jwWiYdbT7GjdXZ3RS4qIeZY7KAUxXe/9O9dlIj9f fIhrMofLed7vsa/AUXUGu+BclFV4brYGHo3x7EPTTxCKeh6u4x6rbJRyUEzGWKouQBNs k9uiikxaz6/M/7LjhGfAwPntCffHde5M3lERGXGLSlGGc89n6qAXrkr2j6+nG/2ZWYrz RpysJmOIhOG1j7z73xu+nOpvpt/N80sVNAzd2rpGd7FsCvILdhi/d/a5ZFi8RbfCkuCS NqjA== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=q4cykKnR; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of christian.storm@siemens.com designates 2a01:111:f400:7e1b::614 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20614.outbound.protection.outlook.com. [2a01:111:f400:7e1b::614]) by gmr-mx.google.com with ESMTPS id fm27-20020a05600c0c1b00b003f4241e235esi180864wmb.0.2023.05.17.08.35.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 May 2023 08:35:42 -0700 (PDT) Received-SPF: pass (google.com: domain of christian.storm@siemens.com designates 2a01:111:f400:7e1b::614 as permitted sender) client-ip=2a01:111:f400:7e1b::614; ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m/KFm+Fn14aJG2gqee96A60AQGTfOdoavhRRmcy7d5c9NdkRtszi7pDHCZTJywVKU81iCm/9AUpKUs/3H1fsTh0z4UJoM+7V/wMu+whqs9p/GkEYTXiCmTdigstNB/PjR87DDJG15QG5GxeUANNkq7hkXQdywmhmk0OnxbJlw0DJYfJ0Q710swEXYvczlx5QQ7AIEmi10WRPAQ5xxoAuvuAT0EI+HTWzMZBkY9ZiUycAnHoepWX81JQ04ejJdN14piT9XqZQs+k0gImao/BAawH8LxG4KpZbYnc1IF/WgBXAfxAXlM7XHUi3d5SXXaz/O7HxqI0xwnDUYoy4L3NQbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3/G9wk37yO7eDMrcFYJkjsA8mpSG2VRUwCMdCECCknE=; b=UrIZxS4Nzpn/+XZT9TQFQAVi176Mvpc/PP0IK9Z9mpJUri3ggd9L1HrOZNjjZjHm/Z4KCQJJbUZYYKW9ZhzPk7E4XNhQ8LlGB6qmoUs2mRKj9MOblM1TlhzHrdWcTzjZ1fdmMZc2EUq5+puoaXIiksElibQx/YpYPRax2hjCq7pOuAkknFr3cN1+aqKq+M5Lw+zKF8qAzWTVNjClXYoOgyLQ2MrQAlsQnU1uff7WdUrrI80CW4K9UR2Kr1nUpAuVCSU4lQH/06UUCL/CqUInfZH/l3r7j3QWwr45CHdlqHop0zUqmJIHvsLsF4iZq44ROF5t0adhuqq8NEG7auedFA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none Received: from DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:333::17) by AS8PR10MB7972.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:567::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6387.32; Wed, 17 May 2023 15:35:40 +0000 Received: from DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM ([fe80::6bed:3b93:4756:c9f3]) by DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM ([fe80::6bed:3b93:4756:c9f3%5]) with mapi id 15.20.6387.032; Wed, 17 May 2023 15:35:40 +0000 X-Patchwork-Original-From: "'Christian Storm' via swupdate" From: "Storm, Christian" To: swupdate@googlegroups.com Cc: Christian Storm Subject: [swupdate] [PATCH 1/3] suricatta/lua: Add IPC types / definitions to spec Date: Wed, 17 May 2023 17:35:48 +0200 Message-Id: <20230517153550.262808-1-christian.storm@siemens.com> X-Mailer: git-send-email 2.40.1 X-ClientProxiedBy: FR0P281CA0171.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b4::12) To DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:333::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR10MB5404:EE_|AS8PR10MB7972:EE_ X-MS-Office365-Filtering-Correlation-Id: 953dea8a-7f65-4a2f-cf34-08db56ec5eaf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Wyr6AbgbwqJjYdGncvcBnXI2BglMrES4vba7/fwWK2ez5CO4T8zEaFI0VuZAgGpiRlw3LsxY1JBsgG3/4+0+IC0Xyj/HChfkKqSiBwlWKFGiVrxspOdOq/XhVXApZR7neqdE4U4U7Qxq8/JF5PI0wnlDte/OswdSd2YIOYAK/yjLuETjMJPKb8apsFRrs+9Wth7v6NUQC7q6yykS2BNllNZGZgDaoQzMmu0lm1TeEXVxTCocUXtxNT6kaAW2zzPkkRPzoPzvHDbD/VMnsxIDgLHaHIcuGXpLPgyIlRw42AqY7Gtn38b5Ryq97vYT2lMafkwmoHq/BOCzZIh9iVQhF1dA9QHiNzkEGsFU+1N3Nos9Xr1Nrb578J/gTMbhq6EX5wImJqoStRaR/gBTXf4+aTppWYKu2Sph5mO8FnfUL56Io5S0q4zE0PqBMv3TW0O860sKhuWiHg5AhB8xEhPgYzsvs5XaB2JqEPIhMNfyBCLeaJ6E0E9Neo6YcTBWajKYql2mGtTM0i87mQB95aawgNhxpBVzF3HfdRvPwkx9ljDnC2cJl2jquAr2bUY+5bW9 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230028)(4636009)(136003)(366004)(39860400002)(376002)(346002)(396003)(451199021)(86362001)(36756003)(6486002)(4326008)(478600001)(66946007)(66476007)(66556008)(6916009)(316002)(5660300002)(2906002)(8936002)(41300700001)(8676002)(44832011)(38100700002)(82960400001)(6506007)(1076003)(6512007)(186003)(2616005)(107886003)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eQOw5aVNXdXujLu0y64IBASYQtirch8+dzY7YOLR+AFTSnkPAYA6YS0MUhu07uZ7m0NPbBgAZwHn7eo9HubRw0BN6PX2zwPLWVRq9XIO4RK8uUgOFvbL1ahqfdQ/63QWkVOSwu8MA1F+5MPHRVobcq9lOG8n+EV5KM2dkQ7Bhr4h7irfSZ9SE/Hgh2NfDuoMcbvUSXHmvio0H52TP8qm1mQR9C7Zcs1nlmeC0Kt012u9CXmP8dDw+clmzxAGoubEgLv29ZvUmez872wfAxpULv8ToRDPjijlcvUowmLpHChiBQ6Xx6T/lp2rXJW8QmG7JO4yOHhuFgskw6FuvAh2BL3fUfN/o9gvLRq22LDSGl9+6mAcWm1W20ODtCPzzFM4tPiXiPky6sQF4x2Og19QnDEhpgVuj86ktFDulh0jH9pKPVRrS/BWSMnFNBIqmPsa7gtuLfAh88sfWs/BcSSakb7c1gox09wn+f+y5yybID2q83jjtnOCzWZJ4bO9g0861oFUapnb3oXOPNW7ffUUSQcZ8kTqzWoNN1mfW9MRDpuZ8xxoAemfeVYGyHUJfYERjr1fdMrxKYZGIz+5tjUKJ9iqcCFS9Ws6MhE5a8/uyTarvP11vC8aRIuDWMCCJgqUNq+EiNC70ul3btND0lviWGQzo0wLOZTfkFUcGEfp76Y3HgY09yEhH4Flg81a9AXPGdsLYrYbvruBekJPe9eMZnHezDSKwKi7p1wLFNlNJ8zc7Vpc4KyAD7CNT4DnFdvxcAXbXtrz3bGbFf9zKvNRZ/HKTDTzfHlOl4dSz8FtRln26QN4U5UQSvihP6x+fRJOX8kA4qJi57A1npwFmvegxLw8BXpWUjPV0AYXBgTnDRXpsKeeGDHoX5Q6hRsIN+KjQbvcW5eVb0RlKPzl/uJF0GvIbSCFMPC3cZIc/tCsNrU/d6ZAnhngzpQ1y8asWvbozGvufLKlZd3AFMz7OT3rMa0fLB2r+N/GNg00c0a/dhYlsgx2PA7o33f32rudAo2o5ggqbJQjQJqn7QjX4pxIswGwaVqFjPp3GKN74u1u+fCR6ktrTxgjkNDotjFLOlf5rUQ6c1qsQxYeQx5dfSLk9QNNg35na87k1CE9vAZ4ML1XrOjTupUNsU/YOMFqP9gxjYezbk2CZ9SKbxaI7gDoVIN9zRKSQhGsH0bt1L7QbEUJQxhgqRw2VGbhb71bBmi76LL70aaac5q68/4G8NdHX3Npu3DaPUP5OJr6JP+S6R/rUnC3+sS44/+V8cgYGEvD26hdCsPcf4WQVFMMs32gqiNLeMT5mqVDvmPL+HYhnL3TzEW/hLR0gjJWiUGWvrBO3In7aOgrPjR7hboOsweWX696sx+WizqiYYf8sc+WySIndJX0XMMIKNkrzzmCpzqerJm8dzQnB/moVqgTPtTuTFXzt1+tSKrGAUgRCgDgDpEFfBbXIADT+VqoPAj82qFPpcdZuMtw7LAmZoUAegNlZy90OqeabWcLSXmJMXmSfVlwiiZrdCWvFUXDx+18TFyALIuIGJhbtcv6nwj1hDITvBYmOSH+M3P+f1uIjNrn4OPVqeSaEP96k/M0A/p2Go1KRTYIOePIG2kiSeTV/JFNyqXlJQUNM3gA1KNFLbh+8uV349z6f+q/AmEc/XhYFdfLWKrNo14bjkClCW8wyjIR/w== X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: 953dea8a-7f65-4a2f-cf34-08db56ec5eaf X-MS-Exchange-CrossTenant-AuthSource: DB9PR10MB5404.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 May 2023 15:35:40.7410 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2M/xNFR7apTD6gDMlenzVCghzBZgqulZSnrSuzyAjV0kXZ0HrJPwpHg3XAUCaipS8yDF3mSPHYalSv9ZYZNGviShUYkTaVxPiglMg/c+wno= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB7972 X-Original-Sender: christian.storm@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=selector2 header.b=q4cykKnR; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of christian.storm@siemens.com designates 2a01:111:f400:7e1b::614 as permitted sender) smtp.mailfrom=christian.storm@siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Christian Storm Reply-To: Christian Storm 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: , Move SWUpdate IPC types and definitions from the 'General Purpose HTTP Server' example to the Lua interface specification as it's generally useful for Suricatta Lua Modules. Signed-off-by: Christian Storm --- examples/suricatta/swupdate_suricatta.lua | 80 ++--------------------- suricatta/server_lua.c | 24 +++++++ suricatta/suricatta.lua | 72 ++++++++++++++++++++ 3 files changed, 101 insertions(+), 75 deletions(-) diff --git a/examples/suricatta/swupdate_suricatta.lua b/examples/suricatta/swupdate_suricatta.lua index f1d2da60..3f01b0ce 100644 --- a/examples/suricatta/swupdate_suricatta.lua +++ b/examples/suricatta/swupdate_suricatta.lua @@ -252,49 +252,6 @@ end -- suricatta.server.register(check_cancel_callback, suricatta.server.CALLBACK_CHECK_CANCEL) ---- Lua equivalent of `sourcetype` as in `include/swupdate_status.h`. --- ---- @type table ---- @class sourcetype ---- @field SOURCE_UNKNOWN number 0 ---- @field SOURCE_WEBSERVER number 1 ---- @field SOURCE_SURICATTA number 2 ---- @field SOURCE_DOWNLOADER number 3 ---- @field SOURCE_LOCAL number 4 ---- @field SOURCE_CHUNKS_DOWNLOADER number 5 - - ---- Lua equivalent of `RECOVERY_STATUS` as in `include/swupdate_status.h`. --- ---- @type table ---- @class RECOVERY_STATUS ---- @field IDLE number 0 ---- @field START number 1 ---- @field RUN number 2 ---- @field SUCCESS number 3 ---- @field FAILURE number 4 ---- @field DOWNLOAD number 5 ---- @field DONE number 6 ---- @field SUBPROCESS number 7 ---- @field PROGRESS number 8 - - ---- Lua equivalent of `progress_msg` as in `include/progress_ipc.h`. --- ---- @class progress_msg ---- @field magic number SWUpdate IPC magic number ---- @field status RECOVERY_STATUS Update status ---- @field dwl_percent number Percent of downloaded data ---- @field nsteps number Total steps count ---- @field cur_step number Current step ---- @field cur_percent number Percent in current step ---- @field cur_image string Name of the current image to be installed ---- @field hnd_name string Name of the running handler ---- @field source sourcetype The source that has triggered the update ---- @field info string Additional information about the installation ---- @field jsoninfo table If `info` is JSON, according Lua Table - - --- Progress thread callback handling progress reporting to remote. -- -- Deliberately just uploading the JSON content while not respecting @@ -306,8 +263,8 @@ end -- is suspended in the call to suricatta.{install,download}(). While this is -- safe, both callback functions should take care not to starve each other. -- ---- @param message progress_msg The progress message ---- @return suricatta.status # Suricatta return code +--- @param message suricatta.ipc.progress_msg The progress message +--- @return suricatta.status # Suricatta return code function progress_callback(message) if not gs.channel.progress then return suricatta.status.OK @@ -560,40 +517,13 @@ end suricatta.server.register(send_target_data, suricatta.server.SEND_TARGET_DATA) ---- Lua "enum" of IPC commands as in `include/network_ipc.h` --- --- `CMD_ENABLE` is not passed through and hence not in `ipc_commands` as --- it's handled directly in `suricatta/suricatta.c`. --- ---- @type table ---- @class ipc_commands ---- @field ACTIVATION number 0 ---- @field CONFIG number 1 ---- @field GET_STATUS number 3 - ---- Lua-alike of `ipc_message` as in `include/network_ipc.h` --- --- Note: Some members are deliberately not passed through to the Lua realm --- such as `ipc_message.data.len` as that's handled by the C-to-Lua bridge --- transparently. --- Also, this is not a direct equivalent as, e.g., the `json` field is not --- present in `struct ipc_message`, but rather it's a "sensible" selection. --- ---- @class ipc_message ---- @field magic number SWUpdate IPC magic number ---- @field commands ipc_commands IPC commands ---- @field cmd number Command number, one of `ipc_commands`'s values ---- @field msg string String data sent via IPC ---- @field json table If `msg` is JSON, JSON as Lua Table - - --- Handle IPC messages sent to Suricatta Lua module. -- -- Lua counterpart of `server_op_res_t server_ipc(ipc_message *msg)`. -- ---- @param message ipc_message The IPC message sent ---- @return string # IPC reply string ---- @return suricatta.status # Suricatta return code +--- @param message suricatta.ipc.ipc_message The IPC message sent +--- @return string # IPC JSON reply string +--- @return suricatta.status # Suricatta return code function ipc(message) if not (message or {}).json then return escape([[{ "request": "IPC requests must be JSON formatted" }]], { ['"'] = '"' }), diff --git a/suricatta/server_lua.c b/suricatta/server_lua.c index bdf34084..60133a80 100644 --- a/suricatta/server_lua.c +++ b/suricatta/server_lua.c @@ -1569,7 +1569,31 @@ static int suricatta_lua_module(lua_State *L) lua_newtable(L); luaL_setfuncs(L, lua_funcs_bootloader_env, 0); lua_settable(L, -3); + lua_settable(L, -3); + lua_pushstring(L, "ipc"); + lua_newtable(L); + lua_pushstring(L, "sourcetype"); + lua_newtable(L); + push_to_table(L, "SOURCE_UNKNOWN", SOURCE_UNKNOWN); + push_to_table(L, "SOURCE_WEBSERVER", SOURCE_WEBSERVER); + push_to_table(L, "SOURCE_SURICATTA", SOURCE_SURICATTA); + push_to_table(L, "SOURCE_DOWNLOADER", SOURCE_DOWNLOADER); + push_to_table(L, "SOURCE_LOCAL", SOURCE_LOCAL); + push_to_table(L, "SOURCE_CHUNKS_DOWNLOADER", SOURCE_CHUNKS_DOWNLOADER); + lua_settable(L, -3); + lua_pushstring(L, "RECOVERY_STATUS"); + lua_newtable(L); + push_to_table(L, "IDLE", IDLE); + push_to_table(L, "START", START); + push_to_table(L, "RUN", RUN); + push_to_table(L, "SUCCESS", SUCCESS); + push_to_table(L, "FAILURE", FAILURE); + push_to_table(L, "DOWNLOAD", DOWNLOAD); + push_to_table(L, "DONE", SUBPROCESS); + push_to_table(L, "SUBPROCESS", SUBPROCESS); + push_to_table(L, "PROGRESS", PROGRESS); + lua_settable(L, -3); lua_settable(L, -3); lua_pushstring(L, "status"); diff --git a/suricatta/suricatta.lua b/suricatta/suricatta.lua index bfcb3be5..c61d483f 100644 --- a/suricatta/suricatta.lua +++ b/suricatta/suricatta.lua @@ -386,4 +386,76 @@ suricatta.get_tmpdir = function() end suricatta.getversion = function() end +--- SWUpdate IPC types and definitions. +-- +--- @class suricatta.ipc +suricatta.ipc = {} + +--- @enum suricatta.ipc.sourcetype +--- Lua equivalent of `sourcetype` as in `include/swupdate_status.h`. +suricatta.ipc.sourcetype = { + SOURCE_UNKNOWN = 0, + SOURCE_WEBSERVER = 1, + SOURCE_SURICATTA = 2, + SOURCE_DOWNLOADER = 3, + SOURCE_LOCAL = 4, + SOURCE_CHUNKS_DOWNLOADER = 5 +} + +--- @enum suricatta.ipc.RECOVERY_STATUS +--- Lua equivalent of `RECOVERY_STATUS` as in `include/swupdate_status.h`. +suricatta.ipc.RECOVERY_STATUS = { + IDLE = 0, + START = 1, + RUN = 2, + SUCCESS = 3, + FAILURE = 4, + DOWNLOAD = 5, + DONE = 6, + SUBPROCESS = 7, + PROGRESS = 8 +} + +--- Lua-alike of `progress_msg` as in `include/progress_ipc.h`. +-- +--- @class suricatta.ipc.progress_msg +--- @field magic number SWUpdate IPC magic number +--- @field status suricatta.ipc.RECOVERY_STATUS Update status +--- @field dwl_percent number Percent of downloaded data +--- @field nsteps number Total steps count +--- @field cur_step number Current step +--- @field cur_percent number Percent in current step +--- @field cur_image string Name of the current image to be installed (max: 256 chars) +--- @field hnd_name string Name of the running handler (max: 64 chars) +--- @field source suricatta.ipc.sourcetype The source that has triggered the update +--- @field info string Additional information about the installation (max: 2048 chars) +--- @field jsoninfo table If `info` is JSON, according Lua Table + +--- Lua enum of IPC commands as in `include/network_ipc.h`. +-- +-- `CMD_ENABLE` is not passed through and hence not in `ipc_commands` +-- as it's handled directly in `suricatta/suricatta.c`. +-- +--- @type {[string]: number} +--- @class suricatta.ipc.ipc_commands +--- @field ACTIVATION number 0 +--- @field CONFIG number 1 +--- @field GET_STATUS number 3 + +--- Lua-alike of `ipc_message` as in `include/network_ipc.h`. +-- +-- Note: Some members are deliberately not passed through to the Lua +-- realm such as `ipc_message.data.len` since that's transparently +-- handled by the C-to-Lua bridge. +-- Note: This is not a direct equivalent but rather a "sensible" selection +-- as, e.g., the `json` field is not present in `struct ipc_message`. +-- +--- @class suricatta.ipc.ipc_message +--- @field magic number SWUpdate IPC magic number +--- @field commands suricatta.ipc.ipc_commands IPC commands +--- @field cmd number Command number, one of `ipc_commands`'s values +--- @field msg string String data sent via IPC +--- @field json table If `msg` is JSON, JSON as Lua Table + + return suricatta