From patchwork Fri Nov 4 06:20:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Joerg Vehlow X-Patchwork-Id: 1699335 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=LcU+tidQ; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=jv-coder.de header.i=@jv-coder.de header.a=rsa-sha256 header.s=dkim header.b=UdAXunu6; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (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 4N3VwX0N3Vz23ls for ; Fri, 4 Nov 2022 17:24:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cQRE2ExKGxmUE3R1mU12hkW6LjlL/yEEvbp8KNVhsYQ=; b=LcU+tidQG5GTwN tB1mEODk01qkk5BYcqMYhPlb/57IcIFtO78uvSfTSm6uVZvSm0xXDxnhRYjQQPaQIi8AmdniICvkg oakyy/KiB82TSIHLqD/6GpwZHCAT9fkVCcxPvErDFF1GUCqqcbJ9E2IK4qsHA0vqp/HZiKqIpI5dO 8yYO9cXc04g41KsjB4HteB1upI0PJrsEzRh/aBMou/lAFnZH2V1+P3j74JxdSbtV1Zkv38Se0+XHH PbRBpY3QCBGX0Zzotv1NdfMrtQDOYljijYBAuSas6bxOR/XaOnD2ZFxattwkFBJKUpzmgflxZecSO dXwp8+LOvH9X0ROgU1uQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oqq50-002VsY-B9; Fri, 04 Nov 2022 06:21:26 +0000 Received: from mail.jv-coder.de ([5.9.79.73]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oqq4g-002Vjh-9p for openwrt-devel@lists.openwrt.org; Fri, 04 Nov 2022 06:21:09 +0000 Received: from ubuntu.localdomain (unknown [188.192.100.83]) by mail.jv-coder.de (Postfix) with ESMTPSA id 5457BA0A4A; Fri, 4 Nov 2022 06:21:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jv-coder.de; s=dkim; t=1667542861; bh=jdf2NL4dYmLYsF1a07dWLqSdVoLMq4+Z2Rv2FGLqzkY=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=UdAXunu6RX7cg4Wew2BKuukUBYUwLm8o/wN7bVyyi1PrI9JPBxVuzrI5KZT6K4nBB mYWMm0Orq+NHGN6ELLh+VQzEEJaW7mV3t+J4sWBeNvVF7fIxCijnNe7zoGpZzSsXfY MnPpJGy8lPNi3XqxIxm4jxZqZZX/nMaB8WWFaOUY= From: Joerg Vehlow To: openwrt-devel@lists.openwrt.org Cc: Joerg Vehlow Subject: [PATCH 2/6] add device setting for disabeling arp Date: Fri, 4 Nov 2022 07:20:49 +0100 Message-Id: <20221104062053.1236988-3-lkml@jv-coder.de> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221104062053.1236988-1-lkml@jv-coder.de> References: <20221104062053.1236988-1-lkml@jv-coder.de> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,UNPARSEABLE_RELAY autolearn=disabled version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mail X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221103_232106_558924_B68B4201 X-CRM114-Status: GOOD ( 11.25 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Joerg Vehlow --- device.c | 7 +++++++ device.h | 3 +++ system-linux.c | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/device.c b/device.c index 4f55906..9ed50ef 100644 --- a/device.c +++ b/device.c @@ -65,6 +65,7 @@ static const struct blobmsg_policy dev_attrs[__DEV_ATTR_MAX] = { [DEV_ATTR_DUPLEX] = { .n [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Joerg Vehlow --- device.c | 7 +++++++ device.h | 3 +++ system-linux.c | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/device.c b/device.c index 4f55906..9ed50ef 100644 --- a/device.c +++ b/device.c @@ -65,6 +65,7 @@ static const struct blobmsg_policy dev_attrs[__DEV_ATTR_MAX] = { [DEV_ATTR_DUPLEX] = { .name = "duplex", .type = BLOBMSG_TYPE_BOOL }, [DEV_ATTR_IP_FORWARDING] = { .name = "ip_forwarding", .type = BLOBMSG_TYPE_BOOL}, [DEV_ATTR_IP6_FORWARDING] = { .name = "ip6_forwarding", .type = BLOBMSG_TYPE_BOOL}, + [DEV_ATTR_ARP] = { .name = "arp", .type = BLOBMSG_TYPE_BOOL}, }; const struct uci_blob_param_list device_attr_list = { @@ -284,6 +285,7 @@ device_merge_settings(struct device *dev, struct device_settings *n) n->duplex = s->flags & DEV_OPT_DUPLEX ? s->duplex : os->duplex; n->ip_forwarding = s->flags & DEV_OPT_IP_FORWARDING ? s->ip_forwarding : os->ip_forwarding; n->ip6_forwarding = s->flags & DEV_OPT_IP6_FORWARDING ? s->ip6_forwarding : os->ip6_forwarding; + n->arp = s->flags & DEV_OPT_ARP ? s->arp : os->arp; n->flags = s->flags | os->flags | os->valid_flags; } @@ -478,6 +480,11 @@ device_init_settings(struct device *dev, struct blob_attr **tb) s->flags |= DEV_OPT_IP6_FORWARDING; } + if ((cur = tb[DEV_ATTR_ARP])) { + s->arp = blobmsg_get_bool(cur); + s->flags |= DEV_OPT_ARP; + } + device_set_disabled(dev, disabled); } diff --git a/device.h b/device.h index 066f537..f78bbcb 100644 --- a/device.h +++ b/device.h @@ -64,6 +64,7 @@ enum { DEV_ATTR_DUPLEX, DEV_ATTR_IP_FORWARDING, DEV_ATTR_IP6_FORWARDING, + DEV_ATTR_ARP, __DEV_ATTR_MAX, }; @@ -130,6 +131,7 @@ enum { DEV_OPT_DUPLEX = (1ULL << 31), DEV_OPT_IP_FORWARDING = (1ULL << 32), DEV_OPT_IP6_FORWARDING = (1ULL << 33), + DEV_OPT_ARP = (1ULL << 34), }; /* events broadcasted to all users of a device */ @@ -209,6 +211,7 @@ struct device_settings { bool duplex; bool ip_forwarding; bool ip6_forwarding; + bool arp; }; /* diff --git a/system-linux.c b/system-linux.c index 6232a26..7b82e17 100644 --- a/system-linux.c +++ b/system-linux.c @@ -1736,6 +1736,9 @@ system_if_get_settings(struct device *dev, struct device_settings *s) s->multicast = ifr.ifr_flags & IFF_MULTICAST; s->flags |= DEV_OPT_MULTICAST; + + s->arp = !(ifr.ifr_flags & IFF_NOARP); + s->arp |= DEV_OPT_ARP; } if (!system_get_rpfilter(dev, buf, sizeof(buf))) { @@ -1929,6 +1932,10 @@ system_if_apply_settings(struct device *dev, struct device_settings *s, uint64_t system_set_ip_forwarding(dev, s->ip_forwarding ? "1" : "0"); if (apply_mask & DEV_OPT_IP6_FORWARDING) system_set_ip6_forwarding(dev, s->ip6_forwarding ? "1" : "0"); + if (apply_mask & DEV_OPT_ARP) { + if (system_if_flags(dev->ifname, !s->arp ? IFF_NOARP : 0, s->arp ? IFF_NOARP : 0) < 0) + s->flags &= ~DEV_OPT_ARP; + } system_set_ethtool_settings(dev, s); }