From: dw6 Date: Tue, 25 Nov 2008 15:41:26 +0000 (+0000) Subject: completing implementation, adding missing interfaceName(std::string) X-Git-Url: http://g0dil.de/git?a=commitdiff_plain;h=560113811e6d51fffb4ca004e7342ec362234cd2;p=senf.git completing implementation, adding missing interfaceName(std::string) git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@981 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/Socket/NetdeviceController.cc b/Socket/NetdeviceController.cc index 37c255f..7ce1f95 100644 --- a/Socket/NetdeviceController.cc +++ b/Socket/NetdeviceController.cc @@ -30,6 +30,7 @@ // Custom includes #include #include +#include #include "../Utils/Exception.hh" #define prefix_ @@ -59,6 +60,22 @@ prefix_ std::string senf::NetdeviceController::interfaceName() return std::string( ifr.ifr_name); } +prefix_ void senf::NetdeviceController::interfaceName(const std::string & newname) +{ + if (sizeof(newname) <= IFNAMSIZ) { + struct ifreq ifr; + ifrName(ifr); + strncpy(ifr. ifr_newname, newname.c_str(), IFNAMSIZ); + try { + doIoctl(ifr, SIOCSIFNAME); + } catch (senf::SystemException e) { + e << "Could not change the interface name. Is the interface really down?"; + throw ; + } + } + return; +} + prefix_ senf::MACAddress senf::NetdeviceController::hardwareAddress() const { @@ -73,7 +90,12 @@ prefix_ void senf::NetdeviceController::hardwareAddress(const MACAddress &newAdd ifrName( ifr); ifr.ifr_hwaddr.sa_family = 1; // TODO: lookup named constant; PF_LOCAL ??? std::copy(newAddress.begin(), newAddress.end(), ifr.ifr_hwaddr.sa_data); - doIoctl( ifr, SIOCSIFHWADDR); + try { + doIoctl(ifr, SIOCSIFHWADDR); + } catch (senf::SystemException e) { + e << "Could not change the interface MAC address. Is the interface really down?"; + throw ; + } } prefix_ int senf::NetdeviceController::mtu() diff --git a/Socket/NetdeviceController.hh b/Socket/NetdeviceController.hh index babe980..5f80968 100644 --- a/Socket/NetdeviceController.hh +++ b/Socket/NetdeviceController.hh @@ -61,13 +61,17 @@ namespace senf { ///< return hardware address void hardwareAddress(const MACAddress &newAddress); ///< set hardware address - /**< Note, that setting the hardware address is a privileged operation. */ + /**< Changes the hardware address of the interface. + Note, that setting the hardware address is a privileged operation. It is only allowed when the interface + is not up. If the interface is up, this call will cause an SystemException to be thrown.*/ std::string interfaceName() const; ///< return interface name void interfaceName(const std::string &newName); ///< set interface name - /**< Changes the name of the interface. Note, that this is a - privileged operation. It is only allowed when the interface is not up. */ + /**< Changes the name of the interface. + Note, that setting the name is a privileged operation. It is only allowed when the interface + is not up. If the interface is up, this call will cause an SystemException to be thrown.*/ + int mtu() const; ///< return the Maximum Transmission Unit void mtu(int new_mtu); ///< set the Maximum Transmission Unit /**< Set the MTU (Maximum Transfer Unit) of the device.