Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

InterfaceEntry Class Reference

#include <InterfaceEntry.h>

List of all members.


Detailed Description

Interface entry for the interface table in InterfaceTable.

See also:
InterfaceTable


Public Member Functions

 InterfaceEntry ()
virtual ~InterfaceEntry ()
virtual std::string info () const
virtual std::string detailedInfo () const
int interfaceId () const
const char * name () const
int networkLayerGateIndex () const
int nodeOutputGateId () const
int nodeInputGateId () const
int peerNamId () const
int mtu () const
bool isDown () const
bool isBroadcast () const
bool isMulticast () const
bool isPointToPoint () const
bool isLoopback () const
double datarate () const
const MACAddressmacAddress () const
const InterfaceTokeninterfaceToken () const
void setName (const char *s)
void setNetworkLayerGateIndex (int i)
void setNodeOutputGateId (int i)
void setNodeInputGateId (int i)
void setPeerNamId (int ni)
void setMtu (int m)
void setDown (bool b)
void setBroadcast (bool b)
void setMulticast (bool b)
void setPointToPoint (bool b)
void setLoopback (bool b)
void setDatarate (double d)
void setMACAddress (const MACAddress &macAddr)
void setInterfaceToken (const InterfaceToken &token)
IPv4InterfaceDataipv4 ()
IPv6InterfaceDataipv6 ()
cPolymorphic * protocol3 ()
cPolymorphic * protocol4 ()
void setIPv4Data (IPv4InterfaceData *p)
void setIPv6Data (IPv6InterfaceData *p)
void setProtocol3Data (cPolymorphic *p)
void setProtocol4Data (cPolymorphic *p)

Private Member Functions

 InterfaceEntry (const InterfaceEntry &obj)
InterfaceEntryoperator= (const InterfaceEntry &obj)

Private Attributes

int _interfaceId
 identifies the interface in the InterfaceTable
std::string _name
 interface name (must be unique)
int _nwLayerGateIndex
 index of ifIn[],ifOut[] gates to that interface (or -1 if virtual interface)
int _nodeOutputGateId
 id of the output gate of this host/router (or -1 if this is a virtual interface)
int _nodeInputGateId
 id of the input gate of this host/router (or -1 if this is a virtual interface)
int _peernamid
 used only when writing ns2 nam traces
int _mtu
 Maximum Transmission Unit (e.g. 1500 on Ethernet).
bool _down
 current state (up or down)
bool _broadcast
 interface supports broadcast
bool _multicast
 interface supports multicast
bool _pointToPoint
 interface is point-to-point link
bool _loopback
 interface is loopback interface
double _datarate
 data rate in bit/s
MACAddress _macAddr
 link-layer address (for now, only IEEE 802 MAC addresses are supported)
InterfaceToken _token
 for IPv6 stateless autoconfig (RFC 1971)
IPv4InterfaceData_ipv4data
 IPv4-specific interface info (IP address, etc).
IPv6InterfaceData_ipv6data
 IPv6-specific interface info (IPv6 addresses, etc).
cPolymorphic * _protocol3data
 extension point: data for a 3rd network-layer protocol
cPolymorphic * _protocol4data
 extension point: data for a 4th network-layer protocol

Friends

class InterfaceTable


Constructor & Destructor Documentation

InterfaceEntry::InterfaceEntry const InterfaceEntry obj  )  [private]
 

InterfaceEntry::InterfaceEntry  ) 
 

00032 {
00033     _nwLayerGateIndex = -1;
00034     _nodeOutputGateId = -1;
00035     _nodeInputGateId = -1;
00036     _peernamid = -1;
00037 
00038     _mtu = 0;
00039 
00040     _down = false;
00041     _broadcast = false;
00042     _multicast = false;
00043     _pointToPoint= false;
00044     _loopback = false;
00045     _datarate = 0;
00046 
00047     _ipv4data = NULL;
00048     _ipv6data = NULL;
00049     _protocol3data = NULL;
00050     _protocol4data = NULL;
00051 }

virtual InterfaceEntry::~InterfaceEntry  )  [inline, virtual]
 

00073 {}


Member Function Documentation

double InterfaceEntry::datarate  )  const [inline]
 

00089 {return _datarate;}

std::string InterfaceEntry::detailedInfo  )  const [virtual]
 

