Utils/Termlib: Extend the completion API
[senf.git] / Socket / NetdeviceController.hh
index 6e8c06c..e969cda 100644 (file)
@@ -29,6 +29,8 @@
 
 // Custom includes
 #include <string>
+#include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
 #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<SockFd> 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_;
     };