1 #pragma once
2 #include "types.hpp"
3 
4 #include <netinet/ether.h>
5 
6 #include <cstdint>
7 #include <optional>
8 #include <stdplus/zstring.hpp>
9 #include <stdplus/zstring_view.hpp>
10 #include <string_view>
11 
12 namespace phosphor::network::system
13 {
14 
15 struct EthInfo
16 {
17     bool autoneg;
18     uint16_t speed;
19 };
20 EthInfo getEthInfo(stdplus::zstring_view ifname);
21 
22 bool intfIsRunning(std::string_view ifname);
23 
24 unsigned intfIndex(stdplus::const_zstring ifname);
25 
26 std::optional<ether_addr> getMAC(stdplus::zstring_view ifname);
27 
28 std::optional<unsigned> getMTU(stdplus::zstring_view ifname);
29 
30 void setMTU(std::string_view ifname, unsigned mtu);
31 
32 void setNICUp(std::string_view ifname, bool up);
33 
34 /** @brief Get all the interfaces from the system.
35  *  @returns list of interface names.
36  */
37 string_uset getInterfaces();
38 
39 } // namespace phosphor::network::system
40