From patchwork Thu Apr 3 08:58:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 14036946 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE77424A065; Thu, 3 Apr 2025 08:59:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670774; cv=none; b=UIT5qyWL5K07ZEMC9hn9wLh9m5672aRQV5gEl0XhSkk2K9eKWwelHmEsavHblTiaOKpKgR2Y8qbciLPcPKN5GyiRkknTNDZvn0kVumfUKg/Mxucf44s6DEwPf+E9z5rf/PehJ/vXHe+tT0g6aa3+MC9UxA2xzv24zsHGqgbK/wc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670774; c=relaxed/simple; bh=F3/khe7Gf2Fu87OAksPK044g1enLY+64dR3IRRdxLn0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=H1yo/bc9C4yfYz/3SNo2mFF1Y6iP1jc9CM2fPSilApcnj3pbk0XAbU7JLPXr0HT7/TRemi69AbzZ0gc3fn41xjp5SNJmM9Ne0j17lSAmAe6KcEVhiC+dKd2resK/dAlVEMpU4wSkNyph/6rpaYmj6Lcxo9PkkJFNKHRzMH0jD8w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NSLDXR2V; arc=none smtp.client-ip=209.85.215.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NSLDXR2V" Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-ad51e7235beso626506a12.3; Thu, 03 Apr 2025 01:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743670766; x=1744275566; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VYVKhBJVpiVETzgPiPMXrHXmtB1Bi2m8eMZNmHrFojo=; b=NSLDXR2V6De0mvu3RsqUTGJoXSfqwJRzqs9JqwT8feSel9sq99jO6f8HesmL0r6vRV E8qlKKVQSSuqZTrgu6qwncfHTig/otMkPov+u05E2Dbkm2rDiluDnM8EoKYL9K85w6Oq ocE1iFBg+ZLyI/bGBIXbjpfPrbtW8ckQ+GBfB/37HGtw3f5kjzic0Jsn0iyi0LBKatM7 E4O+r0rSEQuqflVC3X9arwSayioMh47HMvFAPsj+NOJo8MV4HfF39T4jyoMzdCwnMbu8 bgFk6LSDKUmwu3XokwvbzmdKHUUL8NwSOdKvrQLZ2aCp3rHJE/jJ5cEEYBCzyM/8kKxR j77Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743670766; x=1744275566; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VYVKhBJVpiVETzgPiPMXrHXmtB1Bi2m8eMZNmHrFojo=; b=VUiHIvMrmokVAidsYNX1bclWC9Tag7CoG1JIVlMauG+OujLKBpGidRXhJxSQQZmmaZ tq/pzDqGziVAsICLOpuEq02QTKiDMYNdsRox5Z82TdvIjJAmoS6JLM+JlSlI7hIKWpRm jMRGrc1mVKOn8HMQYt91CBiOiIfWHmazUpHsTjDAdojHWyBxgs7Y3yXYWmiqcrmG6xgk OjT80Vm1Bn1s5KB12BC/+F3R/wzpPMvJeNkKxVj5+xYKw6XlKnahSqpva1qQMLHeS8H2 epFEeg02QBwyZBGA4DdNV3qh0ZvWsZnVBsNJGbqHwSlUMCqeEkIPpG6zAJEdEMEckKk9 dInQ== X-Forwarded-Encrypted: i=1; AJvYcCVNDfwRDwBbq/YQGi5RLP5ug3xltxtjh83kiRfdl5fp3igH2QwfiQ36mbvYFsnasXOK83B/XxXMrKrCr1dNkqA=@vger.kernel.org X-Gm-Message-State: AOJu0YydBR08KsZVuldlapNSugjAwQa6SxCwQjEaF+OHv0JtvIEvqmGC bIWOll5BMKzmG0wK5hA/dPh4CWiCn1U2FvUo3Udw7jUfNXe3PrQVSKG4UYZaFTc= X-Gm-Gg: ASbGncuaQk0TzAstXKqxpkFLDzawns7GTjO4EWOdjXI/aJZahHNVic7Vkrie4L6UYWo MhDN3k8hmrpBHlL2t2mjOVDPfMCMYjxfJKLdmt6NU4AHx2GQPlFz4wHPkZe2Ju+GvUV2v3+duj0 7D87/soMD3GpSh0WDlUmvUaDOJTYCnyRitpuSA1O3iXlVlP3mNq5MFXq4LOcKcQRT5s4b+gM5rm SQZKcRl1sIjZtRXsdS7TpRr7IBRbcVVQtiL/WdfAVzw9/QvOyRq4TeEgDpQfM6SVBJXgnBs8PxE Bq4dwxrG1vqimoq/CviyPzxGhyBKNvWvZfcQtuNnRUHaGZglMQlve34XFLegTkZf X-Google-Smtp-Source: AGHT+IHZqQ9zJvuvZ8pGS4Y1LwNjv1ZtGbAzJZCE4hHdZmWYrWWpp5dIQxvB/OAFNhgXUnwHTREvsg== X-Received: by 2002:a17:90a:c888:b0:2ee:5bc9:75c3 with SMTP id 98e67ed59e1d1-3056ee221eamr7205975a91.5.1743670766562; Thu, 03 Apr 2025 01:59:26 -0700 (PDT) Received: from fedora.dns.podman ([43.228.180.230]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-305827d710csm937620a91.10.2025.04.03.01.59.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Apr 2025 01:59:26 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Xiao Liang , Kuniyuki Iwashima , Alexander Lobakin , Stanislav Fomichev , Venkat Venkatsubra , Etienne Champetier , Di Zhu , Nikolay Aleksandrov , Travis Brown , Suresh Krishnan , linux-kselftest@vger.kernel.org, Hangbin Liu Subject: [PATCH net 1/3] ipvlan: fix NETDEV_UP/NETDEV_DOWN event handling Date: Thu, 3 Apr 2025 08:58:55 +0000 Message-ID: <20250403085857.17868-2-liuhangbin@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20250403085857.17868-1-liuhangbin@gmail.com> References: <20250403085857.17868-1-liuhangbin@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org When setting the lower-layer link up/down, the ipvlan device synchronizes its state via netif_stacked_transfer_operstate(), which only checks the carrier state. However, setting the link down does not necessarily change the carrier state for virtual interfaces like bonding. This causes the ipvlan state to become out of sync with the lower-layer link state. If the lower link and ipvlan are in the same namespace, this issue is hidden because ip link show checks the link state in IFLA_LINK and has a m_flag to control the state, displaying M-DOWN in the flags. However, if the ipvlan and the lower link are in different namespaces, this information is not available, and the ipvlan link state remains unchanged. For example: 1. Add an ipvlan over bond0. 2. Move the ipvlan to a separate namespace and bring it up. 3. Set bond0 link down. 4. The ipvlan remains up. This issue affects containers and pods, causing them to display an incorrect link state for ipvlan. Fix this by explicitly changing the IFF_UP flag, similar to how VLAN handles it. Fixes: 57fb346cc7d0 ("ipvlan: Add handling of NETDEV_UP events") Fixes: 229783970838 ("ipvlan: handle NETDEV_DOWN event") Signed-off-by: Hangbin Liu --- drivers/net/ipvlan/ipvlan_main.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c index 0ed2fd833a5d..2abe6ddc4d15 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c @@ -730,7 +730,7 @@ static int ipvlan_device_event(struct notifier_block *unused, struct ipvl_dev *ipvlan, *next; struct ipvl_port *port; LIST_HEAD(lst_kill); - int err; + int flags, err; if (!netif_is_ipvlan_port(dev)) return NOTIFY_DONE; @@ -739,7 +739,25 @@ static int ipvlan_device_event(struct notifier_block *unused, switch (event) { case NETDEV_UP: + list_for_each_entry(ipvlan, &port->ipvlans, pnode) { + flags = ipvlan->dev->flags; + if (flags & IFF_UP) + continue; + dev_change_flags(ipvlan->dev, flags | IFF_UP, extack); + netif_stacked_transfer_operstate(ipvlan->phy_dev, + ipvlan->dev); + } + break; case NETDEV_DOWN: + list_for_each_entry(ipvlan, &port->ipvlans, pnode) { + flags = ipvlan->dev->flags; + if (!(flags & IFF_UP)) + continue; + dev_close(ipvlan->dev); + netif_stacked_transfer_operstate(ipvlan->phy_dev, + ipvlan->dev); + } + break; case NETDEV_CHANGE: list_for_each_entry(ipvlan, &port->ipvlans, pnode) netif_stacked_transfer_operstate(ipvlan->phy_dev, From patchwork Thu Apr 3 08:58:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 14036947 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D55C82528ED; Thu, 3 Apr 2025 08:59:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670778; cv=none; b=rWs2fsZuVDyj+Cv5Ilh/c7hcc+h4SzqnelQOSd6wue86gjyRD2btUuxsBDI2zYQJJn6xHWxyfSQwrN6OSv3Hp9uqjLeEUE/FSo3h1lK8ah+4w9UqUVopKq2kl9MXv2b/DL5Ks/yZWdG3+yIkiVIAzhFR0PndEEfO0f7L4ZpL9jE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670778; c=relaxed/simple; bh=w8cQtBawdUaAqCpYXbsmsYiG8edovPzgJurB2JGwAZ4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mvz0txWiJIiSMTB1GwyFFFXlGNZBUggaZsPYaJ28CCRy0KU4XK1XeFianPjN1MVhUVy/EwGnXHd/mKNCWb0t9yw4s9WoiLIAC/oOKDsOajFFdVA/0G2X5trLxTNrnW7zOoVrG6zsnwDNXINctBYyjmonqkJLgJjOuTzcRuQ844A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EULITbMH; arc=none smtp.client-ip=209.85.216.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EULITbMH" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-3014678689aso507301a91.0; Thu, 03 Apr 2025 01:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743670775; x=1744275575; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bJGPTm3btHcG976NDsvjiyR29asJDHlycsrQUrhba3s=; b=EULITbMHSbh4QnhdO3aieAE2n/mCPzNC1f0M6kZiFDZ7RJcUiU7SvoPeU8xbJCs7rK GEIdGhs0mGcURwf2xHXtRLmIUK6ytdXQfrFG97376P6BbkjYcj0MFeWKvfVjxJEX3JVd ZKN/s1OPPiUpkgikJoQmhk1vMVNGqPbOKHVT49kq1Rxyzq4u5yhdicrDN4tbE8PXXFrr qeqnIIStbL2ftsfC4O/Potv+E3BpCRX8hAUD8MB7x/6o34raER4RU6EJG7L0pmWqiOWr rhl9ZZkD2kXZALHnNaNjwPTqCWpAAO9pSeOTJcVrsmBuMMetI38++ayPQk53t6EJm5EB DVZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743670775; x=1744275575; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bJGPTm3btHcG976NDsvjiyR29asJDHlycsrQUrhba3s=; b=I9xljG3vrJf9f3ibio/Y1P+05ib9T55qnG6pDhWQyloKQwUd6fa7uVykpgSTzhoUP7 lpKOQv9ik30NlsB85ITvMI8mX1EN/wUAWwOz8Hi76ba2fdxv7eswR5rHBfkVn91f8Kmz Z8K1x7WdKyA5SN0IdhDN0UK3rGum6SuEPT8tFmOMJ9KwETCL35AhtMfdfQp9Kv3QE8ZC IFSROwKfmWqHxGPc04t+bZ7Mj13SQtQYhQcQuWyEcWBnA4Iy5DiJYfJ2kSsPKlwGR0ue OQFJa22ruOz1w0pA8K3CR6ob6AAS+GFPB5cwqY96hBCAWOFl0goHNV4SDM1Lpmu1SJ0c UiPw== X-Forwarded-Encrypted: i=1; AJvYcCW77fWgo8Fa6/pNPmv72lgYDT1rFr3csUWxwpTp7KYyrl0VMPJjwaBtBFx7pC1hLGLGi5V+PVe9M/2+L8+ygow=@vger.kernel.org X-Gm-Message-State: AOJu0YwceXSXGdtPA0j6DVSDM/LmjX4c4iBzV6MLp+nFPKcaaa1ILffT MKAoYwqze8/KO93Xey7gz3CnDlx3BK6fmvLOcmT2aouVERvgo9gCUvf21mGDl00= X-Gm-Gg: ASbGnct+XyGrr75Ed52JjIgHg//jaMVdyw4H8VCpUzynCp5Re/o7VPVkMda78DN+ZcX rIik3bBPTa+XsRScg0Vd9HARxh/08KjF5+fD+ltQUtF/I+UqqDsk3b41hbHOBwZ5zGeN905QAtT j71gQEwl2QQH/pWOYj1OSrOHaIAl5RzLcJgdgFT6HUtQ67T4YmAgMSXiI9xu4SG+qSWSwWseFb1 yMlj/Ac10AvAn7S0LdYxSiSzXIm7iM1QRYuo+GXtiHut3l8x/pkhlVqMwKMSAEx8zwwUAg0HVmH YORSczK3xnnJ8bJH5klerw0eUkLMsA4UryvlUXwNpeg5Dw2nt+k8TyuKEjSPtFAb X-Google-Smtp-Source: AGHT+IHWkfoVo6WCWWAnAD9KHbcxlFrJYCdT9xQcwQ44aqdL+YYj+H8SE029RdrX+kpIOTQKmx3LZw== X-Received: by 2002:a17:90b:534d:b0:2ee:b6c5:1def with SMTP id 98e67ed59e1d1-3057cb3237amr2650398a91.8.1743670774796; Thu, 03 Apr 2025 01:59:34 -0700 (PDT) Received: from fedora.dns.podman ([43.228.180.230]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-305827d710csm937620a91.10.2025.04.03.01.59.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Apr 2025 01:59:33 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Xiao Liang , Kuniyuki Iwashima , Alexander Lobakin , Stanislav Fomichev , Venkat Venkatsubra , Etienne Champetier , Di Zhu , Nikolay Aleksandrov , Travis Brown , Suresh Krishnan , linux-kselftest@vger.kernel.org, Hangbin Liu Subject: [PATCH net 2/3] macvlan: fix NETDEV_UP/NETDEV_DOWN event handling Date: Thu, 3 Apr 2025 08:58:56 +0000 Message-ID: <20250403085857.17868-3-liuhangbin@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20250403085857.17868-1-liuhangbin@gmail.com> References: <20250403085857.17868-1-liuhangbin@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Setting the link down does not necessarily change the carrier state for virtual interfaces like bonding. Therefore, handling the device up/down event via netif_stacked_transfer_operstate() is not sufficient. If the lower link and macvlan are in different namespaces, the upper link state may become out of sync. Fix this by updating the handling logic to be similar to VLAN. Fixes: de7d244d0a35 ("macvlan: make operstate and carrier more accurate") Fixes: 80fd2d6ca546 ("macvlan: Change status when lower device goes down") Signed-off-by: Hangbin Liu --- drivers/net/macvlan.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index d0dfa6bca6cc..f254cda14dac 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -1781,10 +1781,12 @@ static void update_port_bc_queue_len(struct macvlan_port *port) static int macvlan_device_event(struct notifier_block *unused, unsigned long event, void *ptr) { + struct netlink_ext_ack *extack = netdev_notifier_info_to_extack(ptr); struct net_device *dev = netdev_notifier_info_to_dev(ptr); struct macvlan_dev *vlan, *next; struct macvlan_port *port; LIST_HEAD(list_kill); + int flags; if (!netif_is_macvlan_port(dev)) return NOTIFY_DONE; @@ -1793,7 +1795,25 @@ static int macvlan_device_event(struct notifier_block *unused, switch (event) { case NETDEV_UP: + list_for_each_entry(vlan, &port->vlans, list) { + flags = vlan->dev->flags; + if (flags & IFF_UP) + continue; + dev_change_flags(vlan->dev, flags | IFF_UP, extack); + netif_stacked_transfer_operstate(vlan->lowerdev, + vlan->dev); + } + break; case NETDEV_DOWN: + list_for_each_entry(vlan, &port->vlans, list) { + flags = vlan->dev->flags; + if (!(flags & IFF_UP)) + continue; + dev_close(vlan->dev); + netif_stacked_transfer_operstate(vlan->lowerdev, + vlan->dev); + } + break; case NETDEV_CHANGE: list_for_each_entry(vlan, &port->vlans, list) netif_stacked_transfer_operstate(vlan->lowerdev, From patchwork Thu Apr 3 08:58:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 14036948 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A0C4254847; Thu, 3 Apr 2025 08:59:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670785; cv=none; b=QauNL2xNzsWNdMkJbBHfKgxtLaeFjpUu6VHkPoDYbrOiSepVcx1OIlB2ku7EyQ61r0ZGTiul3QEsM1lnTjmdcpoPFKGBJeWUML6eL1nxlfPKQfDZJkdya4l0HIvR/zUV2cqs4gWzNLfvQBB6d3dyDnA+zNrR2GCq6JHI0F8+AEw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743670785; c=relaxed/simple; bh=vfw4cOguzxxLv5iG8cXVFe2BJm5ymXMhTDgmA0Y1scg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZdKQgvk/eYpu4DAV0Uoc92/HhU87vwpokb5KXBOMFBYWlIgzjCmMS26wsaPRXcrgmwQ/M6A3n2+bcvarSWBWxM4ZuVhfZ0R14bV/FeO8bRtNhb2G7HAX+UF0/BQ1jRZXMvpP9ygi3YMR85IbjBsZA9slKFUPs6xw1UIW/gPHwLw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fGF+M/YQ; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fGF+M/YQ" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-af5a4cd980dso503151a12.1; Thu, 03 Apr 2025 01:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743670782; x=1744275582; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GQoCdAZ6ZRNfTAkLkS2Ze1AI+2sYrEYh1iLVELMs+EQ=; b=fGF+M/YQ0OJcjpnY8tn8HyZRm5dDd2kSWjgE1y+whIozegseAX5f8fEoiTeOIr459z GGvIU0aX1CK7o9iaKnokfovr/8nOfJ5QALjbEoxwjsoJnIQsaoRNSGwwhSB710YPckXN A8QEYuNFz3hnzrt/gwFHNrPVO1HY5hEOZhJnXHKYTN77U7FpqRieqXavbulWeovnUNr6 w8LsqiYeX0P2dH8GJ/dTO+m6zF4jMGAvYBoGzImO6mQm3YKjeDh0YTSF7HtXkXxq26s1 hBDsDa3gRg9fRlUXHgOrkmOISK3qpSe/J1+/jIMa6GocAtk4xjF+M8m6ydZra+XmfGMt sPgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743670782; x=1744275582; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GQoCdAZ6ZRNfTAkLkS2Ze1AI+2sYrEYh1iLVELMs+EQ=; b=NOvWEKQNaSZh7OJljRs8AkRkbW5zMMN/8v2FuNHmVDLaY6/cVhW+RoNf7F/0kaHUfj gQxWet6ntpZkpskChezQFSA5VLFkzgA24pBXijmqDzKwjyyJnIjSpQAwHsOA0x1/IbI5 QENSxQsWDCg82caqtwK5euOTTVB65wk0vxXZ/voFJmBB6pk8/r1BM92/lvjaTwUK7MWm Faai9/iwqubovTLtRN4z6jDK2CKSIqpYGynUzj3z6pMn1ntw6Xm9aGubzeuEJTyeR0o6 +oiGDD7zn8+1fu0M0pPARcTBzWOzD5dJRcKspHfan45Ce4JOEaViRellNGvJOygWruNt 0Uvw== X-Forwarded-Encrypted: i=1; AJvYcCXF/c4PP2farp5vQHZxgxvMLGwQJSLsB7dDWMcNo3IHSiB5VWm/KwQ927Lb3L0Hn5SBujviKW3PpT+zB080dKg=@vger.kernel.org X-Gm-Message-State: AOJu0YwKRiucts/tEV0pDtsZMuSs1vDxaj0j+MR8n5e/wn8mCav6eyMs puvhqeGrUuxTSeZdRFDRa6zoxtHM7m50s+p07Nq5eJl03F4EjYA54rKMcbMLrDU= X-Gm-Gg: ASbGncuatzyRjfA3p2EwONnSS1krzfvYXbop5DCu8b9pxCXtharur+d6Q7ZHsXlU9NO 4aZGM5FSN0GfEHto9YQ4xczqG7ooUMLZe4jmj8FMacp3/T4i8kax0lW2ovxuV8iJvM5tbf3UJCU wHhJ8RheGpMHdtw2A+LX/ucUECIwtweey/hx3HIwwQonoN+fD5IlfwZhH+Zd4VeuPV/IGxGTbFJ 35OPROBLZvSzEzaENw7Jr/CAb4FgfRPlVme8kaWQfFRIcitQ5OoBPC3OzCh5LkdMSzI7wyvh0ix QsezhEw5JLSWnjCCZn0lUVvP5T65rxhYHqToDe7oiRM3nvP6K7noaZ1KpuXXqXJS X-Google-Smtp-Source: AGHT+IERSDq8mrh8/5r2HejtuRMwYArP2+4K6ZXYMStSkQ9alZ3LLhbSWS5Bp1/522V9qRB4ww1xrQ== X-Received: by 2002:a17:90b:2648:b0:2ee:90a1:5d42 with SMTP id 98e67ed59e1d1-3056eca1a6bmr9983957a91.0.1743670782307; Thu, 03 Apr 2025 01:59:42 -0700 (PDT) Received: from fedora.dns.podman ([43.228.180.230]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-305827d710csm937620a91.10.2025.04.03.01.59.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Apr 2025 01:59:41 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan , Xiao Liang , Kuniyuki Iwashima , Alexander Lobakin , Stanislav Fomichev , Venkat Venkatsubra , Etienne Champetier , Di Zhu , Nikolay Aleksandrov , Travis Brown , Suresh Krishnan , linux-kselftest@vger.kernel.org, Hangbin Liu Subject: [PATCH net 3/3] selftests/rtnetlink.sh: add vlan/ipvlan/macvlan link state test Date: Thu, 3 Apr 2025 08:58:57 +0000 Message-ID: <20250403085857.17868-4-liuhangbin@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20250403085857.17868-1-liuhangbin@gmail.com> References: <20250403085857.17868-1-liuhangbin@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Add tests to create vlan/ipvlan/macvlan over a bond interface and move them to a separate network namespace. Verify that the upper link state correctly reflects the lower-layer link state. # ./rtnetlink.sh -t "kci_test_vlan kci_test_ipvlan kci_test_macvlan" PASS: vlan link state correct PASS: ipvlan link state correct PASS: macvlan link state correct Signed-off-by: Hangbin Liu --- tools/testing/selftests/net/rtnetlink.sh | 64 ++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/tools/testing/selftests/net/rtnetlink.sh b/tools/testing/selftests/net/rtnetlink.sh index 2e8243a65b50..de2f5bed8777 100755 --- a/tools/testing/selftests/net/rtnetlink.sh +++ b/tools/testing/selftests/net/rtnetlink.sh @@ -30,6 +30,9 @@ ALL_TESTS=" kci_test_address_proto kci_test_enslave_bonding kci_test_mngtmpaddr + kci_test_vlan + kci_test_ipvlan + kci_test_macvlan " devdummy="test-dummy0" @@ -1334,6 +1337,67 @@ kci_test_mngtmpaddr() return $ret } +kci_test_link_state() +{ + local test_link=$(mktemp -u test_link-XXX) + local bond=$(mktemp -u bond-XXX) + local link_param=$2 + local link_type=$1 + local ret=0 + + setup_ns testns + if [ $? -ne 0 ]; then + end_test "SKIP ${link_type} netns tests: cannot add net namespace $testns" + return $ksft_skip + fi + + # 1. Test link state over bond + run_cmd ip link add dev $bond type bond mode active-backup miimon 10 + run_cmd ip link set dev ${devdummy} down + run_cmd ip link set dev ${devdummy} master $bond + run_cmd ip link set dev ${bond} up + run_cmd ip link add link ${bond} name ${test_link} type ${link_type} ${link_param} + run_cmd ip link set ${test_link} up + run_cmd ip link set ${devdummy} down + run_cmd_grep_fail "LOWER_UP" ip link show dev ${test_link} + run_cmd ip link set ${devdummy} up + run_cmd_grep "LOWER_UP" ip link show dev ${test_link} + + # 2. Test link state over bond in netns + run_cmd ip link set ${test_link} netns ${testns} + run_cmd ip -n ${testns} link set ${test_link} up + run_cmd ip link set ${devdummy} down + run_cmd_grep_fail "LOWER_UP" ip -n ${testns} link show dev ${test_link} + run_cmd ip link set ${devdummy} up + run_cmd_grep "LOWER_UP" ip -n ${testns} link show dev ${test_link} + ip -n ${testns} link del ${test_link} + + if [ $ret -ne 0 ]; then + end_test "FAIL: ${link_type} link state incorrect" + else + end_test "PASS: ${link_type} link state correct" + fi + + ip netns del "$testns" + ip link del dev ${bond} + return $ret +} + +kci_test_vlan() +{ + kci_test_link_state "vlan" "id 2" +} + +kci_test_ipvlan() +{ + kci_test_link_state "ipvlan" "mode l2" +} + +kci_test_macvlan() +{ + kci_test_link_state "macvlan" "mode bridge" +} + kci_test_rtnl() { local current_test