From f7dc3f4faa4027027a192a3271af9dab81daaa65 Mon Sep 17 00:00:00 2001 From: Mudit Vats Date: Tue, 22 Jun 2021 15:37:11 -0700 Subject: [PATCH] feat: add AMT wireless adapter info to amtinfo LAN settings. --- commands.cpp | 6 ++++-- commands.h | 2 +- info.cpp | 42 ++++++++++++++++++++++++++++++++++-------- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/commands.cpp b/commands.cpp index 1b1f7dc..3bf50ca 100644 --- a/commands.cpp +++ b/commands.cpp @@ -377,14 +377,14 @@ bool cmd_get_remote_access_connection_status(int& network_status, int& remote_st return false; } -bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings) +bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings, bool wired_interface) { // initialize HECI interface if (heci_Init(NULL, PTHI_CLIENT) == 0) return false; // get wired interface LAN_SETTINGS lan_settings; - UINT32 interface_settings = 0; // wired=0, wireless=1 + UINT32 interface_settings = (wired_interface) ? 0 : 1; // wired=0, wireless=1 AMT_STATUS amt_status = pthi_GetLanInterfaceSettings(interface_settings, &lan_settings); if (amt_status == 0) { @@ -393,11 +393,13 @@ bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settin lan_interface_settings.dhcp_enabled = lan_settings.DhcpEnabled; lan_interface_settings.link_status = lan_settings.LinkStatus; + lan_interface_settings.ip_address.clear(); lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 24) & 0xff); lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 16) & 0xff); lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address >> 8) & 0xff); lan_interface_settings.ip_address.push_back((lan_settings.Ipv4Address) & 0xff); + lan_interface_settings.mac_address.clear(); lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[0]); lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[1]); lan_interface_settings.mac_address.push_back(lan_settings.MacAddress[2]); diff --git a/commands.h b/commands.h index 851ea6b..b9ad220 100644 --- a/commands.h +++ b/commands.h @@ -49,6 +49,6 @@ bool cmd_get_dns_suffix(std::string& suffix); bool cmd_get_wired_mac_address(std::vector& address); bool cmd_get_certificate_hashes(std::vector& hash_entries); bool cmd_get_remote_access_connection_status(int& network_status, int& remote_status, int& remote_trigger, std::string& mps_hostname); -bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings); +bool cmd_get_lan_interface_settings(lan_interface_settings& lan_interface_settings, bool wired_interface = true); #endif \ No newline at end of file diff --git a/info.cpp b/info.cpp index 6973b7c..1b18f57 100644 --- a/info.cpp +++ b/info.cpp @@ -20,7 +20,7 @@ void out_text(const std::string name, const std::vector value, co for (unsigned char tmp : value) { (hex) ? std::cout << std::setfill('0') << std::setw(2) << std::hex << (unsigned int)tmp - : std::cout << (unsigned int)tmp; + : std::cout << std::dec << (unsigned int)tmp; if (char_count++ < value.size()) { @@ -270,15 +270,41 @@ bool info_get_lan_interface_settings() tmp.ip_address.clear(); tmp.mac_address.clear(); - if (!cmd_get_lan_interface_settings(tmp)) return false; + bool hasWired = cmd_get_lan_interface_settings(tmp); + if (hasWired) + { + out_text("LAN Inteface", "wired"); + out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false"); + out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive"); + out_text("Link Status", (tmp.link_status) ? "up" : "down"); + out_text("IP Address", tmp.ip_address, '.', false); + out_text("MAC Address", tmp.mac_address, ':'); + } + + tmp.is_enabled = false; + tmp.link_status = false; + tmp.dhcp_enabled = false; + tmp.dhcp_mode = 0; + tmp.ip_address.clear(); + tmp.mac_address.clear(); - out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false"); - out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive"); - out_text("Link Status", (tmp.link_status) ? "up" : "down"); - out_text("IP Address", tmp.ip_address, '.', false); - out_text("MAC Address", tmp.mac_address, ':'); + bool hasWireless = cmd_get_lan_interface_settings(tmp, false); + if (hasWireless) + { + out_text("LAN Inteface", "wireless"); + out_text("DHCP Enabled", (tmp.dhcp_enabled) ? "true" : "false"); + out_text("DHCP Mode", (tmp.dhcp_mode == 1) ? "active" : "passive"); + out_text("Link Status", (tmp.link_status) ? "up" : "down"); + out_text("IP Address", tmp.ip_address, '.', false); + out_text("MAC Address", tmp.mac_address, ':'); + } - return true; + if (hasWired || hasWireless) + { + return true; + } + + return false; } bool info_get(const std::string info)