From patchwork Thu Aug 8 21:00:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Michelson X-Patchwork-Id: 1144178 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 464LNr12mtz9sDB for ; Fri, 9 Aug 2019 07:00:11 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 7CAFCCC3; Thu, 8 Aug 2019 21:00:08 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id 3BC37CBA for ; Thu, 8 Aug 2019 21:00:08 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id D80D514D for ; Thu, 8 Aug 2019 21:00:07 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 520B230FB8E1 for ; Thu, 8 Aug 2019 21:00:07 +0000 (UTC) Received: from monae.redhat.com (ovpn-120-161.rdu2.redhat.com [10.10.120.161]) by smtp.corp.redhat.com (Postfix) with ESMTP id CD5621001284 for ; Thu, 8 Aug 2019 21:00:06 +0000 (UTC) From: Mark Michelson To: dev@openvswitch.org Date: Thu, 8 Aug 2019 17:00:05 -0400 Message-Id: <20190808210005.18980-1-mmichels@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.47]); Thu, 08 Aug 2019 21:00:07 +0000 (UTC) X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCHv2 ovn] Prevent erroneous duplicate IP address messages. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org When using dynamic address assignment for logical switches, OVN reserves the first address in the subnet for the attached router port to use. In commit 488d153ee87841c042af05bc0eb8b5481aaa98cf, the IPAM code was modified to add assigned router port addresses to IPAM. The use case for this was when a switch was joined to multiple routers, and all router addresses were dynamically assigned. However, that commit also made it so that when a router rightly claimed the first address in the subnet, ovn-northd would issue a warning about a duplicate IP address being set. This change fixes the issue by adding a special case so that we don't add the router's IP address to IPAM if it is the first address in the subnet. This prevents the warning message from appearing. Signed-off-by: Mark Michelson Acked-by: Numan Siddique Acked-by: Han ZHou --- v1->v2: Added "ovn" to subject line --- northd/ovn-northd.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/northd/ovn-northd.c b/northd/ovn-northd.c index e6953a405..f27fb70e4 100644 --- a/northd/ovn-northd.c +++ b/northd/ovn-northd.c @@ -1194,7 +1194,14 @@ ipam_add_port_addresses(struct ovn_datapath *od, struct ovn_port *op) for (size_t i = 0; i < lrp_networks.n_ipv4_addrs; i++) { uint32_t ip = ntohl(lrp_networks.ipv4_addrs[i].addr); - ipam_insert_ip(op->peer->od, ip); + /* If the router has the first IP address of the subnet, don't add + * it to IPAM. We already added this when we initialized IPAM for + * the datapath. This will just result in an erroneous message + * about a duplicate IP address. + */ + if (ip != op->peer->od->ipam_info.start_ipv4) { + ipam_insert_ip(op->peer->od, ip); + } } destroy_lport_addresses(&lrp_networks);