From patchwork Mon Sep 7 22:04:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Davey X-Patchwork-Id: 1359308 Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=alliedtelesis.co.nz Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=alliedtelesis.co.nz header.i=@alliedtelesis.co.nz header.a=rsa-sha256 header.s=mail181024 header.b=EAwXcvhP; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Blj4D5snTz9sSP for ; Tue, 8 Sep 2020 08:04:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728238AbgIGWE0 (ORCPT ); Mon, 7 Sep 2020 18:04:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727088AbgIGWEU (ORCPT ); Mon, 7 Sep 2020 18:04:20 -0400 Received: from gate2.alliedtelesis.co.nz (gate2.alliedtelesis.co.nz [IPv6:2001:df5:b000:5::4]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC21CC061573 for ; Mon, 7 Sep 2020 15:04:19 -0700 (PDT) Received: from mmarshal3.atlnz.lc (mmarshal3.atlnz.lc [10.32.18.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by gate2.alliedtelesis.co.nz (Postfix) with ESMTPS id C8D39806B5; Tue, 8 Sep 2020 10:04:14 +1200 (NZST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alliedtelesis.co.nz; s=mail181024; t=1599516254; bh=Q02+/9NY7pSuY9wiR+9Qb9y2Y6jEeyrcs5Z2A0X3LB0=; h=From:To:Cc:Subject:Date; b=EAwXcvhPjr4/jl3mLpfonY2+A0A1HNwzg/5jDFqjf4UJ62suA4PZDpoaDB1/OcXa7 8U6dWhUkrz7oRO1kOhiwXoT7VnE4x5o3bw3/75Hs4ACIouksjuOgfiAFOyTxH9CylJ 4rZn/HmjPAJYg64x79ETH41datqgfkvXsJq151Xquf/baCCMkJJiSuiV9PhOob/TeT Xu2PO6At1diZkS8xBiw53fNnL7y3q91keuR3Kz+Cesq5rJCVB7lJEQ7XiMM/Bt7dM6 a9P4XBNSJW3khAa8106tAIuAGIM2yoaS39d+5G+TszegsZwYEyprkED7Ym3C0IsiWW z1mEr1cwNm1AA== Received: from smtp (Not Verified[10.32.16.33]) by mmarshal3.atlnz.lc with Trustwave SEG (v7,5,8,10121) id ; Tue, 08 Sep 2020 10:04:14 +1200 Received: from pauld-dl.ws.atlnz.lc (pauld-dl.ws.atlnz.lc [10.33.23.16]) by smtp (Postfix) with ESMTP id C2EEB13EEBA; Tue, 8 Sep 2020 10:04:13 +1200 (NZST) Received: by pauld-dl.ws.atlnz.lc (Postfix, from userid 1684) id 7657A1E3850; Tue, 8 Sep 2020 10:04:14 +1200 (NZST) From: Paul Davey To: "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Paul Davey Subject: [PATCH net-next v2 0/3] Allow more than 255 IPv4 multicast interfaces Date: Tue, 8 Sep 2020 10:04:05 +1200 Message-Id: <20200907220408.32385-1-paul.davey@alliedtelesis.co.nz> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 x-atlnz-ls: pat Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Currently it is not possible to use more than 255 multicast interfaces for IPv4 due to the format of the igmpmsg header which only has 8 bits available for the VIF ID. There is space available in the igmpmsg header to store the full VIF ID in the form of an unused byte following the VIF ID field. There is also enough space for the full VIF ID in the Netlink cache notifications, however the value is currently taken directly from the igmpmsg header and has thus already been truncated. Adding the high byte of the VIF ID into the unused3 byte of igmpmsg allows use of more than 255 IPv4 multicast interfaces. The full VIF ID is also available in the Netlink notification by assembling it from both bytes from the igmpmsg. Additionally this reveals a deficiency in the Netlink cache report notifications, they lack any means for differentiating cache reports relating to different multicast routing tables. This is easily resolved by adding the multicast route table ID to the cache reports. changes in v2: - Added high byte of VIF ID to igmpmsg struct replacing unused3 member. - Assemble VIF ID in Netlink notification from both bytes in igmpmsg header. Paul Davey (3): ipmr: Add route table ID to netlink cache reports ipmr: Add high byte of VIF ID to igmpmsg ipmr: Use full VIF ID in netlink cache reports include/uapi/linux/mroute.h | 5 +++-- net/ipv4/ipmr.c | 14 ++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-)