From patchwork Thu Jan 18 05:05:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Mendoza-Jonas X-Patchwork-Id: 862757 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zMXDz30k0z9s81 for ; Thu, 18 Jan 2018 16:14:11 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=mendozajonas.com header.i=@mendozajonas.com header.b="D7H8K1g9"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="dAAapMjr"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3zMXDz1BwbzF0Tb for ; Thu, 18 Jan 2018 16:14:11 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=mendozajonas.com header.i=@mendozajonas.com header.b="D7H8K1g9"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="dAAapMjr"; dkim-atps=neutral X-Original-To: petitboot@lists.ozlabs.org Delivered-To: petitboot@lists.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=mendozajonas.com (client-ip=66.111.4.25; helo=out1-smtp.messagingengine.com; envelope-from=sam@mendozajonas.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=mendozajonas.com header.i=@mendozajonas.com header.b="D7H8K1g9"; dkim=pass (2048-bit key; unprotected) header.d=messagingengine.com header.i=@messagingengine.com header.b="dAAapMjr"; dkim-atps=neutral Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com [66.111.4.25]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3zMXCf6R8LzF0hS for ; Thu, 18 Jan 2018 16:13:02 +1100 (AEDT) Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailout.nyi.internal (Postfix) with ESMTP id E57E120C9B; Thu, 18 Jan 2018 00:05:41 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute2.internal (MEProxy); Thu, 18 Jan 2018 00:05:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= mendozajonas.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=PMoqWg/yxavvDP+uPHYus1WZqOGG3mO+Y80UBQNXhQU=; b=D7H8K1g9 cYpuDW/VeIVkjqqjj16j1faPy2Nv3MohB6kHyvV9ALDHZI8FqsIaSoO6KFDYWIX0 cV5aQKdTOtP/5dLok4R7CI8k/ftD3FjyPKWdLPLbsMvCkiJtc72aNOqxDDUvHwvA sHLGqzyLeBfSek+b5U2wQWtO3bSCIW8wDRDt9C9+PYsANm+WFRox0JkMSyMTjhW2 OJSjTxH0Fm4etnbyzC4pBPR4H9VQdW5W9eX9PTnz7iE2XJ5hS61fEkIgsMzsey4j A09GgfvEtCPyS2sjZK0pkDqlDFjxTLVF8JdHfC/cPEBWsFoqjLPhn8Oaq0g3ZyOW 47Qi1xJJ76tobA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; bh=PMoqWg/yxavvDP+uPHYus1WZqOGG3mO+Y80UBQNXhQU=; b=dAAapMjr Rn+bU1g9KqUFmWboIy4CjCMF0XfiPwABcWSkhAmMvrIdYZN8qT6fZqV/71o/R2VE cyfI0Nlyi4sKUz2Q2i4tGVhNoMOzc1wzwiS0CE8B3aqca16gW44bKxwkBS7c6Hsk stE59B7nubzzZBSF8/k8rGdEigAbRUEMicCcKBLRixoi3c3M7QaLuo8SQnXNvNC4 WCaI6e6i3u/3/ASU28pJ4SVkswmgXGhcEGngkPgeJy3UK5tiy90H6as3OPc5hCaD Xn70RD9PigYVNk/I4mvaFu3IM0kELaW1YK/Ppycz/Cnhz8IzBtKyN+AHCPy071Si l3hXaTiv4FwYYw== X-ME-Sender: Received: from v4.ozlabs.ibm.com (unknown [122.99.82.10]) by mail.messagingengine.com (Postfix) with ESMTPA id BC10E240F8; Thu, 18 Jan 2018 00:05:40 -0500 (EST) From: Samuel Mendoza-Jonas To: petitboot@lists.ozlabs.org Subject: [[RFC PATCH] v2 09/14] Retrieve IP address of BMC Date: Thu, 18 Jan 2018 16:05:12 +1100 Message-Id: <20180118050517.2442-10-sam@mendozajonas.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180118050517.2442-1-sam@mendozajonas.com> References: <20180118050517.2442-1-sam@mendozajonas.com> X-BeenThere: petitboot@lists.ozlabs.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Petitboot bootloader development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Samuel Mendoza-Jonas MIME-Version: 1.0 Errors-To: petitboot-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Petitboot" Signed-off-by: Samuel Mendoza-Jonas --- discover/platform-powerpc.c | 27 ++++++++++++++++++++++++++- lib/pb-protocol/pb-protocol.c | 7 +++++++ lib/types/types.h | 1 + ui/ncurses/nc-sysinfo.c | 3 +++ 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index 2478a00..df95e02 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -983,6 +983,29 @@ static int set_ipmi_os_boot_sensor(struct platform_powerpc *platform) return 0; } +static void get_ipmi_bmc_ip(struct platform *p, char **buf) +{ + struct platform_powerpc *platform = p->platform_data; + uint16_t resp_len = 8; + uint8_t resp[8]; + uint8_t req[] = { 0x1, 0x3, 0x0, 0x0 }; + int rc; + + rc = ipmi_transaction(platform->ipmi, IPMI_NETFN_TRANSPORT, + IPMI_CMD_TRANSPORT_GET_LAN_PARAMS, + req, sizeof(req), + resp, &resp_len, + ipmi_timeout); + + pb_debug("BMC IP resp [%d][%d]:\n", rc, resp_len); + + if (rc == 0 && resp_len >= 6) + *buf = talloc_asprintf(platform, "%u.%u.%u.%u", + resp[2], resp[3], resp[4], resp[5]); + + pb_log("BMC IP: %s\n", rc ? "unknown" : *buf); +} + static void get_ipmi_bmc_mac(struct platform *p, uint8_t *buf) { struct platform_powerpc *platform = p->platform_data; @@ -1317,8 +1340,10 @@ static int get_sysinfo(struct platform *p, struct system_info *sysinfo) talloc_free(filename); sysinfo->bmc_mac = talloc_zero_size(sysinfo, HWADDR_SIZE); - if (platform->ipmi) + if (platform->ipmi) { get_ipmi_bmc_mac(p, sysinfo->bmc_mac); + get_ipmi_bmc_ip(p, &sysinfo->bmc_ip); + } if (platform->ipmi) get_ipmi_bmc_versions(p, sysinfo); diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index cf4ddb4..cd258a5 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -287,6 +287,8 @@ int pb_protocol_system_info_len(const struct system_info *sysinfo) /* BMC MAC */ len += HWADDR_SIZE; + len += 4 + optional_strlen(sysinfo->bmc_ip); + return len; } @@ -557,6 +559,8 @@ int pb_protocol_serialise_system_info(const struct system_info *sysinfo, memset(pos, 0, HWADDR_SIZE); pos += HWADDR_SIZE; + pos += pb_protocol_serialise_string(pos, sysinfo->bmc_ip); + *(bool *)pos = __cpu_to_be32(sysinfo->update_support); pos += sizeof(bool); @@ -1131,6 +1135,9 @@ int pb_protocol_deserialise_system_info(struct system_info *sysinfo, pos += HWADDR_SIZE; len -= HWADDR_SIZE; + if (read_string(sysinfo, &pos, &len, &sysinfo->bmc_ip)) + goto out; + sysinfo->update_support = *(bool *)pos; pos += sizeof(sysinfo->update_support); diff --git a/lib/types/types.h b/lib/types/types.h index 03dad2b..434dbb4 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -147,6 +147,7 @@ struct system_info { unsigned int n_bmc_current; unsigned int n_bmc_golden; uint8_t *bmc_mac; + char *bmc_ip; struct interface_info **interfaces; unsigned int n_interfaces; struct blockdev_info **blockdevs; diff --git a/ui/ncurses/nc-sysinfo.c b/ui/ncurses/nc-sysinfo.c index 2d3ce82..c2bcf5b 100644 --- a/ui/ncurses/nc-sysinfo.c +++ b/ui/ncurses/nc-sysinfo.c @@ -120,6 +120,9 @@ static void sysinfo_screen_populate(struct sysinfo_screen *screen, line(_(" MAC: %s"), macbuf); } + if (sysinfo->bmc_ip) + line(_(" IP: %s"), sysinfo->bmc_ip); + if (sysinfo->n_interfaces) { line(NULL); line(_("Network interfaces"));