From patchwork Thu Dec 21 09:17:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 17241 X-Patchwork-Delegate: sw@simonwunderlich.de Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id 0A93C81E0D; Thu, 21 Dec 2017 10:20:15 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="YwWpO+tK"; dkim-atps=neutral Received-SPF: None (mailfrom) identity=mailfrom; client-ip=2a00:1450:400c:c09::242; helo=mail-wm0-x242.google.com; envelope-from=sven.eckelmann@openmesh.com; receiver= Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by open-mesh.org (Postfix) with ESMTPS id 049D98053B for ; Thu, 21 Dec 2017 10:20:12 +0100 (CET) Received: by mail-wm0-x242.google.com with SMTP id r78so14663933wme.5 for ; Thu, 21 Dec 2017 01:20:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zBuKIs9pMwTYkuPpEQK7O9zg2D7BZwQ2v1XnJFLzUs0=; b=YwWpO+tKZKK1BHVnEmfMiN46OKWNGROhjZahfxyaLlkR+t438B0aQ3s8rrZ0x5tvFv 8jDJ1pu8VG2ncuIfRoW56pERX4wie1iY0T0HkhfgTaXOydJMrQ1RZuuri1xlT3sqJptM X0K64e1Ta8yUXHS4WR/OLm94X1kg6ZKNcuslM7+p7bp9mLHhdPgoJCmSpJTb4rXB9t53 ErxwgDc4txxpgN4kcbwHUCJp1KWDzNbDoOcOnpBH/J/YnpGd0KulDYodl5a/e1SqsF+f K0Ydapcsk8Ixw7hkgAs4/rXphf7szgSJVTvjOOHcfbZBon3oncbPt7o69wbTew/+rDuU p0Kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=zBuKIs9pMwTYkuPpEQK7O9zg2D7BZwQ2v1XnJFLzUs0=; b=fRksQgK5iZN70doXWKPWAZwi6vauMVS0ABuSAsIou2qu5UvYfZJMhuEf3BdaPMqH02 Et7YKTj4e5ixLxlAiXGHrXC8BwkimJXTLVxOrMFShZllTpjZyNypyJf4f4g6ktP+9Qpc Pa0bZN7LtOvOPklJ3gqr/mMYQqV/0h+x9xp4WM/NBK7+X3Qk1yVpSSEwORLs4PHYr0YC Be1VxH3OjGCFvze7XtSyHiEhe1tsNnmnRLUvlXqp4midNFlyqx7XT3ojxAgh3PCnmlEF XVyHm1HUInZdHKbw3cjJ+gJl3MDfBNM9OYQnLVNAdQ+LEjrzdP5PDE5OQQ69zN0W8Ylt KjNg== X-Gm-Message-State: AKGB3mL5Ifzjlk77VPEWL/m422FN6gkV0wQa/HDs71b2Ilreu4+rCCci KBVP9DXnQvpTVTVK0CZVSvAsXgeGtDc= X-Google-Smtp-Source: ACJfBotJ5dBSLu/6P9uoyNAe4wuHtqOF6oD765KE+XCCIwY6fjs7/5ouwkT1MFnqqbqr0Et5Gwdhiw== X-Received: by 10.28.198.139 with SMTP id w133mr9866314wmf.13.1513848012209; Thu, 21 Dec 2017 01:20:12 -0800 (PST) Received: from sven-desktop.home.narfation.org (p2003007C6F508A00A5003EEAB9F6E50C.dip0.t-ipconnect.de. [2003:7c:6f50:8a00:a500:3eea:b9f6:e50c]) by smtp.gmail.com with ESMTPSA id v195sm2724648wmf.25.2017.12.21.01.20.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 Dec 2017 01:20:06 -0800 (PST) From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Date: Thu, 21 Dec 2017 10:17:38 +0100 Message-Id: <20171221091742.8020-2-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171221091742.8020-1-sven.eckelmann@openmesh.com> References: <20171221091742.8020-1-sven.eckelmann@openmesh.com> Subject: [B.A.T.M.A.N.] [PATCH v4 1/5] batman-adv: Let packet.h include its headers directly X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Willem de Bruijn , netdev@vger.kernel.org, Sven Eckelmann , Jiri Pirko , linux-kernel@vger.kernel.org, Eric Dumazet , Tom Herbert Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" The headers used by packet.h should also be included by it directly. main.h is currently dealing with it in batman-adv, but this will no longer work when this header is moved to include/uapi/linux/. Signed-off-by: Sven Eckelmann --- net/batman-adv/main.h | 2 -- net/batman-adv/packet.h | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/net/batman-adv/main.h b/net/batman-adv/main.h index 5ac86df48c42..d5484ac381d3 100644 --- a/net/batman-adv/main.h +++ b/net/batman-adv/main.h @@ -217,10 +217,8 @@ enum batadv_uev_type { /* Kernel headers */ -#include /* for packet.h */ #include #include -#include /* for packet.h */ #include #include #include diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h index dccbd4a6f019..6b6563867455 100644 --- a/net/batman-adv/packet.h +++ b/net/batman-adv/packet.h @@ -20,6 +20,8 @@ #define _NET_BATMAN_ADV_PACKET_H_ #include +#include +#include #include /** From patchwork Thu Dec 21 09:17:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 17242 X-Patchwork-Delegate: sw@simonwunderlich.de Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id D3A2681E64; Thu, 21 Dec 2017 10:20:27 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="X8HbLvl2"; dkim-atps=neutral Received-SPF: None (mailfrom) identity=mailfrom; client-ip=2a00:1450:400c:c0c::242; helo=mail-wr0-x242.google.com; envelope-from=sven.eckelmann@openmesh.com; receiver= Received: from mail-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by open-mesh.org (Postfix) with ESMTPS id E1BD880999 for ; Thu, 21 Dec 2017 10:20:17 +0100 (CET) Received: by mail-wr0-x242.google.com with SMTP id h1so24544589wre.12 for ; Thu, 21 Dec 2017 01:20:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ggGs8BcqryHMDl7w4vqLn6eKszlLWq+uijQCMtKlu/A=; b=X8HbLvl2MhWmTIlMjkYfCDrzvBx9cELOeaq4hLXRCy8GjihucAjou8LRd0yiGV+1iw e5Ibk/da3raP4y6Yu/0HPc7EwoC/tDbjY4SKaTNaWOIsaLPczFFuXGKaf6/7lg3Log1m bWxmA/Gd4GMsi6JfCLL1+ao8qvRP+03uzjC8ZLDrUNLDmkXzVljU7s/fV1MdpKUcIwL+ 8+FisJagcgCm7MMe0t/m2V9Gyn/ARQBSdtaW7OVH7ndZzKqOA4gqfHzaBlcwuBCPtIhl 93blIYcWi3jhDMKAHA0cemhnI1SuAmQ8R7jrwyco3KK7rjGdI63Nx3mTVDhXIsAWTBXm peTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ggGs8BcqryHMDl7w4vqLn6eKszlLWq+uijQCMtKlu/A=; b=Pm4Jl0WO1oZjP3khOuVV6EZT6RSjyg11yZfYBvHggAxvEJBAFJXyFT6HJ/fCVLXQGI cj9Giq42L55C1YXOOAQmhf7NOVj6T7ex2bkeGeNeyhiu3OXXE13Z7cjmxGXVGnNTYYuD UEWm25FC7Zxizvczrz0nSz2zzRaZmDdZRnopDE42tLS3yoOA4lnvvf1Pe2pzBjFirS1w RmoIAJsp0cwHAV6PxjKvYx0MScp0DqwPjrUKWEr1CBY1NMZQTxERV7cA4O+FYYP1IzPP n7Q2g2kjvjEt1nITXXMCZGcyyIQZGC9Epd0rcGyFFqTUCG8UpHs4QX96bLUFr0fHcBQQ r4AQ== X-Gm-Message-State: AKGB3mLXo7+dL710t6IoZdxMih7A47BtyO/5pHF/0zkbjiKkSAlLFNSO MBGx8awB8zuGwEjiuHLoUZZA74OG4XU= X-Google-Smtp-Source: ACJfBovZC+Wx8uioi4vQePZNOihE+MxrOpFHRdwNcZBAf10mVJ4eptM5NUuV6xz7XsKt6YYPeNhPag== X-Received: by 10.223.136.118 with SMTP id e51mr10694390wre.21.1513848017210; Thu, 21 Dec 2017 01:20:17 -0800 (PST) Received: from sven-desktop.home.narfation.org (p2003007C6F508A00A5003EEAB9F6E50C.dip0.t-ipconnect.de. [2003:7c:6f50:8a00:a500:3eea:b9f6:e50c]) by smtp.gmail.com with ESMTPSA id m201sm3458912wma.13.2017.12.21.01.20.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 Dec 2017 01:20:16 -0800 (PST) From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Date: Thu, 21 Dec 2017 10:17:39 +0100 Message-Id: <20171221091742.8020-3-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171221091742.8020-1-sven.eckelmann@openmesh.com> References: <20171221091742.8020-1-sven.eckelmann@openmesh.com> Subject: [B.A.T.M.A.N.] [PATCH v4 2/5] batman-adv: Remove usage of BIT(x) in packet.h X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Willem de Bruijn , netdev@vger.kernel.org, Sven Eckelmann , Jiri Pirko , linux-kernel@vger.kernel.org, Eric Dumazet , Tom Herbert Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" The BIT(x) macro is no longer available for uapi headers because it is defined outside of it (linux/bitops.h). The use of it must therefore be avoided and replaced by an appropriate other representation. Signed-off-by: Sven Eckelmann --- net/batman-adv/packet.h | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h index 6b6563867455..44f20d03205b 100644 --- a/net/batman-adv/packet.h +++ b/net/batman-adv/packet.h @@ -20,7 +20,6 @@ #define _NET_BATMAN_ADV_PACKET_H_ #include -#include #include #include @@ -92,9 +91,9 @@ enum batadv_subtype { * one hop neighbor on the interface where it was originally received. */ enum batadv_iv_flags { - BATADV_NOT_BEST_NEXT_HOP = BIT(0), - BATADV_PRIMARIES_FIRST_HOP = BIT(1), - BATADV_DIRECTLINK = BIT(2), + BATADV_NOT_BEST_NEXT_HOP = 1UL << 0, + BATADV_PRIMARIES_FIRST_HOP = 1UL << 1, + BATADV_DIRECTLINK = 1UL << 2, }; /** @@ -123,9 +122,9 @@ enum batadv_icmp_packettype { * @BATADV_MCAST_WANT_ALL_IPV6: we want all IPv6 multicast packets */ enum batadv_mcast_flags { - BATADV_MCAST_WANT_ALL_UNSNOOPABLES = BIT(0), - BATADV_MCAST_WANT_ALL_IPV4 = BIT(1), - BATADV_MCAST_WANT_ALL_IPV6 = BIT(2), + BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0, + BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1, + BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2, }; /* tt data subtypes */ @@ -139,10 +138,10 @@ enum batadv_mcast_flags { * @BATADV_TT_FULL_TABLE: contains full table to replace existing table */ enum batadv_tt_data_flags { - BATADV_TT_OGM_DIFF = BIT(0), - BATADV_TT_REQUEST = BIT(1), - BATADV_TT_RESPONSE = BIT(2), - BATADV_TT_FULL_TABLE = BIT(4), + BATADV_TT_OGM_DIFF = 1UL << 0, + BATADV_TT_REQUEST = 1UL << 1, + BATADV_TT_RESPONSE = 1UL << 2, + BATADV_TT_FULL_TABLE = 1UL << 4, }; /** @@ -150,7 +149,7 @@ enum batadv_tt_data_flags { * @BATADV_VLAN_HAS_TAG: whether the field contains a valid vlan tag or not */ enum batadv_vlan_flags { - BATADV_VLAN_HAS_TAG = BIT(15), + BATADV_VLAN_HAS_TAG = 1UL << 15, }; /** From patchwork Thu Dec 21 09:17:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 17243 X-Patchwork-Delegate: sw@simonwunderlich.de Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id B3B6C80A33; Thu, 21 Dec 2017 10:20:35 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="b5O6yS5N"; dkim-atps=neutral Received-SPF: None (mailfrom) identity=mailfrom; client-ip=2a00:1450:400c:c0c::243; helo=mail-wr0-x243.google.com; envelope-from=sven.eckelmann@openmesh.com; receiver= Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by open-mesh.org (Postfix) with ESMTPS id B40DE81E23 for ; Thu, 21 Dec 2017 10:20:23 +0100 (CET) Received: by mail-wr0-x243.google.com with SMTP id s66so24574736wrc.9 for ; Thu, 21 Dec 2017 01:20:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DECeeABE8x52sS6qUcIycHqHCa3ahkjLBvQnaaiKATg=; b=b5O6yS5N0Es7xKQDCEKWZ0IKWAnPlN926WRHJ1WFqcsP+GyT+e7r3y+rpLyFvQczsQ qGuBsnaOYwb4WQI6sN1YExKfgJLy8hgfwB54qQdjg39bhUrarioNn66+amqmI7YUDIZf vxIm7T+DdBiMxdkpguY1/sWhpyuLNgg8V2I8VCEFeq3jNZy0aGRazZ12rLxgjCSv1i/9 LMZYWlXDAb0cBD4n+SIkGzVUIaDct+xWV+TJ3Znt4euUjibmULwshmYQMN94i53JxCOy Z2NZgLpTUu1vPf1WoRrFTvUoPlvfDjVNX0OEQnO38stKJTk4KvZpNDpFrOApLOqUpEmh 2MNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DECeeABE8x52sS6qUcIycHqHCa3ahkjLBvQnaaiKATg=; b=P/5HzzC5zMJg8OSwV8zOkEIdwlXEryELYpBkVgiIbzYT6tLvxpjUyoKqDh7aS2Y1tu vyVKvrWtp76dQ/6gsgCMOfte5vXdDmNnETqYw6o8ygABLU3kMY4l5nO2IBr1aAXnBokU o9EAPGuxy9KNyBn0i5LHpvu0bAYWHrI9Gl52w0weMHhgnORgdf1GjF78YkM+ztVLywf2 peW9XP5iLTqtvRTYRA9oZzgTVIN3fwLMHRUveBKVtXWNsHtEA1iirdVpWPAvlGwoH4xC P9Oh631GO5B/0gq711QaoLRLFWOzyGFrgAHuC8tmKUJ+hf5uHpoOZtR1KvOmQLCbxqNM OWPg== X-Gm-Message-State: AKGB3mI0Maw86XrRMidCvDdYf+xvq+2goQuQRP3/vvfmz/mo3ff6Et9L Ots4eJD4lFwAo6U0EkSMVMiI3dFBcHU= X-Google-Smtp-Source: ACJfBouBYe+Jyu84rpIdUJH1yaXkyOZ2+YCILoEuKeh841PD/boSfoW1y6GITAP8yZCwvfsKYiDHLA== X-Received: by 10.223.160.233 with SMTP id n38mr11814048wrn.45.1513848022601; Thu, 21 Dec 2017 01:20:22 -0800 (PST) Received: from sven-desktop.home.narfation.org (p2003007C6F508A00A5003EEAB9F6E50C.dip0.t-ipconnect.de. [2003:7c:6f50:8a00:a500:3eea:b9f6:e50c]) by smtp.gmail.com with ESMTPSA id n74sm24377161wmi.1.2017.12.21.01.20.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 Dec 2017 01:20:21 -0800 (PST) From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Date: Thu, 21 Dec 2017 10:17:40 +0100 Message-Id: <20171221091742.8020-4-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171221091742.8020-1-sven.eckelmann@openmesh.com> References: <20171221091742.8020-1-sven.eckelmann@openmesh.com> Subject: [B.A.T.M.A.N.] [PATCH v4 3/5] batman-adv: Remove kernel fixed width types in packet.h X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Willem de Bruijn , netdev@vger.kernel.org, Sven Eckelmann , Jiri Pirko , linux-kernel@vger.kernel.org, Eric Dumazet , Tom Herbert Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" The uapi headers use the __u8/__u16/... version of the fixed width types instead of u8/u16/... The use of the latter must be avoided before packet.h is copied to include/uapi/linux/. Signed-off-by: Sven Eckelmann --- net/batman-adv/packet.h | 214 ++++++++++++++++++++++++------------------------ 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/net/batman-adv/packet.h b/net/batman-adv/packet.h index 44f20d03205b..3b2d2db993aa 100644 --- a/net/batman-adv/packet.h +++ b/net/batman-adv/packet.h @@ -29,7 +29,7 @@ * * Return: 0 when not error was detected, != 0 otherwise */ -#define batadv_tp_is_error(n) ((u8)(n) > 127 ? 1 : 0) +#define batadv_tp_is_error(n) ((__u8)(n) > 127 ? 1 : 0) /** * enum batadv_packettype - types for batman-adv encapsulated packets @@ -191,8 +191,8 @@ enum batadv_tvlv_type { * transport the claim type and the group id */ struct batadv_bla_claim_dst { - u8 magic[3]; /* FF:43:05 */ - u8 type; /* bla_claimframe */ + __u8 magic[3]; /* FF:43:05 */ + __u8 type; /* bla_claimframe */ __be16 group; /* group id */ }; @@ -212,15 +212,15 @@ struct batadv_bla_claim_dst { * @tvlv_len: length of tvlv data following the ogm header */ struct batadv_ogm_packet { - u8 packet_type; - u8 version; - u8 ttl; - u8 flags; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 flags; __be32 seqno; - u8 orig[ETH_ALEN]; - u8 prev_sender[ETH_ALEN]; - u8 reserved; - u8 tq; + __u8 orig[ETH_ALEN]; + __u8 prev_sender[ETH_ALEN]; + __u8 reserved; + __u8 tq; __be16 tvlv_len; /* __packed is not needed as the struct size is divisible by 4, * and the largest data type in this struct has a size of 4. @@ -241,12 +241,12 @@ struct batadv_ogm_packet { * @throughput: the currently flooded path throughput */ struct batadv_ogm2_packet { - u8 packet_type; - u8 version; - u8 ttl; - u8 flags; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 flags; __be32 seqno; - u8 orig[ETH_ALEN]; + __u8 orig[ETH_ALEN]; __be16 tvlv_len; __be32 throughput; /* __packed is not needed as the struct size is divisible by 4, @@ -265,9 +265,9 @@ struct batadv_ogm2_packet { * @elp_interval: currently used ELP sending interval in ms */ struct batadv_elp_packet { - u8 packet_type; - u8 version; - u8 orig[ETH_ALEN]; + __u8 packet_type; + __u8 version; + __u8 orig[ETH_ALEN]; __be32 seqno; __be32 elp_interval; }; @@ -290,14 +290,14 @@ struct batadv_elp_packet { * members are padded the same way as they are in real packets. */ struct batadv_icmp_header { - u8 packet_type; - u8 version; - u8 ttl; - u8 msg_type; /* see ICMP message types above */ - u8 dst[ETH_ALEN]; - u8 orig[ETH_ALEN]; - u8 uid; - u8 align[3]; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 msg_type; /* see ICMP message types above */ + __u8 dst[ETH_ALEN]; + __u8 orig[ETH_ALEN]; + __u8 uid; + __u8 align[3]; }; /** @@ -313,14 +313,14 @@ struct batadv_icmp_header { * @seqno: ICMP sequence number */ struct batadv_icmp_packet { - u8 packet_type; - u8 version; - u8 ttl; - u8 msg_type; /* see ICMP message types above */ - u8 dst[ETH_ALEN]; - u8 orig[ETH_ALEN]; - u8 uid; - u8 reserved; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 msg_type; /* see ICMP message types above */ + __u8 dst[ETH_ALEN]; + __u8 orig[ETH_ALEN]; + __u8 uid; + __u8 reserved; __be16 seqno; }; @@ -342,15 +342,15 @@ struct batadv_icmp_packet { * store it using network order */ struct batadv_icmp_tp_packet { - u8 packet_type; - u8 version; - u8 ttl; - u8 msg_type; /* see ICMP message types above */ - u8 dst[ETH_ALEN]; - u8 orig[ETH_ALEN]; - u8 uid; - u8 subtype; - u8 session[2]; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 msg_type; /* see ICMP message types above */ + __u8 dst[ETH_ALEN]; + __u8 orig[ETH_ALEN]; + __u8 uid; + __u8 subtype; + __u8 session[2]; __be32 seqno; __be32 timestamp; }; @@ -381,16 +381,16 @@ enum batadv_icmp_tp_subtype { * @rr: route record array */ struct batadv_icmp_packet_rr { - u8 packet_type; - u8 version; - u8 ttl; - u8 msg_type; /* see ICMP message types above */ - u8 dst[ETH_ALEN]; - u8 orig[ETH_ALEN]; - u8 uid; - u8 rr_cur; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 msg_type; /* see ICMP message types above */ + __u8 dst[ETH_ALEN]; + __u8 orig[ETH_ALEN]; + __u8 uid; + __u8 rr_cur; __be16 seqno; - u8 rr[BATADV_RR_LEN][ETH_ALEN]; + __u8 rr[BATADV_RR_LEN][ETH_ALEN]; }; #define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr) @@ -416,11 +416,11 @@ struct batadv_icmp_packet_rr { * @dest: originator destination of the unicast packet */ struct batadv_unicast_packet { - u8 packet_type; - u8 version; - u8 ttl; - u8 ttvn; /* destination translation table version number */ - u8 dest[ETH_ALEN]; + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 ttvn; /* destination translation table version number */ + __u8 dest[ETH_ALEN]; /* "4 bytes boundary + 2 bytes" long to make the payload after the * following ethernet header again 4 bytes boundary aligned */ @@ -435,9 +435,9 @@ struct batadv_unicast_packet { */ struct batadv_unicast_4addr_packet { struct batadv_unicast_packet u; - u8 src[ETH_ALEN]; - u8 subtype; - u8 reserved; + __u8 src[ETH_ALEN]; + __u8 subtype; + __u8 reserved; /* "4 bytes boundary + 2 bytes" long to make the payload after the * following ethernet header again 4 bytes boundary aligned */ @@ -457,22 +457,22 @@ struct batadv_unicast_4addr_packet { * @total_size: size of the merged packet */ struct batadv_frag_packet { - u8 packet_type; - u8 version; /* batman version field */ - u8 ttl; + __u8 packet_type; + __u8 version; /* batman version field */ + __u8 ttl; #if defined(__BIG_ENDIAN_BITFIELD) - u8 no:4; - u8 priority:3; - u8 reserved:1; + __u8 no:4; + __u8 priority:3; + __u8 reserved:1; #elif defined(__LITTLE_ENDIAN_BITFIELD) - u8 reserved:1; - u8 priority:3; - u8 no:4; + __u8 reserved:1; + __u8 priority:3; + __u8 no:4; #else #error "unknown bitfield endianness" #endif - u8 dest[ETH_ALEN]; - u8 orig[ETH_ALEN]; + __u8 dest[ETH_ALEN]; + __u8 orig[ETH_ALEN]; __be16 seqno; __be16 total_size; }; @@ -487,12 +487,12 @@ struct batadv_frag_packet { * @orig: originator of the broadcast packet */ struct batadv_bcast_packet { - u8 packet_type; - u8 version; /* batman version field */ - u8 ttl; - u8 reserved; + __u8 packet_type; + __u8 version; /* batman version field */ + __u8 ttl; + __u8 reserved; __be32 seqno; - u8 orig[ETH_ALEN]; + __u8 orig[ETH_ALEN]; /* "4 bytes boundary + 2 bytes" long to make the payload after the * following ethernet header again 4 bytes boundary aligned */ @@ -516,19 +516,19 @@ struct batadv_bcast_packet { * @coded_len: length of network coded part of the payload */ struct batadv_coded_packet { - u8 packet_type; - u8 version; /* batman version field */ - u8 ttl; - u8 first_ttvn; - /* u8 first_dest[ETH_ALEN]; - saved in mac header destination */ - u8 first_source[ETH_ALEN]; - u8 first_orig_dest[ETH_ALEN]; + __u8 packet_type; + __u8 version; /* batman version field */ + __u8 ttl; + __u8 first_ttvn; + /* __u8 first_dest[ETH_ALEN]; - saved in mac header destination */ + __u8 first_source[ETH_ALEN]; + __u8 first_orig_dest[ETH_ALEN]; __be32 first_crc; - u8 second_ttl; - u8 second_ttvn; - u8 second_dest[ETH_ALEN]; - u8 second_source[ETH_ALEN]; - u8 second_orig_dest[ETH_ALEN]; + __u8 second_ttl; + __u8 second_ttvn; + __u8 second_dest[ETH_ALEN]; + __u8 second_source[ETH_ALEN]; + __u8 second_orig_dest[ETH_ALEN]; __be32 second_crc; __be16 coded_len; }; @@ -547,14 +547,14 @@ struct batadv_coded_packet { * @align: 2 bytes to align the header to a 4 byte boundary */ struct batadv_unicast_tvlv_packet { - u8 packet_type; - u8 version; /* batman version field */ - u8 ttl; - u8 reserved; - u8 dst[ETH_ALEN]; - u8 src[ETH_ALEN]; + __u8 packet_type; + __u8 version; /* batman version field */ + __u8 ttl; + __u8 reserved; + __u8 dst[ETH_ALEN]; + __u8 src[ETH_ALEN]; __be16 tvlv_len; - u16 align; + __u16 align; }; /** @@ -564,8 +564,8 @@ struct batadv_unicast_tvlv_packet { * @len: tvlv container length */ struct batadv_tvlv_hdr { - u8 type; - u8 version; + __u8 type; + __u8 version; __be16 len; }; @@ -588,8 +588,8 @@ struct batadv_tvlv_gateway_data { * one batadv_tvlv_tt_vlan_data object per announced vlan */ struct batadv_tvlv_tt_data { - u8 flags; - u8 ttvn; + __u8 flags; + __u8 ttvn; __be16 num_vlan; }; @@ -603,7 +603,7 @@ struct batadv_tvlv_tt_data { struct batadv_tvlv_tt_vlan_data { __be32 crc; __be16 vid; - u16 reserved; + __u16 reserved; }; /** @@ -615,9 +615,9 @@ struct batadv_tvlv_tt_vlan_data { * @vid: VLAN identifier */ struct batadv_tvlv_tt_change { - u8 flags; - u8 reserved[3]; - u8 addr[ETH_ALEN]; + __u8 flags; + __u8 reserved[3]; + __u8 addr[ETH_ALEN]; __be16 vid; }; @@ -627,7 +627,7 @@ struct batadv_tvlv_tt_change { * @vid: VLAN identifier */ struct batadv_tvlv_roam_adv { - u8 client[ETH_ALEN]; + __u8 client[ETH_ALEN]; __be16 vid; }; @@ -637,8 +637,8 @@ struct batadv_tvlv_roam_adv { * @reserved: reserved field */ struct batadv_tvlv_mcast_data { - u8 flags; - u8 reserved[3]; + __u8 flags; + __u8 reserved[3]; }; #endif /* _NET_BATMAN_ADV_PACKET_H_ */ From patchwork Thu Dec 21 09:17:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 17244 X-Patchwork-Delegate: sw@simonwunderlich.de Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id BDA6581EB4; Thu, 21 Dec 2017 10:20:46 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="Kt7CyXHe"; dkim-atps=neutral Received-SPF: None (mailfrom) identity=mailfrom; client-ip=2a00:1450:400c:c09::241; helo=mail-wm0-x241.google.com; envelope-from=sven.eckelmann@openmesh.com; receiver= Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by open-mesh.org (Postfix) with ESMTPS id 19E0381E23 for ; Thu, 21 Dec 2017 10:20:28 +0100 (CET) Received: by mail-wm0-x241.google.com with SMTP id 9so14578301wme.4 for ; Thu, 21 Dec 2017 01:20:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ndd+77e+D3djbzPCejA/fgZFqR2u+/Lwmz21SQR0Q+0=; b=Kt7CyXHenC95WIjJoLu+KYu65qpDklD18Z6/14J+10HumXhXhGrJleHgaQtBlHx/Xd UBpXbe5mLKhgfGUSDARINbkF5OArVTmrtV8dKv2dAJAl9izCUfey1d0r/SaP0EUYeBhO BtbIjS82zh7MQ2Hq/uqP0AeKI9HlOEBsht0ZC3lB/zESFuLnue5RzzkYdN2h0DwpJYZJ /ZbgeUnkDsBlBgM7ubJApmd4X/v9PAIsYJUqN5hM7AwVXtMEG2IX/uO2hQ/r01D8cjA8 edtg8HKKqWzDHKDQ7VvbpZfnzyLKfAhWhYR34Iu/GuKOxL5OeyXdF0qia6uAHBklua9x xRbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ndd+77e+D3djbzPCejA/fgZFqR2u+/Lwmz21SQR0Q+0=; b=lYSMxPH4nFlQBNCo4WS2NY5UOlgsbKpzJPYsDrHHfLp0k6y8aooWVbVE1ZIWKQQNMb 1qMU1RLJaKq399jqE2Gpa4A5eWnF202HEFSNk80uoDuJwT58LJHlMflrAMAXsYoav7Qf OGquhyWajE4GmN+ua5QIxcPw1uXWej0FIGsg+Mh/EdVEwB1/sgR9s8i31BPf0tvBbw9r 4QQ8ij0Mc/nebWo2mqERlp7O0aUwzp7Wwz+ZVFPACgpz9Dmyd0kP92AHbQDtJQO8Aos9 Fq5YuaxycKCtyy7vwHQEhsTX5UosW0fbvbjtr4XnpHZZU++sbBkJihTWtd+spHl2Exc/ 7jgA== X-Gm-Message-State: AKGB3mIFKsVOcTdM9T4GsXakNAchziyOmzyOCMCQyL4vlTdAMtX4NzZ2 Q3D0qBFonk9jmB9OlgGkZhaysDahDlg= X-Google-Smtp-Source: ACJfBouwh7N5Aezv07rfFgLE46kYo+eBCCs2RjtIZRGYu6mNSYQfgDGhdumgnS1V8HG9x79cisbmlg== X-Received: by 10.28.232.208 with SMTP id f77mr8435822wmi.155.1513848027228; Thu, 21 Dec 2017 01:20:27 -0800 (PST) Received: from sven-desktop.home.narfation.org (p2003007C6F508A00A5003EEAB9F6E50C.dip0.t-ipconnect.de. [2003:7c:6f50:8a00:a500:3eea:b9f6:e50c]) by smtp.gmail.com with ESMTPSA id v10sm449197wra.15.2017.12.21.01.20.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 Dec 2017 01:20:26 -0800 (PST) From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Date: Thu, 21 Dec 2017 10:17:41 +0100 Message-Id: <20171221091742.8020-5-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171221091742.8020-1-sven.eckelmann@openmesh.com> References: <20171221091742.8020-1-sven.eckelmann@openmesh.com> Subject: [B.A.T.M.A.N.] [PATCH v4 4/5] batman-adv: Convert packet.h to uapi header X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Willem de Bruijn , netdev@vger.kernel.org, Sven Eckelmann , Jiri Pirko , linux-kernel@vger.kernel.org, Eric Dumazet , Tom Herbert Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" The header file is used by different userspace programs to inject packets or to decode sniffed packets. It should therefore be available to them as userspace header. Also other components in the kernel (like the flow dissector) require access to the packet definitions to be able to decode ETH_P_BATMAN ethernet packets. Signed-off-by: Sven Eckelmann --- MAINTAINERS | 1 + net/batman-adv/packet.h => include/uapi/linux/batadv_packet.h | 8 ++++---- net/batman-adv/bat_iv_ogm.c | 2 +- net/batman-adv/bat_v.c | 2 +- net/batman-adv/bat_v_elp.c | 2 +- net/batman-adv/bat_v_ogm.c | 2 +- net/batman-adv/bridge_loop_avoidance.c | 2 +- net/batman-adv/distributed-arp-table.h | 2 +- net/batman-adv/fragmentation.c | 2 +- net/batman-adv/gateway_client.c | 2 +- net/batman-adv/gateway_common.c | 2 +- net/batman-adv/hard-interface.c | 2 +- net/batman-adv/icmp_socket.c | 2 +- net/batman-adv/main.c | 2 +- net/batman-adv/main.h | 2 +- net/batman-adv/multicast.c | 2 +- net/batman-adv/netlink.c | 2 +- net/batman-adv/network-coding.c | 2 +- net/batman-adv/routing.c | 2 +- net/batman-adv/send.h | 3 +-- net/batman-adv/soft-interface.c | 2 +- net/batman-adv/sysfs.c | 2 +- net/batman-adv/tp_meter.c | 2 +- net/batman-adv/translation-table.c | 2 +- net/batman-adv/tvlv.c | 2 +- net/batman-adv/types.h | 3 +-- 26 files changed, 29 insertions(+), 30 deletions(-) rename net/batman-adv/packet.h => include/uapi/linux/batadv_packet.h (99%) diff --git a/MAINTAINERS b/MAINTAINERS index aa71ab52fd76..4d6af00a5f10 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2563,6 +2563,7 @@ S: Maintained F: Documentation/ABI/testing/sysfs-class-net-batman-adv F: Documentation/ABI/testing/sysfs-class-net-mesh F: Documentation/networking/batman-adv.rst +F: include/uapi/linux/batadv_packet.h F: include/uapi/linux/batman_adv.h F: net/batman-adv/ diff --git a/net/batman-adv/packet.h b/include/uapi/linux/batadv_packet.h similarity index 99% rename from net/batman-adv/packet.h rename to include/uapi/linux/batadv_packet.h index 3b2d2db993aa..5cb360be2a11 100644 --- a/net/batman-adv/packet.h +++ b/include/uapi/linux/batadv_packet.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: GPL-2.0 */ +/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) */ /* Copyright (C) 2007-2017 B.A.T.M.A.N. contributors: * * Marek Lindner, Simon Wunderlich @@ -16,8 +16,8 @@ * along with this program; if not, see . */ -#ifndef _NET_BATMAN_ADV_PACKET_H_ -#define _NET_BATMAN_ADV_PACKET_H_ +#ifndef _UAPI_LINUX_BATADV_PACKET_H_ +#define _UAPI_LINUX_BATADV_PACKET_H_ #include #include @@ -641,4 +641,4 @@ struct batadv_tvlv_mcast_data { __u8 reserved[3]; }; -#endif /* _NET_BATMAN_ADV_PACKET_H_ */ +#endif /* _UAPI_LINUX_BATADV_PACKET_H_ */ diff --git a/net/batman-adv/bat_iv_ogm.c b/net/batman-adv/bat_iv_ogm.c index c9955f29a2bf..a4a331c56a60 100644 --- a/net/batman-adv/bat_iv_ogm.c +++ b/net/batman-adv/bat_iv_ogm.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include "bat_algo.h" @@ -63,7 +64,6 @@ #include "netlink.h" #include "network-coding.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" #include "translation-table.h" diff --git a/net/batman-adv/bat_v.c b/net/batman-adv/bat_v.c index 14ec3677c391..f5abe4a4e247 100644 --- a/net/batman-adv/bat_v.c +++ b/net/batman-adv/bat_v.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "bat_algo.h" @@ -49,7 +50,6 @@ #include "log.h" #include "netlink.h" #include "originator.h" -#include "packet.h" struct sk_buff; diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c index 59ae96cef596..a83478c46597 100644 --- a/net/batman-adv/bat_v_elp.c +++ b/net/batman-adv/bat_v_elp.c @@ -42,13 +42,13 @@ #include #include #include +#include #include "bat_algo.h" #include "bat_v_ogm.h" #include "hard-interface.h" #include "log.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" diff --git a/net/batman-adv/bat_v_ogm.c b/net/batman-adv/bat_v_ogm.c index e415974c540d..ba59b77c605d 100644 --- a/net/batman-adv/bat_v_ogm.c +++ b/net/batman-adv/bat_v_ogm.c @@ -39,13 +39,13 @@ #include #include #include +#include #include "bat_algo.h" #include "hard-interface.h" #include "hash.h" #include "log.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" #include "translation-table.h" diff --git a/net/batman-adv/bridge_loop_avoidance.c b/net/batman-adv/bridge_loop_avoidance.c index e647450e5d0f..fad47853ad3c 100644 --- a/net/batman-adv/bridge_loop_avoidance.c +++ b/net/batman-adv/bridge_loop_avoidance.c @@ -50,6 +50,7 @@ #include #include #include +#include #include #include "hard-interface.h" @@ -57,7 +58,6 @@ #include "log.h" #include "netlink.h" #include "originator.h" -#include "packet.h" #include "soft-interface.h" #include "sysfs.h" #include "translation-table.h" diff --git a/net/batman-adv/distributed-arp-table.h b/net/batman-adv/distributed-arp-table.h index 3d47bedaf661..12897eb46268 100644 --- a/net/batman-adv/distributed-arp-table.h +++ b/net/batman-adv/distributed-arp-table.h @@ -24,9 +24,9 @@ #include #include #include +#include #include "originator.h" -#include "packet.h" struct seq_file; struct sk_buff; diff --git a/net/batman-adv/fragmentation.c b/net/batman-adv/fragmentation.c index 36f8a84153bf..b893627767f2 100644 --- a/net/batman-adv/fragmentation.c +++ b/net/batman-adv/fragmentation.c @@ -33,10 +33,10 @@ #include #include #include +#include #include "hard-interface.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" #include "soft-interface.h" diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c index 2488e25d0eef..37fe9a644f22 100644 --- a/net/batman-adv/gateway_client.c +++ b/net/batman-adv/gateway_client.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include "gateway_common.h" @@ -50,7 +51,6 @@ #include "log.h" #include "netlink.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "soft-interface.h" #include "sysfs.h" diff --git a/net/batman-adv/gateway_common.c b/net/batman-adv/gateway_common.c index 83bfeecf661c..b3e156af2256 100644 --- a/net/batman-adv/gateway_common.c +++ b/net/batman-adv/gateway_common.c @@ -27,10 +27,10 @@ #include #include #include +#include #include "gateway_client.h" #include "log.h" -#include "packet.h" #include "tvlv.h" /** diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c index 13d04dba0b3a..5f186bff284a 100644 --- a/net/batman-adv/hard-interface.c +++ b/net/batman-adv/hard-interface.c @@ -38,6 +38,7 @@ #include #include #include +#include #include "bat_v.h" #include "bridge_loop_avoidance.h" @@ -46,7 +47,6 @@ #include "gateway_client.h" #include "log.h" #include "originator.h" -#include "packet.h" #include "send.h" #include "soft-interface.h" #include "sysfs.h" diff --git a/net/batman-adv/icmp_socket.c b/net/batman-adv/icmp_socket.c index f2ef75b7fa73..8041cf106c37 100644 --- a/net/batman-adv/icmp_socket.c +++ b/net/batman-adv/icmp_socket.c @@ -44,11 +44,11 @@ #include #include #include +#include #include "hard-interface.h" #include "log.h" #include "originator.h" -#include "packet.h" #include "send.h" static struct batadv_socket_client *batadv_socket_client_hash[256]; diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index 8bee4279d579..d31c8266e244 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include "bat_algo.h" @@ -63,7 +64,6 @@ #include "netlink.h" #include "network-coding.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" #include "soft-interface.h" diff --git a/net/batman-adv/main.h b/net/batman-adv/main.h index d5484ac381d3..f7ba3f96d8f3 100644 --- a/net/batman-adv/main.h +++ b/net/batman-adv/main.h @@ -223,8 +223,8 @@ enum batadv_uev_type { #include #include #include +#include -#include "packet.h" #include "types.h" struct net_device; diff --git a/net/batman-adv/multicast.c b/net/batman-adv/multicast.c index 8a503c526b90..cbdeb47ec3f6 100644 --- a/net/batman-adv/multicast.c +++ b/net/batman-adv/multicast.c @@ -55,11 +55,11 @@ #include #include #include +#include #include "hard-interface.h" #include "hash.h" #include "log.h" -#include "packet.h" #include "translation-table.h" #include "tvlv.h" diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c index 103d4bdcdbdb..a823d3899bad 100644 --- a/net/batman-adv/netlink.c +++ b/net/batman-adv/netlink.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include "bat_algo.h" @@ -47,7 +48,6 @@ #include "gateway_client.h" #include "hard-interface.h" #include "originator.h" -#include "packet.h" #include "soft-interface.h" #include "tp_meter.h" #include "translation-table.h" diff --git a/net/batman-adv/network-coding.c b/net/batman-adv/network-coding.c index 3758be7fd881..b48116bb24ef 100644 --- a/net/batman-adv/network-coding.c +++ b/net/batman-adv/network-coding.c @@ -49,12 +49,12 @@ #include #include #include +#include #include "hard-interface.h" #include "hash.h" #include "log.h" #include "originator.h" -#include "packet.h" #include "routing.h" #include "send.h" #include "tvlv.h" diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c index eb835bde502a..b6891e8b741c 100644 --- a/net/batman-adv/routing.c +++ b/net/batman-adv/routing.c @@ -34,6 +34,7 @@ #include #include #include +#include #include "bitarray.h" #include "bridge_loop_avoidance.h" @@ -44,7 +45,6 @@ #include "log.h" #include "network-coding.h" #include "originator.h" -#include "packet.h" #include "send.h" #include "soft-interface.h" #include "tp_meter.h" diff --git a/net/batman-adv/send.h b/net/batman-adv/send.h index 8c7399dd06ca..1e8c79093623 100644 --- a/net/batman-adv/send.h +++ b/net/batman-adv/send.h @@ -24,8 +24,7 @@ #include #include #include - -#include "packet.h" +#include struct sk_buff; diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c index 1eb5555c5fe4..900c5ce21cd4 100644 --- a/net/batman-adv/soft-interface.c +++ b/net/batman-adv/soft-interface.c @@ -49,6 +49,7 @@ #include #include #include +#include #include "bat_algo.h" #include "bridge_loop_avoidance.h" @@ -60,7 +61,6 @@ #include "multicast.h" #include "network-coding.h" #include "originator.h" -#include "packet.h" #include "send.h" #include "sysfs.h" #include "translation-table.h" diff --git a/net/batman-adv/sysfs.c b/net/batman-adv/sysfs.c index 56fb42551453..c1578fa0b952 100644 --- a/net/batman-adv/sysfs.c +++ b/net/batman-adv/sysfs.c @@ -39,6 +39,7 @@ #include #include #include +#include #include "bridge_loop_avoidance.h" #include "distributed-arp-table.h" @@ -47,7 +48,6 @@ #include "hard-interface.h" #include "log.h" #include "network-coding.h" -#include "packet.h" #include "soft-interface.h" static struct net_device *batadv_kobj_to_netdev(struct kobject *obj) diff --git a/net/batman-adv/tp_meter.c b/net/batman-adv/tp_meter.c index b443b9d28918..c68c41e713a6 100644 --- a/net/batman-adv/tp_meter.c +++ b/net/batman-adv/tp_meter.c @@ -49,13 +49,13 @@ #include #include #include +#include #include #include "hard-interface.h" #include "log.h" #include "netlink.h" #include "originator.h" -#include "packet.h" #include "send.h" /** diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c index 0e53be3f8df0..7550a9ccd695 100644 --- a/net/batman-adv/translation-table.c +++ b/net/batman-adv/translation-table.c @@ -52,6 +52,7 @@ #include #include #include +#include #include #include "bridge_loop_avoidance.h" @@ -60,7 +61,6 @@ #include "log.h" #include "netlink.h" #include "originator.h" -#include "packet.h" #include "soft-interface.h" #include "tvlv.h" diff --git a/net/batman-adv/tvlv.c b/net/batman-adv/tvlv.c index e189f026974c..5ffcb45ac6ff 100644 --- a/net/batman-adv/tvlv.c +++ b/net/batman-adv/tvlv.c @@ -36,9 +36,9 @@ #include #include #include +#include #include "originator.h" -#include "packet.h" #include "send.h" #include "tvlv.h" diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h index 77b145eba193..bb1578410e0c 100644 --- a/net/batman-adv/types.h +++ b/net/batman-adv/types.h @@ -35,10 +35,9 @@ #include #include #include +#include #include -#include "packet.h" - struct seq_file; #ifdef CONFIG_BATMAN_ADV_DAT From patchwork Thu Dec 21 09:17:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 17245 X-Patchwork-Delegate: sw@simonwunderlich.de Return-Path: X-Original-To: patchwork@open-mesh.org Delivered-To: patchwork@open-mesh.org Received: from open-mesh.org (localhost [IPv6:::1]) by open-mesh.org (Postfix) with ESMTP id E665281E9F; Thu, 21 Dec 2017 10:20:59 +0100 (CET) Authentication-Results: open-mesh.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=openmesh-com.20150623.gappssmtp.com header.i=@openmesh-com.20150623.gappssmtp.com header.b="oChTYOPV"; dkim-atps=neutral Received-SPF: None (mailfrom) identity=mailfrom; client-ip=2a00:1450:400c:c0c::243; helo=mail-wr0-x243.google.com; envelope-from=sven.eckelmann@openmesh.com; receiver= Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by open-mesh.org (Postfix) with ESMTPS id 56E4F81E86 for ; Thu, 21 Dec 2017 10:20:32 +0100 (CET) Received: by mail-wr0-x243.google.com with SMTP id p69so15738977wrb.8 for ; Thu, 21 Dec 2017 01:20:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openmesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5kOv1wK/w2SLthrk7Ge75ryejoK0+1GLZfIJAFCEnVM=; b=oChTYOPVOX0oW7WlerI7r43vO0Tfqab9pceYONqN+wcTgiEC2s3r+Owy3J3xoMLglB bhnS1jZx0bJNlmIkdmPlAHqLZOw/oh35epow0SHB68kKjW4DpbaK32mrExddhRpgj9LN rfqBAVmvDNfVoMOIRpFrvsamvoWSKQLnSJYVK+Y+v5qbWGWKCBVsKL2ZrOGMSEkP2M82 xD3T/aFiwymu8mfsudq8YsNiNcQZj7prI4xNj1P540f/wZm1tnMAn3G0jqsjODw8LAkT utWDP+f2XeW+qIcRbuVnaliQIROSDmx4+Q1S3y+PGfhmTCn7Cbjvve9+GCK6xEkB1drB dA7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5kOv1wK/w2SLthrk7Ge75ryejoK0+1GLZfIJAFCEnVM=; b=V4YitFy0FHlxR3D9RCsNY41LJVtfEC+X+YxrC2DovzaT3+Bi+xVBh0xjq/XpgADG6H KDWVeaZJQxJBSshxiAaz0y2fp4F2935r42aVpYO1ZkMYQcLzkUliO7AWIYC2K094iqLc o7IBrdzkf0jRV5neXf9IfkhxtKAd0rVzig7pEbnUjVwJTU9sV9FzvCAJ6z2pypv2aB4I hhD8f6Af0/doyidkLNyYB3+dvRiknct8+dWhqsoLgxnSaKbPU9rl2Vp23cKuUJe8Wt5N DIiA2R6i2Nqe7bxa9tfU79jbqQctDtFlHBA1mupBttiJ1fbjGYapoPwxd9Qfr532MwMy M9mQ== X-Gm-Message-State: AKGB3mI7iQdeq0U8Bi6UqSl/GLNsANrnyu5oXI3OIcb4HOPaUUkrwy57 +fvMEmq2UrloFYcPLZQW/GOkzP4l8Rs= X-Google-Smtp-Source: ACJfBotTdM4eG/2RbcSM5oeQ713Nxhrsm50Ytmq9/ehfwwGjtxL1QsQElGxsRErE73/3J776W9kwZA== X-Received: by 10.223.171.207 with SMTP id s73mr1337765wrc.79.1513848031694; Thu, 21 Dec 2017 01:20:31 -0800 (PST) Received: from sven-desktop.home.narfation.org (p2003007C6F508A00A5003EEAB9F6E50C.dip0.t-ipconnect.de. [2003:7c:6f50:8a00:a500:3eea:b9f6:e50c]) by smtp.gmail.com with ESMTPSA id g92sm36171012wrd.72.2017.12.21.01.20.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 21 Dec 2017 01:20:31 -0800 (PST) From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Date: Thu, 21 Dec 2017 10:17:42 +0100 Message-Id: <20171221091742.8020-6-sven.eckelmann@openmesh.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171221091742.8020-1-sven.eckelmann@openmesh.com> References: <20171221091742.8020-1-sven.eckelmann@openmesh.com> Subject: [B.A.T.M.A.N.] [PATCH v4 5/5] flow_dissector: Parse batman-adv unicast headers X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking Cc: Willem de Bruijn , netdev@vger.kernel.org, Sven Eckelmann , Jiri Pirko , linux-kernel@vger.kernel.org, Eric Dumazet , Tom Herbert Errors-To: b.a.t.m.a.n-bounces@lists.open-mesh.org Sender: "B.A.T.M.A.N" The batman-adv unicast packets contain a full layer 2 frame in encapsulated form. The flow dissector must therefore be able to parse the batman-adv unicast header to reach the layer 2+3 information. +--------------------+ | ip(v6)hdr | +--------------------+ | inner ethhdr | +--------------------+ | batadv unicast hdr | +--------------------+ | outer ethhdr | +--------------------+ The obtained information from the upper layer can then be used by RPS to schedule the processing on separate cores. This allows better distribution of multiple flows from the same neighbor to different cores. Signed-off-by: Sven Eckelmann Reviewed-by: Jiri Pirko Acked-by: Willem de Bruijn --- net/core/flow_dissector.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 15ce30063765..fa0a4879fb9d 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -24,6 +24,7 @@ #include #include #include +#include static void dissector_set_key(struct flow_dissector *flow_dissector, enum flow_dissector_key_id key_id) @@ -436,6 +437,57 @@ __skb_flow_dissect_gre(const struct sk_buff *skb, return FLOW_DISSECT_RET_PROTO_AGAIN; } +/** + * __skb_flow_dissect_batadv() - dissect batman-adv header + * @skb: sk_buff to with the batman-adv header + * @key_control: flow dissectors control key + * @data: raw buffer pointer to the packet, if NULL use skb->data + * @p_proto: pointer used to update the protocol to process next + * @p_nhoff: pointer used to update inner network header offset + * @hlen: packet header length + * @flags: any combination of FLOW_DISSECTOR_F_* + * + * ETH_P_BATMAN packets are tried to be dissected. Only + * &struct batadv_unicast packets are actually processed because they contain an + * inner ethernet header and are usually followed by actual network header. This + * allows the flow dissector to continue processing the packet. + * + * Return: FLOW_DISSECT_RET_PROTO_AGAIN when &struct batadv_unicast was found, + * FLOW_DISSECT_RET_OUT_GOOD when dissector should stop after encapsulation, + * otherwise FLOW_DISSECT_RET_OUT_BAD + */ +static enum flow_dissect_ret +__skb_flow_dissect_batadv(const struct sk_buff *skb, + struct flow_dissector_key_control *key_control, + void *data, __be16 *p_proto, int *p_nhoff, int hlen, + unsigned int flags) +{ + struct { + struct batadv_unicast_packet batadv_unicast; + struct ethhdr eth; + } *hdr, _hdr; + + hdr = __skb_header_pointer(skb, *p_nhoff, sizeof(_hdr), data, hlen, + &_hdr); + if (!hdr) + return FLOW_DISSECT_RET_OUT_BAD; + + if (hdr->batadv_unicast.version != BATADV_COMPAT_VERSION) + return FLOW_DISSECT_RET_OUT_BAD; + + if (hdr->batadv_unicast.packet_type != BATADV_UNICAST) + return FLOW_DISSECT_RET_OUT_BAD; + + *p_proto = hdr->eth.h_proto; + *p_nhoff += sizeof(*hdr); + + key_control->flags |= FLOW_DIS_ENCAPSULATION; + if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP) + return FLOW_DISSECT_RET_OUT_GOOD; + + return FLOW_DISSECT_RET_PROTO_AGAIN; +} + static void __skb_flow_dissect_tcp(const struct sk_buff *skb, struct flow_dissector *flow_dissector, @@ -817,6 +869,11 @@ bool __skb_flow_dissect(const struct sk_buff *skb, nhoff, hlen); break; + case htons(ETH_P_BATMAN): + fdret = __skb_flow_dissect_batadv(skb, key_control, data, + &proto, &nhoff, hlen, flags); + break; + default: fdret = FLOW_DISSECT_RET_OUT_BAD; break;