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 Karunanithi biosTableType HypEthInterface::getBiosAttrsMap()
13c24de883SAsmitha Karunanithi {
14c24de883SAsmitha Karunanithi     return manager.getBIOSTableAttrs();
15c24de883SAsmitha Karunanithi }
16c24de883SAsmitha Karunanithi 
ipv6AcceptRA(bool value)17*c8a5b7b7SAsmitha Karunanithi bool 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 Karunanithi bool 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 Karunanithi bool 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 Karunanithi bool 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 Karunanithi HypEthInterface::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 Karunanithi HypEthInterface::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