Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Friends

InterfaceEntry Class Reference

#include <InterfaceEntry.h>

List of all members.

Public Member Functions

virtual void setInterfaceTable (IInterfaceTable *t)
virtual void setInterfaceId (int id)
 InterfaceEntry ()
virtual ~InterfaceEntry ()
virtual std::string info () const
virtual std::string detailedInfo () const
IInterfaceTablegetInterfaceTable () const
Field getters. Note they are non-virtual and inline, for performance reasons.

int getInterfaceId () const
int getNetworkLayerGateIndex () const
int getNodeOutputGateId () const
int getNodeInputGateId () const
int getPeerNamId () const
int getMTU () const
bool isDown () const
bool isBroadcast () const
bool isMulticast () const
bool isPointToPoint () const
bool isLoopback () const
double getDatarate () const
const MACAddressgetMacAddress () const
const InterfaceTokengetInterfaceToken () const
Field setters

virtual void setName (const char *s)
virtual void setNetworkLayerGateIndex (int i)
virtual void setNodeOutputGateId (int i)
virtual void setNodeInputGateId (int i)
virtual void setPeerNamId (int ni)
virtual void setMtu (int m)
virtual void setDown (bool b)
virtual void setBroadcast (bool b)
virtual void setMulticast (bool b)
virtual void setPointToPoint (bool b)
virtual void setLoopback (bool b)
virtual void setDatarate (double d)
virtual void setMACAddress (const MACAddress &addr)
virtual void setInterfaceToken (const InterfaceToken &t)
Accessing protocol-specific interface data. Note methods are non-virtual, for performance reasons.

IPv4InterfaceDataipv4Data ()
IPv6InterfaceDataipv6Data ()
InterfaceProtocolDatagetProtocol3Data ()
InterfaceProtocolDatagetProtocol4Data ()
Installing protocol-specific interface data

virtual void setIPv4Data (IPv4InterfaceData *p)
virtual void setIPv6Data (IPv6InterfaceData *p)
virtual void setProtocol3Data (InterfaceProtocolData *p)
virtual void setProtocol4Data (InterfaceProtocolData *p)

Protected Member Functions

virtual void configChanged ()
virtual void stateChanged ()
virtual void changed (int category)

Protected Attributes

IInterfaceTableownerp
 IInterfaceTable that contains this interface, or NULL.
int interfaceId
 identifies the interface in the IInterfaceTable
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)
IPv4InterfaceDataipv4data
 IPv4-specific interface info (IP address, etc).
IPv6InterfaceDataipv6data
 IPv6-specific interface info (IPv6 addresses, etc).
InterfaceProtocolDataprotocol3data
 extension point: data for a 3rd network-layer protocol
InterfaceProtocolDataprotocol4data
 extension point: data for a 4th network-layer protocol

Private Member Functions

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

Friends

class InterfaceProtocolData

Detailed Description

Interface entry for the interface table in IInterfaceTable.

See also:
IInterfaceTable

Definition at line 67 of file InterfaceEntry.h.


Constructor & Destructor Documentation

InterfaceEntry::InterfaceEntry ( const InterfaceEntry obj  )  [private]
InterfaceEntry::InterfaceEntry (  ) 

Definition at line 46 of file InterfaceEntry.cc.

{
    ownerp = NULL;

    nwLayerGateIndex = -1;
    nodeOutputGateId = -1;
    nodeInputGateId = -1;
    peernamid = -1;

    mtu = 0;

    down = false;
    broadcast = false;
    multicast = false;
    pointToPoint= false;
    loopback = false;
    datarate = 0;

    ipv4data = NULL;
    ipv6data = NULL;
    protocol3data = NULL;
    protocol4data = NULL;
}

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

Definition at line 110 of file InterfaceEntry.h.

{}


Member Function Documentation

void InterfaceEntry::changed ( int  category  )  [protected, virtual]

Definition at line 134 of file InterfaceEntry.cc.

Referenced by InterfaceProtocolData::changed().

{
    if (ownerp)
        ownerp->interfaceChanged(this, category);
}

virtual void InterfaceEntry::configChanged (  )  [inline, protected, virtual]

Definition at line 99 of file InterfaceEntry.h.

Referenced by setIPv4Data(), and setIPv6Data().

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

Definition at line 101 of file InterfaceEntry.cc.