00085 {
00086     std::stringstream out;
00087     out << "name:" << (!_name.empty() ? name() : "*");
00088     if (networkLayerGateIndex()==-1)
00089         out << "  on:-";
00090     else
00091         out << "  on:nwLayer.ifOut[" << networkLayerGateIndex() << "]";
00092     out << "MTU: " << mtu() << " \t";
00093     if (isDown()) out << "DOWN ";
00094     if (isBroadcast()) out << "BROADCAST ";
00095     if (isMulticast()) out << "MULTICAST ";
00096     if (isPointToPoint()) out << "POINTTOPOINT ";
00097     if (isLoopback()) out << "LOOPBACK ";
00098     out << "\n";
00099     out << "  macAddr:";
00100     if (macAddress().isUnspecified())
00101         out << "n/a";
00102     else
00103         out << macAddress();
00104     out << "\n";
00105     if (_ipv4data)
00106         out << " " << ((cPolymorphic*)_ipv4data)->info() << "\n"; // Khmm...
00107     if (_ipv6data)
00108         out << " " << ((cPolymorphic*)_ipv6data)->info() << "\n"; // Khmm...
00109     if (_protocol3data)
00110         out << " " << _protocol3data->info() << "\n";
00111     if (_protocol4data)
00112         out << " " << _protocol4data->info() << "\n";
00113 
00114     return out.str();
00115 }

std::string InterfaceEntry::info  )  const [virtual]
 

00054 {
00055     std::stringstream out;
00056     out << (!_name.empty() ? name() : "*");
00057     if (networkLayerGateIndex()==-1)
00058         out << "  on:-";
00059     else
00060         out << "  on:nwLayer.ifOut[" << networkLayerGateIndex() << "]";
00061     out << "  MTU:" << mtu();
00062     if (isDown()) out << " DOWN";
00063     if (isBroadcast()) out << " BROADCAST";
00064     if (isMulticast()) out << " MULTICAST";
00065     if (isPointToPoint()) out << " POINTTOPOINT";
00066     if (isLoopback()) out << " LOOPBACK";
00067     out << "  macAddr:";
00068     if (macAddress().isUnspecified())
00069         out << "n/a";
00070     else
00071         out << macAddress();
00072 
00073     if (_ipv4data)
00074         out << " " << ((cPolymorphic*)_ipv4data)->info(); // Khmm...
00075     if (_ipv6data)
00076         out << " " << ((cPolymorphic*)_ipv6data)->info(); // Khmm...
00077     if (_protocol3data)
00078         out << " " << _protocol3data->info();
00079     if (_protocol4data)
00080         out << " " << _protocol4data->info();
00081     return out.str();
00082 }

int InterfaceEntry::interfaceId  )  const [inline]
 

00077 {return _interfaceId;}

const InterfaceToken& InterfaceEntry::interfaceToken  )  const [inline]
 

00091 {return _token;}//FIXME: Shouldn't this be interface identifier?

IPv4InterfaceData* InterfaceEntry::ipv4  )  [inline]
 

00108 {return _ipv4data;}

IPv6InterfaceData* InterfaceEntry::ipv6  )  [inline]
 

00109 {return _ipv6data;}

bool InterfaceEntry::isBroadcast  )  const [inline]
 

00085 {return _broadcast;}

bool InterfaceEntry::isDown  )  const [inline]
 

00084 {return _down;}

bool InterfaceEntry::isLoopback  )  const [inline]
 

00088 {return _loopback;}

bool InterfaceEntry::isMulticast  )  const [inline]
 

00086 {return _multicast;}

bool InterfaceEntry::isPointToPoint  )  const [inline]
 

00087 {return _pointToPoint;}

const MACAddress& InterfaceEntry::macAddress  )  const [inline]
 

00090 {return _macAddr;}

int InterfaceEntry::mtu  )  const [inline]
 

00083 {return _mtu;}

const char* InterfaceEntry::name  )  const [inline]
 

00078 {return _name.c_str();}

int InterfaceEntry::networkLayerGateIndex  )  const [inline]
 

00079 {return _nwLayerGateIndex;}

int InterfaceEntry::nodeInputGateId  )  const [inline]
 

00081 {return _nodeInputGateId;}

int InterfaceEntry::nodeOutputGateId  )  const [inline]
 

00080 {return _nodeOutputGateId;}

InterfaceEntry& InterfaceEntry::operator= const InterfaceEntry obj  )  [private]
 

int InterfaceEntry::peerNamId  )  const [inline]
 

00082 {return _peernamid;}

cPolymorphic* InterfaceEntry::protocol3  )  [inline]
 

00110 {return _protocol3data;}

cPolymorphic* InterfaceEntry::protocol4  )  [inline]
 

