From patchwork Fri Jun 15 08:29:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 138661 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp549282lji; Fri, 15 Jun 2018 01:29:36 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKo55mdSHCl63vd4lrceiY7MXb7JPkpd2NmPXba3MRjLfvi7LoFqM8qaa8EGp+6ayL6Kjyf X-Received: by 2002:a50:9dc3:: with SMTP id l3-v6mr1060603edk.234.1529051376810; Fri, 15 Jun 2018 01:29:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529051376; cv=none; d=google.com; s=arc-20160816; b=E0VnaSm52yGeeiudTkop/Mdosg8bPvCszWGWyxXHsRPvbjhC4zXdcgx0lk8SEypG2R wkutF0Ev9PYcqanQLS+Fk+HZHu56w3IDhAMVELOHX++n11LCKiSKfZtcihDmJ7Sv/kqq gYBq0/HF+qJs0kv7/vR/J7zACp4UmyMa7Bijc9xz5OqmxtHROokvy07ltTxwVHiB5IJ4 eraSTV3563F5/G7PwwPdwV4Qzr2HM/G1Dbo3vBUaWnw5jHfsZHK9n8g2EnPuZdpmKbZe U70H66ugG7bnE3ZTN3edm0so7VYvZOVxvT6fp5tgx74w7LQ/XoORRzfJ69gJLvbwxJgQ W6og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:cc:references:in-reply-to:message-id :date:to:from:arc-authentication-results; bh=AKqRsywTH3X6gAkZKzSc6tiku143HvePoMM0xiORiXc=; b=BLBZV2OdIslpJ9yFya8X7Ax8n00Pqbw3GYCkSEce46GPh9f8bLJQaCt/g4bynEV+TC vRu9bvr/9kuMCm5jZ37vWC2jLhahoap71yQzFjX1g/ofaFmf+ne+bs+ZD4lEsJIYo5zZ 8aipazOkN2MsstXcLp2n9JZMB2cpQHaweDEmEBx/YdqO8SQBNcYmo6QOrtL7oOYoLmwC uuWlunSHLBfVad6cKWcBOlfUGI04SDvlTmTM+g+Dkgrk8RBwf9Um7FpMtxTT1WB8pjiq B+D+dFNUb+1DKDcuyYN94D1w0HeaL1T2dESNklZwErQS3VlD8LQ84N2IRQnlz/TN3TLX A8OQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Return-Path: Received: from lists.denx.de (dione.denx.de. [81.169.180.215]) by mx.google.com with ESMTP id m23-v6si1971293edd.448.2018.06.15.01.29.36; Fri, 15 Jun 2018 01:29:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) client-ip=81.169.180.215; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of u-boot-bounces@lists.denx.de designates 81.169.180.215 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by lists.denx.de (Postfix, from userid 105) id 5BB96C21DAF; Fri, 15 Jun 2018 08:29:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 4F695C21DA1; Fri, 15 Jun 2018 08:29:32 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B7116C21DD7; Fri, 15 Jun 2018 08:29:30 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id 57C74C21DA1 for ; Fri, 15 Jun 2018 08:29:30 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext-too.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 14C55AD9E; Fri, 15 Jun 2018 08:29:30 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Fri, 15 Jun 2018 10:29:28 +0200 Message-Id: <20180615082929.82491-3-agraf@suse.de> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20180615082929.82491-1-agraf@suse.de> References: <20180615082929.82491-1-agraf@suse.de> Cc: Joe Hershberger , Rick Chen , greentime@andestech.com Subject: [U-Boot] [PATCH v3 2/3] net: Add option to prefer bootp/dhcp serverip X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Currently we can choose between 2 different types of behavior for the serverip variable: 1) Always overwrite it with the DHCP server IP address (default) 2) Ignore what the DHCP server says (CONFIG_BOOTP_SERVERIP) This patch adds a 3rd option: 3) Use serverip from DHCP if no serverip is given (CONFIG_BOOTP_PREFER_SERVERIP) With this new option, we can have the default case that a boot file gets loaded from the DHCP provided TFTP server work while allowing users to specify their own serverip variable to explicitly use a different tftp server. Signed-off-by: Alexander Graf Acked-by: Joe Hershberger --- v1 -> v2: - remove README entry - improve Kconfig help texts --- cmd/Kconfig | 11 +++++++++++ net/bootp.c | 7 ++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/Kconfig b/cmd/Kconfig index e283cb9a8a..80a5af8a0c 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1121,6 +1121,17 @@ config BOOTP_HOSTNAME help The name may or may not be qualified with the local domain name. +config BOOTP_PREFER_SERVERIP + bool "Serverip variable takes precedent over DHCP server IP. + default n + depends on CMD_BOOTP + help + By default a BOOTP/DHCP reply will overwrite the 'serverip' variable. + + With this option enabled, the 'serverip' variable in the environment + takes precedence over DHCP server IP and will only be set by the DHCP + server if not already set in the environment. + config BOOTP_SUBNETMASK bool "Request & store 'netmask' from BOOTP/DHCP server" default y diff --git a/net/bootp.c b/net/bootp.c index fdcb4374a0..9a2b512e4a 100644 --- a/net/bootp.c +++ b/net/bootp.c @@ -147,9 +147,14 @@ static void store_net_params(struct bootp_hdr *bp) { #if !defined(CONFIG_BOOTP_SERVERIP) struct in_addr tmp_ip; + bool overwrite_serverip = true; + +#if defined(CONFIG_BOOTP_PREFER_SERVERIP) + overwrite_serverip = false; +#endif net_copy_ip(&tmp_ip, &bp->bp_siaddr); - if (tmp_ip.s_addr != 0) + if (tmp_ip.s_addr != 0 && (overwrite_serverip || !net_server_ip.s_addr)) net_copy_ip(&net_server_ip, &bp->bp_siaddr); memcpy(net_server_ethaddr, ((struct ethernet_hdr *)net_rx_packet)->et_src, 6);