Skip to content
Snippets Groups Projects
Commit 063b81e6 authored by dw6's avatar dw6
Browse files

completing implementation, adding missing interfaceName(std::string)

parent 1a7bcb65
No related branches found
No related tags found
No related merge requests found
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
// Custom includes // Custom includes
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>
#include <net/if.h>
#include "../Utils/Exception.hh" #include "../Utils/Exception.hh"
#define prefix_ #define prefix_
...@@ -59,6 +60,22 @@ prefix_ std::string senf::NetdeviceController::interfaceName() ...@@ -59,6 +60,22 @@ prefix_ std::string senf::NetdeviceController::interfaceName()
return std::string( ifr.ifr_name); 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() prefix_ senf::MACAddress senf::NetdeviceController::hardwareAddress()
const const
{ {
...@@ -73,7 +90,12 @@ prefix_ void senf::NetdeviceController::hardwareAddress(const MACAddress &newAdd ...@@ -73,7 +90,12 @@ prefix_ void senf::NetdeviceController::hardwareAddress(const MACAddress &newAdd
ifrName( ifr); ifrName( ifr);
ifr.ifr_hwaddr.sa_family = 1; // TODO: lookup named constant; PF_LOCAL ??? ifr.ifr_hwaddr.sa_family = 1; // TODO: lookup named constant; PF_LOCAL ???
std::copy(newAddress.begin(), newAddress.end(), ifr.ifr_hwaddr.sa_data); 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() prefix_ int senf::NetdeviceController::mtu()
......
...@@ -61,13 +61,17 @@ namespace senf { ...@@ -61,13 +61,17 @@ namespace senf {
///< return hardware address ///< return hardware address
void hardwareAddress(const MACAddress &newAddress); void hardwareAddress(const MACAddress &newAddress);
///< set hardware address ///< 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; std::string interfaceName() const;
///< return interface name ///< return interface name
void interfaceName(const std::string &newName); void interfaceName(const std::string &newName);
///< set interface name ///< set interface name
/**< Changes the name of the interface. Note, that this is a /**< Changes the name of the interface.
privileged operation. It is only allowed when the interface is not up. */ 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 int mtu() const; ///< return the Maximum Transmission Unit
void mtu(int new_mtu); ///< set the Maximum Transmission Unit void mtu(int new_mtu); ///< set the Maximum Transmission Unit
/**< Set the MTU (Maximum Transfer Unit) of the device. /**< Set the MTU (Maximum Transfer Unit) of the device.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment