// Custom includes
#include <sys/socket.h>
#include <sys/ioctl.h>
+#include <net/if.h>
#include "../Utils/Exception.hh"
#define prefix_
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
{
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()
///< 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.