INET Framework for OMNeT++/OMNEST
IPv4InterfaceData Class Reference

#include <IPv4InterfaceData.h>

Inheritance diagram for IPv4InterfaceData:
InterfaceProtocolData

List of all members.

Public Types

typedef std::vector< IPAddressIPAddressVector

Public Member Functions

 IPv4InterfaceData ()
virtual ~IPv4InterfaceData ()
virtual std::string info () const
virtual std::string detailedInfo () const
Getters
IPAddress getIPAddress () const
IPAddress getNetmask () const
int getMetric () const
const IPAddressVectorgetMulticastGroups () const
bool isMemberOfMulticastGroup (const IPAddress &multicastAddress) const
Setters
virtual void setIPAddress (IPAddress a)
virtual void setNetmask (IPAddress m)
virtual void setMetric (int m)
virtual void setMulticastGroups (const IPAddressVector &v)

Protected Member Functions

void changed1 ()

Protected Attributes

IPAddress inetAddr
 IP address of interface.
IPAddress netmask
 netmask
int metric
 link "cost"; see e.g. MS KB article Q299540
IPAddressVector multicastGroups
 multicast groups

Private Member Functions

 IPv4InterfaceData (const IPv4InterfaceData &obj)
IPv4InterfaceDataoperator= (const IPv4InterfaceData &obj)

Detailed Description

IPv4-specific data in an InterfaceEntry. Stores interface IP address, netmask, metric, etc.

See also:
InterfaceEntry

Member Typedef Documentation


Constructor & Destructor Documentation

IPv4InterfaceData::IPv4InterfaceData ( const IPv4InterfaceData obj) [private]
IPv4InterfaceData::IPv4InterfaceData ( )
{
    static const IPAddress allOnes("255.255.255.255");
    netmask = allOnes;

    metric = 0;

    // TBD add default multicast groups!
}
virtual IPv4InterfaceData::~IPv4InterfaceData ( ) [inline, virtual]
{}

Member Function Documentation

void IPv4InterfaceData::changed1 ( ) [inline, protected]
std::string IPv4InterfaceData::detailedInfo ( ) const [virtual]
{
    std::stringstream out;
    out << "inet addr:" << getIPAddress() << "\tMask: " << getNetmask() << "\n";

    out << "Metric: " << getMetric() << "\n";

    out << "Groups:";
    for (unsigned int j=0; j<getMulticastGroups().size(); j++)
        if (!getMulticastGroups()[j].isUnspecified())
            out << "  " << getMulticastGroups()[j];
    out << "\n";
    return out.str();
}
int IPv4InterfaceData::getMetric ( ) const [inline]
const IPAddressVector& IPv4InterfaceData::getMulticastGroups ( ) const [inline]
IPAddress IPv4InterfaceData::getNetmask ( ) const [inline]
std::string IPv4InterfaceData::info ( ) const [virtual]
{
    std::stringstream out;
    out << "IP:{inet_addr:" << getIPAddress() << "/" << getNetmask().getNetmaskLength();
    if (!getMulticastGroups().empty())
    {
        out << " mcastgrps:";
        for (unsigned int j=0; j<getMulticastGroups().size(); j++)
            if (!getMulticastGroups()[j].isUnspecified())
                out << (j>0?",":"") << getMulticastGroups()[j];
    }
    out << "}";
    return out.str();
}
bool IPv4InterfaceData::isMemberOfMulticastGroup ( const IPAddress multicastAddress) const

Referenced by RoutingTable::isLocalMulticastAddress().

{
    int n = getMulticastGroups().size();
    for (int i=0; i<n; i++)
        if (multicastAddress.equals(getMulticastGroups()[i]))
            return true;
    return false;
}
IPv4InterfaceData& IPv4InterfaceData::operator= ( const IPv4InterfaceData obj) [private]
virtual void IPv4InterfaceData::setMetric ( int  m) [inline, virtual]
virtual void IPv4InterfaceData::setMulticastGroups ( const IPAddressVector v) [inline, virtual]

Member Data Documentation

IP address of interface.

int IPv4InterfaceData::metric [protected]

link "cost"; see e.g. MS KB article Q299540

Referenced by IPv4InterfaceData().

netmask

Referenced by IPv4InterfaceData().


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