-// $Id: AddressingPolicy.hh 296 2007-07-10 20:39:34Z g0dil $
+// $Id$
//
// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
-// Thorsten Horstmann <thorsten.horstmann@fokus.fraunhofer.de>
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
+// Thorsten Horstmann <tho@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// Custom includes
#include <string>
+#include <net/if.h>
#include "Protocols/Raw/MACAddress.hh"
+
//#include "NetdeviceController.mpp"
///////////////////////////////hh.p////////////////////////////////////////
/** \brief NetdeviceController
\todo document me
+ \todo Add 'promisc' member to enable/disable promiscuous mode
*/
class NetdeviceController
{
public:
- NetdeviceController(std::string const interface_name);
-
+ NetdeviceController(std::string const & interface_name);
+ NetdeviceController(int interface_index);
virtual ~NetdeviceController();
- MACAddress hardwareAddress();
+ int interfaceIndex() const; ///< return the interface index
+ MACAddress hardwareAddress() const; ///< return hardware address
+ void hardwareAddress(const MACAddress &newAddress); ///< set hardware address
+
+ std::string interfaceName() const; ///< return interface name
+ void interfaceName(const std::string &newName) const; ///< set interface name
+
+ int mtu() const; ///< return the Maximum Transmission Unit
+ void mtu(int new_mtu) const; //< set the Maximum Transmission Unit
+
private:
+ void openSocket();
+ void doIoctl(ifreq& ifr, int request) const;
+ void ifrName(ifreq& ifr) const;
int sockfd_;
- std::string interfacename_;
+ int ifindex_;
};
}