{
    std::stringstream out;
    out << "name:" << (getName()[0] ? getName() : "*");
    if (getNetworkLayerGateIndex()==-1)
        out << "  on:-";
    else
        out << "  on:nwLayer.ifOut[" << getNetworkLayerGateIndex() << "]";
    out << "MTU: " << getMTU() << " \t";
    if (isDown()) out << "DOWN ";
    if (isBroadcast()) out << "BROADCAST ";
    if (isMulticast()) out << "MULTICAST ";
    if (isPointToPoint()) out << "POINTTOPOINT ";
    if (isLoopback()) out << "LOOPBACK ";
    out << "\n";
    out << "  macAddr:";
    if (getMacAddress().isUnspecified())
        out << "n/a";
    else
        out << getMacAddress();
    out << "\n";
    if (ipv4data)
        out << " " << ((cPolymorphic*)ipv4data)->info() << "\n"; // Khmm...
    if (ipv6data)
        out << " " << ((cPolymorphic*)ipv6data)->info() << "\n"; // Khmm...
    if (protocol3data)
        out << " " << protocol3data->info() << "\n";
    if (protocol4data)
        out << " " << protocol4data->info() << "\n";

    return out.str();
}

double InterfaceEntry::getDatarate (  )  const [inline]

Definition at line 132 of file InterfaceEntry.h.

Referenced by RoutingTable::configureInterfaceForIPv4(), and NAMTraceWriter::initialize().

{return datarate;}

int InterfaceEntry::getInterfaceId (  )  const [inline]
IInterfaceTable* InterfaceEntry::getInterfaceTable (  )  const [inline]

Returns the IInterfaceTable this interface is in, or NULL

Definition at line 117 of file InterfaceEntry.h.

{return ownerp;}

const InterfaceToken& InterfaceEntry::getInterfaceToken (  )  const [inline]
const MACAddress& InterfaceEntry::getMacAddress (  )  const [inline]
int InterfaceEntry::getMTU (  )  const [inline]
int InterfaceEntry::getNetworkLayerGateIndex (  )  const [inline]
int InterfaceEntry::getNodeInputGateId (  )  const [inline]

Definition at line 124 of file InterfaceEntry.h.

{return nodeInputGateId;}

int InterfaceEntry::getNodeOutputGateId (  )  const [inline]

Definition at line 123 of file InterfaceEntry.h.

Referenced by TED::initialize(), and NAMTraceWriter::initialize().

{return nodeOutputGateId;}

int InterfaceEntry::getPeerNamId (  )  const [inline]

Definition at line 125 of file InterfaceEntry.h.

Referenced by NAMTraceWriter::receiveChangeNotification().

{return peernamid;}

InterfaceProtocolData* InterfaceEntry::getProtocol3Data (  )  [inline]

Definition at line 159 of file InterfaceEntry.h.

{return protocol3data;}

InterfaceProtocolData* InterfaceEntry::getProtocol4Data (  )  [inline]

Definition at line 160 of file InterfaceEntry.h.

{return protocol4data;}

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

Definition at line 70 of file InterfaceEntry.cc.

Referenced by operator<<().

{
    std::stringstream out;
    out << (getName()[0] ? getName() : "*");
    if (getNetworkLayerGateIndex()==-1)
        out << "  on:-";
    else
        out << "  on:nwLayer.ifOut[" << getNetworkLayerGateIndex() << "]";
    out << "  MTU:" << getMTU();
    if (isDown()) out << " DOWN";
    if (isBroadcast()) out << " BROADCAST";
    if (isMulticast()) out << " MULTICAST";
    if (isPointToPoint()) out << " POINTTOPOINT";
    if (isLoopback()) out << " LOOPBACK";
    out << "  macAddr:";
    if (getMacAddress().isUnspecified())
        out << "n/a";
    else
        out << getMacAddress();

    if (ipv4data)
        out << " " << ((cPolymorphic*)ipv4data)->info(); // Khmm...
    if (ipv6data)
        out << " " << ((cPolymorphic*)ipv6data)->info(); // Khmm...
    if (protocol3data)
        out << " " << protocol3data->info();
    if (protocol4data)
        out << " " << protocol4data->info();
    return out.str();
}

IPv4InterfaceData* InterfaceEntry::ipv4Data (  )  [inline]
IPv6InterfaceData* InterfaceEntry::ipv6Data (  )  [inline]

Definition at line 158 of file InterfaceEntry.h.

Referenced by FlatNetworkConfigurator6::addOwnAdvPrefixRoutes(), FlatNetworkConfigurator6::addStaticRoutes(), IPv6NeighbourDiscovery::assignLinkLocalAddress(), RoutingTable6::assignRequiredNodeAddresses(), FlatNetworkConfigurator6::configureAdvPrefixes(), RoutingTable6::configureInterfaceFromXML(), IPv6NeighbourDiscovery::createAndSendRAPacket(), IPv6NeighbourDiscovery::createAndSendRSPacket(), IPv6NeighbourDiscovery::createRATimer(), IPAddressResolver::getAddressFrom(), RoutingTable6::getInterfaceByAddress(), IPAddressResolver::getInterfaceIPv6Address(), IPAddressResolver::getIPv6AddressFrom(), RoutingTable6::initialize(), IPv6NeighbourDiscovery::initialize(), IPv6NeighbourDiscovery::initiateAddressResolution(), IPv6NeighbourDiscovery::initiateDAD(), IPv6NeighbourDiscovery::initiateNeighbourUnreachabilityDetection(), IPv6NeighbourDiscovery::initiateRouterDiscovery(), RoutingTable6::isLocalAddress(), IPv6NeighbourDiscovery::processARTimeout(), IPv6NeighbourDiscovery::processDADTimeout(), SCTPAssociation::processInitArrived(), IPv6NeighbourDiscovery::processNAForIncompleteNCEState(), IPv6NeighbourDiscovery::processNAForOtherNCEStates(), IPv6NeighbourDiscovery::processNAPacket(), IPv6NeighbourDiscovery::processNSPacket(), IPv6NeighbourDiscovery::processNUDTimeout(), IPv6NeighbourDiscovery::processRAForRouterUpdates(), IPv6NeighbourDiscovery::processRAPacket(), IPv6NeighbourDiscovery::processRAPrefixInfoForAddrAutoConf(), IPv6NeighbourDiscovery::processRDTimeout(), IPv6NeighbourDiscovery::processRSPacket(), IPv6::routePacket(), SCTPAssociation::sendInit(), IPv6NeighbourDiscovery::sendPeriodicRA(), and IPv6NeighbourDiscovery::sendSolicitedNA().

{return ipv6data;}

bool InterfaceEntry::isBroadcast (  )  const [inline]

Definition at line 128 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), and ARP::processOutboundPacket().

{return broadcast;}

bool InterfaceEntry::isDown (  )  const [inline]

Definition at line 127 of file InterfaceEntry.h.

Referenced by detailedInfo(), and info().

{return down;}

bool InterfaceEntry::isLoopback (  )  const [inline]
bool InterfaceEntry::isMulticast (  )  const [inline]

Definition at line 129 of file InterfaceEntry.h.

Referenced by detailedInfo(), and info().

{return multicast;}

bool InterfaceEntry::isPointToPoint (  )  const [inline]

Definition at line 130 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), and NAMTraceWriter::initialize().

{return pointToPoint;}

InterfaceEntry& InterfaceEntry::operator= ( const InterfaceEntry obj  )  [private]
virtual void InterfaceEntry::setBroadcast ( bool  b  )  [inline, virtual]
virtual void InterfaceEntry::setDatarate ( double  d  )  [inline, virtual]

Definition at line 150 of file InterfaceEntry.h.

Referenced by PPP::registerInterface(), and EtherMACBase::registerInterface().

virtual void InterfaceEntry::setDown ( bool  b  )  [inline, virtual]

Definition at line 145 of file InterfaceEntry.h.

{down = b; stateChanged();}

virtual void InterfaceEntry::setInterfaceId ( int  id  )  [inline, virtual]

Definition at line 106 of file InterfaceEntry.h.

Referenced by InterfaceTable::addInterface().

{interfaceId = id;}

virtual void InterfaceEntry::setInterfaceTable ( IInterfaceTable t  )  [inline, virtual]

Definition at line 105 of file InterfaceEntry.h.

Referenced by InterfaceTable::addInterface().

{ownerp = t;}

virtual void InterfaceEntry::setInterfaceToken ( const InterfaceToken t  )  [inline, virtual]

Definition at line 152 of file InterfaceEntry.h.

Referenced by PPP::registerInterface(), and EtherMACBase::registerInterface().

{token = t; configChanged();}

void InterfaceEntry::setIPv4Data ( IPv4InterfaceData p  )  [virtual]

Definition at line 140 of file InterfaceEntry.cc.

