11bbe3d1eSWilliam A. Kennington III #pragma once 2217bb3fdSWilliam A. Kennington III #include <sdeventplus/event.hpp> 3217bb3fdSWilliam A. Kennington III #include <sdeventplus/source/io.hpp> 432eef716SWilliam A. Kennington III #include <stdplus/fd/managed.hpp> 51bbe3d1eSWilliam A. Kennington III 61bbe3d1eSWilliam A. Kennington III namespace phosphor 71bbe3d1eSWilliam A. Kennington III { 81bbe3d1eSWilliam A. Kennington III namespace network 91bbe3d1eSWilliam A. Kennington III { 10*71590bfcSWilliam A. Kennington III class Manager; 115f165dccSWilliam A. Kennington III namespace netlink 121bbe3d1eSWilliam A. Kennington III { 131bbe3d1eSWilliam A. Kennington III 141bbe3d1eSWilliam A. Kennington III /** General rtnetlink server which waits for the POLLIN event 151bbe3d1eSWilliam A. Kennington III and calls the call back once it gets the event. 161bbe3d1eSWilliam A. Kennington III Usage would be create the server with the call back 171bbe3d1eSWilliam A. Kennington III and call the run method. 181bbe3d1eSWilliam A. Kennington III */ 191bbe3d1eSWilliam A. Kennington III class Server 201bbe3d1eSWilliam A. Kennington III { 211bbe3d1eSWilliam A. Kennington III public: 221bbe3d1eSWilliam A. Kennington III /** @brief Constructor 231bbe3d1eSWilliam A. Kennington III * 241bbe3d1eSWilliam A. Kennington III * @details Sets up the server to handle incoming RTNETLINK events 251bbe3d1eSWilliam A. Kennington III * 261bbe3d1eSWilliam A. Kennington III * @param[in] eventPtr - Unique ptr reference to sd_event. 27*71590bfcSWilliam A. Kennington III * @param[in] manager - The network manager that receives updates 281bbe3d1eSWilliam A. Kennington III */ 29*71590bfcSWilliam A. Kennington III Server(sdeventplus::Event& event, Manager& manager); 301bbe3d1eSWilliam A. Kennington III 3132eef716SWilliam A. Kennington III /** @brief Gets the socket associated with this netlink server */ getSock()3232eef716SWilliam A. Kennington III inline stdplus::Fd& getSock() 3332eef716SWilliam A. Kennington III { 3432eef716SWilliam A. Kennington III return sock; 3532eef716SWilliam A. Kennington III } 3632eef716SWilliam A. Kennington III 3732eef716SWilliam A. Kennington III private: 3832eef716SWilliam A. Kennington III stdplus::ManagedFd sock; 39217bb3fdSWilliam A. Kennington III sdeventplus::source::IO io; 401bbe3d1eSWilliam A. Kennington III }; 411bbe3d1eSWilliam A. Kennington III 425f165dccSWilliam A. Kennington III } // namespace netlink 431bbe3d1eSWilliam A. Kennington III } // namespace network 441bbe3d1eSWilliam A. Kennington III } // namespace phosphor 45