From patchwork Thu Jun 14 10:04:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 138533 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp1903835lji; Thu, 14 Jun 2018 03:04:37 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIA9srgk3jMu5vBOzLMEC6rjfUuUbEq7MN548TOtC1aooNCWt0BfPN6JYDV+o+Y41wsSjxY X-Received: by 2002:a50:b14c:: with SMTP id l12-v6mr2060358edd.65.1528970677849; Thu, 14 Jun 2018 03:04:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528970677; cv=none; d=google.com; s=arc-20160816; b=NuFRQ52AhdBayOp/uKDYHRqC6EmVCPvHw1pd0buCJtVeYU1lgPI3ZBkOyD3brpcqC2 TH7mGE9qt5OW2C4K09Bs1tGOr3geUas3GmXwSCYI8XGJg//d5la4CVxLJ5MnBtpiltBi cnC8zlp1fSFU+BWnSbDvIqkak/ujawZPWFUTqSrdLXqfoUM0PGqpwJbps+AC3+OpATSk wRorCH77DJoeXqGPdY72X0uYfeSRNkXHG+q7ieGzLCnFQ63Ud2yEGGuxZsaXTy7jrLi6 qffq1TePQN32x3p6FMFkqpB6TOcPWssFhbanc0G4kp3v7IlDqZH+XBbp6XyH4LGgxlJS 73IA== 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=DfgFR7gvgFEsuyAgT27CfiBwcwpPDoytdWFzmqAIyzc=; b=i46ykFmrDg6aHMSIX57abPxJ++guyYkAOKzoePdzVJfSAl31/HhQHBbnkzEZy4FR3F 2duvhmPPenca0qaFsNAmj7VQRKTsfzsccti0hnvhl1LQYeVeBhkkVYdUgzi2vWMyT1cs mzjksexuqUQeIM+4FQBNHT8Ibk2rz1I/CBCt4k69wAcZpuE3glvQ5ITQoJ0QNlvc4/6d T5QpDzd0Cs4O8jsJIfImidoJQrmT2+cLqKkTuMGB+34zD3YoVbgEnX+2V2U7z832ENlg JODZJvLm10rtkB8+upxsb1oVvAb4pe+0OfDOemHfCt4Oa+NUQaiDQn/d10WlPcRJnyn2 TDKQ== 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 s4-v6si2165343edj.431.2018.06.14.03.04.36; Thu, 14 Jun 2018 03:04:37 -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 832ACC21DEC; Thu, 14 Jun 2018 10:04:33 +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 26A92C21C27; Thu, 14 Jun 2018 10:04:31 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5741FC21D83; Thu, 14 Jun 2018 10:04:29 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by lists.denx.de (Postfix) with ESMTPS id 01E7DC21BE5 for ; Thu, 14 Jun 2018 10:04:29 +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 606ACAEE8; Thu, 14 Jun 2018 10:04:28 +0000 (UTC) From: Alexander Graf To: u-boot@lists.denx.de Date: Thu, 14 Jun 2018 12:04:25 +0200 Message-Id: <20180614100426.40511-3-agraf@suse.de> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20180614100426.40511-1-agraf@suse.de> References: <20180614100426.40511-1-agraf@suse.de> Cc: Joe Hershberger , greentime@andestech.com Subject: [U-Boot] [PATCH v2 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 f3da8572b7..154c71d694 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);