X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FNetdeviceController.hh;h=e969cda37bf0bd13a1927154b6e23b315f52444a;hb=6927c87144ca23845065e3c23e37c75f5f059cf3;hp=6e8c06c87529bbef186ed8e5191255954b7a9543;hpb=1ac8479aaaa1491e2668c6f09d042ae9de1f2113;p=senf.git diff --git a/Socket/NetdeviceController.hh b/Socket/NetdeviceController.hh index 6e8c06c..e969cda 100644 --- a/Socket/NetdeviceController.hh +++ b/Socket/NetdeviceController.hh @@ -29,6 +29,8 @@ // Custom includes #include +#include +#include #include "Protocols/Raw/MACAddress.hh" @@ -49,12 +51,10 @@ namespace senf { class NetdeviceController { public: - NetdeviceController(std::string const & interface_name); + explicit NetdeviceController(std::string const & interface_name); ///< Construct a new controller for the given interface name. - NetdeviceController(int interface_index); + explicit NetdeviceController(int interface_index); ///< Construct a new controller for the given interface index. - virtual ~NetdeviceController(); - int interfaceIndex() const; ///< return the interface index MACAddress hardwareAddress() const; ///< return hardware address @@ -90,11 +90,19 @@ namespace senf { void up(); ///< ifconfig up interface void down(); ///< ifconfig down interface + struct SockFd { + typedef boost::shared_ptr ptr; + int fd; + SockFd(); + ~SockFd(); + }; + + static SockFd::ptr sockfd(); + private: - void openSocket(); void doIoctl(ifreq& ifr, int request) const; void ifrName(ifreq& ifr) const; - int sockfd_; + SockFd::ptr sockfd_; int ifindex_; };