From patchwork Thu Jul 27 09:01:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hangbin Liu X-Patchwork-Id: 794278 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="E7+oOi5F"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xJ5b42x7Pz9s72 for ; Thu, 27 Jul 2017 19:02:24 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751757AbdG0JCW (ORCPT ); Thu, 27 Jul 2017 05:02:22 -0400 Received: from mail-pg0-f68.google.com ([74.125.83.68]:37555 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750965AbdG0JCU (ORCPT ); Thu, 27 Jul 2017 05:02:20 -0400 Received: by mail-pg0-f68.google.com with SMTP id k190so4179647pgk.4 for ; Thu, 27 Jul 2017 02:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=LuqqdpELSBcVd8WWILI5Qcj/dlVqxmpYSOi90rrBUKw=; b=E7+oOi5FhuAF8kI8lI3LZFjEZ3d6CaHpvbHOjdtlU9DBiIN+70fhkMl3r8eaFf/4jh ByV+8tSQ/e8opQkN0hnrqsxL5uIrq6T6LcRjOjhyDBYvKCMqCB5QpePhCr+j3RDFqUwE nVrHIcZfCXbNdaLpA/UabX/0jhTW6z51gsDbulCEBcBPCgqZGXkw4vKaNrKSWm1+q70e t5VcDs7Tr7RDiuI0v3MZR22erwGfPfq0Pad8M00/4ywr8mkPXaYkTjwucuNtEs8GXmZ4 vPU/e/vPGwNQ6qhVpLBaX+NDQ3A0IP1uwe7NJVuZv6vtD9TNs/D2ZlFmEtjXeh0pos9P rlPA== 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; bh=LuqqdpELSBcVd8WWILI5Qcj/dlVqxmpYSOi90rrBUKw=; b=rqPSD/pP3030YV5QHYo6Ei/lMr7kB/jOmv8vAVYSpbC9oLXBmCNzey0Eofpzz4YU1+ Q81Ov19nGY8IAXjMqgVs8t+PYUAdALS4tohJ+9NpoEGLbGwGACidSVXjLHZV7yRNzdCc 9QL43afLgFr3srkjFjYEupyzo/saiw8d2RP2hs8DQ0JQqNbdxHFEh7BbKlSr05+WBuVU Euhysw9suNY3szjl48kEpBbh+312byTV8qswlw0LrBAx0wqOOs595beWjmWgj8zHlCFf XWVDg/todzsZRUltW+1ULTh4Y6hnx+8mP/vRhLZa8oAkiX61wuXXCkxEm0ZaUNgeLgpw W5RQ== X-Gm-Message-State: AIVw112CcRqjtV+I1Qyf4RZpduFlJL4n+0MMyW+qBA0q9AtjMFZifWA/ Vtww/9L0w8M5bz8B X-Received: by 10.99.96.193 with SMTP id u184mr3391357pgb.125.1501146140083; Thu, 27 Jul 2017 02:02:20 -0700 (PDT) Received: from leo.usersys.redhat.com ([209.132.188.80]) by smtp.gmail.com with ESMTPSA id w10sm35028769pgo.80.2017.07.27.02.02.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Jul 2017 02:02:19 -0700 (PDT) From: Hangbin Liu To: netdev@vger.kernel.org Cc: Nikolay Aleksandrov , Stephen Hemminger , Hangbin Liu Subject: [PATCH iproute2] utils: also check AF_INET family when rtm_type is RTN_MULTICAST Date: Thu, 27 Jul 2017 17:01:49 +0800 Message-Id: <1501146109-30032-1-git-send-email-liuhangbin@gmail.com> X-Mailer: git-send-email 2.5.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When we get a multicast route, the rtm_type is RTN_MULTICAST, but the rtm_family may be AF_INET. If we only check the type with RTNL_FAMILY_IPMR, we will get malformed address. e.g. + ip -4 route add multicast 172.111.1.1 dev em1 table main Before fix: + ip route list type multicast table main multicast ac6f:101:800:400:400:0:3c00:0 dev em1 scope link After fix: + ip route list type multicast table main multicast 172.111.1.1 dev em1 scope link Fixes: 56e3eb4c3400 ("ip: route: fix multicast route dumps") Signed-off-by: Hangbin Liu --- lib/utils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/utils.c b/lib/utils.c index e77bd30..0479e00 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -1215,5 +1215,6 @@ int get_real_family(int rtm_type, int rtm_family) if (rtm_type != RTN_MULTICAST) return rtm_family; - return rtm_family == RTNL_FAMILY_IPMR ? AF_INET : AF_INET6; + return (rtm_family == RTNL_FAMILY_IPMR || + rtm_family == AF_INET) ? AF_INET : AF_INET6; }