Referenced by RoutingTable::configureInterfaceForIPv4(), and RoutingTable::configureLoopbackForIPv4().

{
#ifndef WITHOUT_IPv4
    ipv4data = p;
    p->ownerp = this;
    configChanged();
#else
    opp_error("setIPv4Data(): INET was compiled without IPv4 support");
#endif
}

void InterfaceEntry::setIPv6Data ( IPv6InterfaceData p  )  [virtual]

Definition at line 151 of file InterfaceEntry.cc.

Referenced by RoutingTable6::configureInterfaceForIPv6().

{
#ifndef WITHOUT_IPv6
    ipv6data = p;
    p->ownerp = this;
    configChanged();
#else
    opp_error("setIPv4Data(): INET was compiled without IPv6 support");
#endif
}

virtual void InterfaceEntry::setLoopback ( bool  b  )  [inline, virtual]

Definition at line 149 of file InterfaceEntry.h.

Referenced by InterfaceTable::initialize().

virtual void InterfaceEntry::setMACAddress ( const MACAddress addr  )  [inline, virtual]

Definition at line 151 of file InterfaceEntry.h.

Referenced by EtherMACBase::registerInterface().

{macAddr = addr; configChanged();}

virtual void InterfaceEntry::setMtu ( int  m  )  [inline, virtual]
virtual void InterfaceEntry::setMulticast ( bool  b  )  [inline, virtual]
virtual void InterfaceEntry::setName ( const char *  s  )  [inline, virtual]
virtual void InterfaceEntry::setNetworkLayerGateIndex ( int  i  )  [inline, virtual]
virtual void InterfaceEntry::setNodeInputGateId ( int  i  )  [inline, virtual]

Definition at line 142 of file InterfaceEntry.h.

Referenced by InterfaceTable::discoverConnectingGates().

virtual void InterfaceEntry::setNodeOutputGateId ( int  i  )  [inline, virtual]
virtual void InterfaceEntry::setPeerNamId ( int  ni  )  [inline, virtual]

Definition at line 143 of file InterfaceEntry.h.

Referenced by NAMTraceWriter::initialize().

virtual void InterfaceEntry::setPointToPoint ( bool  b  )  [inline, virtual]
virtual void InterfaceEntry::setProtocol3Data ( InterfaceProtocolData p  )  [inline, virtual]

Definition at line 167 of file InterfaceEntry.h.

virtual void InterfaceEntry::setProtocol4Data ( InterfaceProtocolData p  )  [inline, virtual]

Definition at line 168 of file InterfaceEntry.h.

virtual void InterfaceEntry::stateChanged (  )  [inline, protected, virtual]

Definition at line 100 of file InterfaceEntry.h.


Friends And Related Function Documentation

friend class InterfaceProtocolData [friend]

Definition at line 69 of file InterfaceEntry.h.


Member Data Documentation

bool InterfaceEntry::broadcast [protected]

interface supports broadcast

Definition at line 79 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

double InterfaceEntry::datarate [protected]

data rate in bit/s

Definition at line 83 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

bool InterfaceEntry::down [protected]

current state (up or down)

Definition at line 78 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

int InterfaceEntry::interfaceId [protected]

identifies the interface in the IInterfaceTable

Definition at line 72 of file InterfaceEntry.h.

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

Definition at line 87 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), InterfaceEntry(), and setIPv4Data().

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

Definition at line 88 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), InterfaceEntry(), and setIPv6Data().

bool InterfaceEntry::loopback [protected]

interface is loopback interface

Definition at line 82 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

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

Definition at line 84 of file InterfaceEntry.h.

int InterfaceEntry::mtu [protected]

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

Definition at line 77 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

bool InterfaceEntry::multicast [protected]

interface supports multicast

Definition at line 80 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

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

Definition at line 75 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

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

Definition at line 74 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

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

Definition at line 73 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

int InterfaceEntry::peernamid [protected]

used only when writing ns2 nam traces

Definition at line 76 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

bool InterfaceEntry::pointToPoint [protected]

interface is point-to-point link

Definition at line 81 of file InterfaceEntry.h.

Referenced by InterfaceEntry().

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

Definition at line 89 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), and InterfaceEntry().

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

Definition at line 90 of file InterfaceEntry.h.

Referenced by detailedInfo(), info(), and InterfaceEntry().

for IPv6 stateless autoconfig (RFC 1971)

Definition at line 85 of file InterfaceEntry.h.


The documentation for this class was generated from the following files: