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 @@
// Custom includes
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#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()
......
......@@ -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.
......
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