1c24de883SAsmitha Karunanithi #include "hyp_ethernet_interface.hpp" 2c24de883SAsmitha Karunanithi 3c24de883SAsmitha Karunanithi namespace phosphor 4c24de883SAsmitha Karunanithi { 5c24de883SAsmitha Karunanithi namespace network 6c24de883SAsmitha Karunanithi { 7c24de883SAsmitha Karunanithi 8c24de883SAsmitha Karunanithi using namespace phosphor::logging; 9c24de883SAsmitha Karunanithi using namespace sdbusplus::xyz::openbmc_project::Common::Error; 10c24de883SAsmitha Karunanithi using Argument = xyz::openbmc_project::Common::InvalidArgument; 11c24de883SAsmitha Karunanithi getBiosAttrsMap()12c24de883SAsmitha KarunanithibiosTableType HypEthInterface::getBiosAttrsMap() 13c24de883SAsmitha Karunanithi { 14c24de883SAsmitha Karunanithi return manager.getBIOSTableAttrs(); 15c24de883SAsmitha Karunanithi } 16c24de883SAsmitha Karunanithi ipv6AcceptRA(bool value)17*c8a5b7b7SAsmitha Karunanithibool HypEthInterface::ipv6AcceptRA(bool value) 18*c8a5b7b7SAsmitha Karunanithi { 19*c8a5b7b7SAsmitha Karunanithi auto currValue = ipv6AcceptRA(); 20*c8a5b7b7SAsmitha Karunanithi if (currValue != value) 21*c8a5b7b7SAsmitha Karunanithi { 22*c8a5b7b7SAsmitha Karunanithi HypEthernetIntf::ipv6AcceptRA(value); 23*c8a5b7b7SAsmitha Karunanithi } 24*c8a5b7b7SAsmitha Karunanithi return value; 25*c8a5b7b7SAsmitha Karunanithi } 26*c8a5b7b7SAsmitha Karunanithi dhcp4(bool value)27*c8a5b7b7SAsmitha Karunanithibool HypEthInterface::dhcp4(bool value) 28*c8a5b7b7SAsmitha Karunanithi { 29*c8a5b7b7SAsmitha Karunanithi auto currValue = dhcp4(); 30*c8a5b7b7SAsmitha Karunanithi if (currValue != value) 31*c8a5b7b7SAsmitha Karunanithi { 32*c8a5b7b7SAsmitha Karunanithi HypEthernetIntf::dhcp4(value); 33*c8a5b7b7SAsmitha Karunanithi } 34*c8a5b7b7SAsmitha Karunanithi return value; 35*c8a5b7b7SAsmitha Karunanithi } 36*c8a5b7b7SAsmitha Karunanithi dhcp6(bool value)37*c8a5b7b7SAsmitha Karunanithibool HypEthInterface::dhcp6(bool value) 38*c8a5b7b7SAsmitha Karunanithi { 39*c8a5b7b7SAsmitha Karunanithi auto currValue = dhcp6(); 40*c8a5b7b7SAsmitha Karunanithi if (currValue != value) 41*c8a5b7b7SAsmitha Karunanithi { 42*c8a5b7b7SAsmitha Karunanithi HypEthernetIntf::dhcp6(value); 43*c8a5b7b7SAsmitha Karunanithi } 44*c8a5b7b7SAsmitha Karunanithi return value; 45*c8a5b7b7SAsmitha Karunanithi } 46*c8a5b7b7SAsmitha Karunanithi dhcpIsEnabled(HypIP::Protocol family)47*c8a5b7b7SAsmitha Karunanithibool HypEthInterface::dhcpIsEnabled(HypIP::Protocol family) 48*c8a5b7b7SAsmitha Karunanithi { 49*c8a5b7b7SAsmitha Karunanithi switch (family) 50*c8a5b7b7SAsmitha Karunanithi { 51*c8a5b7b7SAsmitha Karunanithi case HypIP::Protocol::IPv6: 52*c8a5b7b7SAsmitha Karunanithi return dhcp6(); 53*c8a5b7b7SAsmitha Karunanithi case HypIP::Protocol::IPv4: 54*c8a5b7b7SAsmitha Karunanithi return dhcp4(); 55*c8a5b7b7SAsmitha Karunanithi } 56*c8a5b7b7SAsmitha Karunanithi throw std::logic_error("Unreachable"); 57*c8a5b7b7SAsmitha Karunanithi } 58*c8a5b7b7SAsmitha Karunanithi dhcpEnabled(DHCPConf value)59*c8a5b7b7SAsmitha KarunanithiHypEthInterface::DHCPConf HypEthInterface::dhcpEnabled(DHCPConf value) 60*c8a5b7b7SAsmitha Karunanithi { 61*c8a5b7b7SAsmitha Karunanithi auto old4 = HypEthernetIntf::dhcp4(); 62*c8a5b7b7SAsmitha Karunanithi auto new4 = HypEthernetIntf::dhcp4(value == DHCPConf::v4 || 63*c8a5b7b7SAsmitha Karunanithi value == DHCPConf::v4v6stateless || 64*c8a5b7b7SAsmitha Karunanithi value == DHCPConf::both); 65*c8a5b7b7SAsmitha Karunanithi auto old6 = HypEthernetIntf::dhcp6(); 66*c8a5b7b7SAsmitha Karunanithi auto new6 = HypEthernetIntf::dhcp6(value == DHCPConf::v6 || 67*c8a5b7b7SAsmitha Karunanithi value == DHCPConf::both); 68*c8a5b7b7SAsmitha Karunanithi auto oldra = HypEthernetIntf::ipv6AcceptRA(); 69*c8a5b7b7SAsmitha Karunanithi auto newra = HypEthernetIntf::ipv6AcceptRA( 70*c8a5b7b7SAsmitha Karunanithi value == DHCPConf::v6stateless || value == DHCPConf::v4v6stateless || 71*c8a5b7b7SAsmitha Karunanithi value == DHCPConf::v6 || value == DHCPConf::both); 72*c8a5b7b7SAsmitha Karunanithi 73*c8a5b7b7SAsmitha Karunanithi if (old4 != new4 || old6 != new6 || oldra != newra) 74*c8a5b7b7SAsmitha Karunanithi { 75*c8a5b7b7SAsmitha Karunanithi HypEthernetIntf::dhcpEnabled(value); 76*c8a5b7b7SAsmitha Karunanithi } 77*c8a5b7b7SAsmitha Karunanithi return value; 78*c8a5b7b7SAsmitha Karunanithi } 79*c8a5b7b7SAsmitha Karunanithi dhcpEnabled() const80*c8a5b7b7SAsmitha KarunanithiHypEthInterface::DHCPConf HypEthInterface::dhcpEnabled() const 81*c8a5b7b7SAsmitha Karunanithi { 82*c8a5b7b7SAsmitha Karunanithi if (dhcp6()) 83*c8a5b7b7SAsmitha Karunanithi { 84*c8a5b7b7SAsmitha Karunanithi return dhcp4() ? DHCPConf::both : DHCPConf::v6; 85*c8a5b7b7SAsmitha Karunanithi } 86*c8a5b7b7SAsmitha Karunanithi else if (dhcp4()) 87*c8a5b7b7SAsmitha Karunanithi { 88*c8a5b7b7SAsmitha Karunanithi return ipv6AcceptRA() ? DHCPConf::v4v6stateless : DHCPConf::v4; 89*c8a5b7b7SAsmitha Karunanithi } 90*c8a5b7b7SAsmitha Karunanithi return ipv6AcceptRA() ? DHCPConf::v6stateless : DHCPConf::none; 91*c8a5b7b7SAsmitha Karunanithi } 92*c8a5b7b7SAsmitha Karunanithi 93c24de883SAsmitha Karunanithi } // namespace network 94c24de883SAsmitha Karunanithi } // namespace phosphor 95