xref: /openbmc/phosphor-networkd/src/rtnetlink_server.hpp (revision 86d25bb7798ed76c8c0306e38ae0d5b14ca755de)
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