00111 {return _protocol4data;}

void InterfaceEntry::setBroadcast bool  b  )  [inline]
 

00100 {_broadcast = b;}

void InterfaceEntry::setDatarate double  d  )  [inline]
 

00104 {_datarate = d;}

void InterfaceEntry::setDown bool  b  )  [inline]
 

00099 {_down = b;}

void InterfaceEntry::setInterfaceToken const InterfaceToken token  )  [inline]
 

00106 {_token=token;}

void InterfaceEntry::setIPv4Data IPv4InterfaceData p  )  [inline]
 

00113 {_ipv4data = p;}

void InterfaceEntry::setIPv6Data IPv6InterfaceData p  )  [inline]
 

00114 {_ipv6data = p;}

void InterfaceEntry::setLoopback bool  b  )  [inline]
 

00103 {_loopback = b;}

void InterfaceEntry::setMACAddress const MACAddress macAddr  )  [inline]
 

00105 {_macAddr=macAddr;}

void InterfaceEntry::setMtu int  m  )  [inline]
 

00098 {_mtu = m;}

void InterfaceEntry::setMulticast bool  b  )  [inline]
 

00101 {_multicast = b;}

void InterfaceEntry::setName const char *  s  )  [inline]
 

00093 {_name = s;}

void InterfaceEntry::setNetworkLayerGateIndex int  i  )  [inline]
 

00094 {_nwLayerGateIndex = i;}

void InterfaceEntry::setNodeInputGateId int  i  )  [inline]
 

00096 {_nodeInputGateId = i;}

void InterfaceEntry::setNodeOutputGateId int  i  )  [inline]
 

00095 {_nodeOutputGateId = i;}

void InterfaceEntry::setPeerNamId int  ni  )  [inline]
 

00097 {_peernamid = ni;}

void InterfaceEntry::setPointToPoint bool  b  )  [inline]
 

00102 {_pointToPoint = b;}

void InterfaceEntry::setProtocol3Data cPolymorphic *  p  )  [inline]
 

00115 {_protocol3data = p;}

void InterfaceEntry::setProtocol4Data cPolymorphic *  p  )  [inline]
 

00116 {_protocol4data = p;}


Friends And Related Function Documentation

friend class InterfaceTable [friend]
 


Member Data Documentation

bool InterfaceEntry::_broadcast [private]
 

interface supports broadcast

double InterfaceEntry::_datarate [private]
 

data rate in bit/s

bool InterfaceEntry::_down [private]
 

current state (up or down)

int InterfaceEntry::_interfaceId [private]
 

identifies the interface in the InterfaceTable

IPv4InterfaceData* InterfaceEntry::_ipv4data [private]
 

IPv4-specific interface info (IP address, etc).

IPv6InterfaceData* InterfaceEntry::_ipv6data [private]
 

IPv6-specific interface info (IPv6 addresses, etc).

bool InterfaceEntry::_loopback [private]
 

interface is loopback interface

MACAddress InterfaceEntry::_macAddr [private]
 

link-layer address (for now, only IEEE 802 MAC addresses are supported)

int InterfaceEntry::_mtu [private]
 

Maximum Transmission Unit (e.g. 1500 on Ethernet).

bool InterfaceEntry::_multicast [private]
 

interface supports multicast

std::string InterfaceEntry::_name [private]
 

interface name (must be unique)

int InterfaceEntry::_nodeInputGateId [private]
 

id of the input gate of this host/router (or -1 if this is a virtual interface)

int InterfaceEntry::_nodeOutputGateId [private]
 

id of the output gate of this host/router (or -1 if this is a virtual interface)

int InterfaceEntry::_nwLayerGateIndex [private]
 

index of ifIn[],ifOut[] gates to that interface (or -1 if virtual interface)

int InterfaceEntry::_peernamid [private]
 

used only when writing ns2 nam traces

bool InterfaceEntry::_pointToPoint [private]
 

interface is point-to-point link

cPolymorphic* InterfaceEntry::_protocol3data [private]
 

extension point: data for a 3rd network-layer protocol

cPolymorphic* InterfaceEntry::_protocol4data [private]
 

extension point: data for a 4th network-layer protocol

InterfaceToken InterfaceEntry::_token [private]
 

for IPv6 stateless autoconfig (RFC 1971)


The documentation for this class was generated from the following files:
Generated on Thu Oct 19 18:22:24 2006 for INET Framework for OMNeT++/OMNEST by  doxygen 1.4.0