| #pragma once |
| #include "types.hpp" |
| |
| #include <net/ethernet.h> |
| |
| #include <cstdint> |
| #include <optional> |
| #include <stdplus/zstring.hpp> |
| #include <stdplus/zstring_view.hpp> |
| #include <string> |
| #include <string_view> |
| #include <vector> |
| |
| struct nlmsghdr; |
| |
| namespace phosphor::network::system |
| { |
| struct EthInfo |
| { |
| bool autoneg; |
| uint16_t speed; |
| }; |
| EthInfo getEthInfo(stdplus::zstring_view ifname); |
| |
| bool intfIsRunning(std::string_view ifname); |
| |
| std::optional<unsigned> getMTU(stdplus::zstring_view ifname); |
| |
| void setMTU(std::string_view ifname, unsigned mtu); |
| |
| void setNICUp(std::string_view ifname, bool up); |
| |
| struct AddressFilter |
| { |
| unsigned ifidx = 0; |
| }; |
| |
| struct NeighborFilter |
| { |
| unsigned ifidx = 0; |
| }; |
| |
| namespace detail |
| { |
| bool validateNewAddr(const AddressInfo& info, |
| const AddressFilter& filter) noexcept; |
| bool validateNewNeigh(const NeighborInfo& info, |
| const NeighborFilter& filter) noexcept; |
| } // namespace detail |
| |
| /** @brief Get all the interfaces from the system. |
| * @returns list of interface names. |
| */ |
| std::vector<InterfaceInfo> getInterfaces(); |
| |
| /** @brief Get all the addreses from the system. |
| * @returns list of addresses |
| */ |
| std::vector<AddressInfo> getAddresses(const AddressFilter& filter); |
| |
| /** @brief Returns a list of system neighbor table |
| */ |
| std::vector<NeighborInfo> getNeighbors(const NeighborFilter& filter); |
| |
| } // namespace phosphor::network::system |