INET Framework for OMNeT++/OMNEST
AnsaOSPFcommon.h File Reference
#include <ctype.h>
#include <stdio.h>
#include <functional>

Go to the source code of this file.

Classes

struct  AnsaOSPF::AuthenticationKeyType
struct  AnsaOSPF::IPv4Address
class  AnsaOSPF::IPv4Address_Less
struct  AnsaOSPF::IPv4AddressRange
class  AnsaOSPF::IPv4AddressRange_Less
struct  AnsaOSPF::HostRouteParameters
struct  AnsaOSPF::LSAKeyType
class  AnsaOSPF::LSAKeyType_Less
struct  AnsaOSPF::DesignatedRouterID

Namespaces

namespace  AnsaOSPF

Defines

#define LS_REFRESH_TIME   1800
#define MIN_LS_INTERVAL   5
#define MIN_LS_ARRIVAL   1
#define MAX_AGE   3600
#define CHECK_AGE   300
#define MAX_AGE_DIFF   900
#define LS_INFINITY   16777215
#define DEFAULT_DESTINATION_ADDRESS   0
#define DEFAULT_DESTINATION_MASK   0
#define INITIAL_SEQUENCE_NUMBER   -2147483647
#define MAX_SEQUENCE_NUMBER   2147483647
#define VIRTUAL_LINK_TTL   32
#define IPV4_HEADER_LENGTH   60
#define IPV4_DATAGRAM_LENGTH   65536
#define OSPF_HEADER_LENGTH   24
#define OSPF_LSA_HEADER_LENGTH   20
#define OSPF_DD_HEADER_LENGTH   8
#define OSPF_REQUEST_LENGTH   12
#define OSPF_ROUTERLSA_HEADER_LENGTH   4
#define OSPF_LINK_HEADER_LENGTH   12
#define OSPF_TOS_LENGTH   4
#define OSPF_NETWORKLSA_MASK_LENGTH   4
#define OSPF_NETWORKLSA_ADDRESS_LENGTH   4
#define OSPF_SUMMARYLSA_HEADER_LENGTH   8
#define OSPF_ASEXTERNALLSA_HEADER_LENGTH   16
#define OSPF_ASEXTERNALLSA_TOS_INFO_LENGTH   12

Typedefs

typedef unsigned long AnsaOSPF::Metric
typedef unsigned long AnsaOSPF::RouterID
typedef unsigned long AnsaOSPF::AreaID
typedef unsigned long AnsaOSPF::LinkStateID

Enumerations

enum  AnsaOSPF::AuthenticationType { AnsaOSPF::NullType = 0, AnsaOSPF::SimplePasswordType = 1, AnsaOSPF::CrytographicType = 2 }

Functions

bool operator== (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
bool operator!= (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
bool operator< (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
bool operator<= (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
bool operator> (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
bool operator>= (AnsaOSPF::IPv4Address leftAddress, AnsaOSPF::IPv4Address rightAddress)
AnsaOSPF::IPv4Address operator& (AnsaOSPF::IPv4Address address, AnsaOSPF::IPv4Address mask)
AnsaOSPF::IPv4Address operator| (AnsaOSPF::IPv4Address address, AnsaOSPF::IPv4Address match)
AnsaOSPF::IPv4Address operator~ (AnsaOSPF::IPv4Address wildcard)
bool operator== (AnsaOSPF::IPv4AddressRange leftAddressRange, AnsaOSPF::IPv4AddressRange rightAddressRange)
bool operator!= (AnsaOSPF::IPv4AddressRange leftAddressRange, AnsaOSPF::IPv4AddressRange rightAddressRange)
bool operator== (AnsaOSPF::DesignatedRouterID leftID, AnsaOSPF::DesignatedRouterID rightID)
bool operator!= (AnsaOSPF::DesignatedRouterID leftID, AnsaOSPF::DesignatedRouterID rightID)
AnsaOSPF::IPv4Address IPv4AddressFromAddressString (const char *charForm)
AnsaOSPF::IPv4Address IPv4AddressFromULong (unsigned long longForm)
unsigned long ULongFromIPv4Address (AnsaOSPF::IPv4Address byteForm)
unsigned long ULongFromAddressString (const char *charForm)
char * AddressStringFromIPv4Address (char *buffer, int bufferLength, AnsaOSPF::IPv4Address byteForm)
char * AddressStringFromULong (char *buffer, int bufferLength, unsigned long longForm)
char HexCharToByte (char hex)
char HexPairToByte (char upperHex, char lowerHex)

Variables

const RouterID AnsaOSPF::NullRouterID = 0
const AreaID AnsaOSPF::BackboneAreaID = 0
const LinkStateID AnsaOSPF::NullLinkStateID = 0
const IPv4Address AnsaOSPF::NullIPv4Address = { {0, 0, 0, 0} }
const IPv4Address AnsaOSPF::AllSPFRouters = { {224, 0, 0, 5} }
const IPv4Address AnsaOSPF::AllDRouters = { {224, 0, 0, 6} }
const IPv4AddressRange AnsaOSPF::NullIPv4AddressRange = { { {0, 0, 0, 0} }, { {0, 0, 0, 0} } }
const DesignatedRouterID AnsaOSPF::NullDesignatedRouterID = { 0, { {0, 0, 0, 0} } }

Define Documentation

Definition at line 16 of file AnsaOSPFcommon.h.

#define DEFAULT_DESTINATION_MASK   0

Definition at line 17 of file AnsaOSPFcommon.h.

#define LS_INFINITY   16777215

Definition at line 15 of file AnsaOSPFcommon.h.

#define MAX_AGE   3600

Definition at line 12 of file AnsaOSPFcommon.h.

Referenced by AnsaOSPF::Router::AgeDatabase(), OSPF::Router::AgeDatabase(), AnsaOSPF::Area::AgeDatabase(), OSPF::Area::AgeDatabase(), AnsaOSPF::InterfaceState::ChangeState(), AnsaOSPF::NeighborState::ChangeState(), OSPF::InterfaceState::ChangeState(), OSPF::NeighborState::ChangeState(), AnsaOSPF::Neighbor::CreateDatabaseSummary(), AnsaOspf6::Neighbor::CreateDatabaseSummary(), OSPF::Neighbor::CreateDatabaseSummary(), AnsaOSPF::Interface::CreateUpdatePacket(), OSPF::Interface::CreateUpdatePacket(), AnsaOspf6::Interface::CreateUpdatePacket(), AnsaOSPF::RouterLSA::DiffersFrom(), AnsaOspf6::RouterLsa::DiffersFrom(), AnsaOSPF::NetworkLSA::DiffersFrom(), OSPF::RouterLSA::DiffersFrom(), AnsaOspf6::NetworkLsa::DiffersFrom(), OSPF::NetworkLSA::DiffersFrom(), AnsaOSPF::SummaryLSA::DiffersFrom(), AnsaOspf6::InterAreaPrefixLsa::DiffersFrom(), OSPF::SummaryLSA::DiffersFrom(), AnsaOspf6::InterAreaRouterLsa::DiffersFrom(), AnsaOSPF::ASExternalLSA::DiffersFrom(), AnsaOspf6::AsExternalLsa::DiffersFrom(), OSPF::ASExternalLSA::DiffersFrom(), AnsaOspf6::LinkLsa::DiffersFrom(), AnsaOspf6::IntraAreaPrefixLsa::DiffersFrom(), AnsaOSPF::Router::InstallASExternalLSA(), OSPF::Router::InstallASExternalLSA(), operator<(), operator==(), AnsaOSPF::HelloHandler::ProcessPacket(), OSPF::HelloHandler::ProcessPacket(), AnsaOSPF::LinkStateUpdateHandler::ProcessPacket(), AnsaOspf6::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateUpdateHandler::ProcessPacket(), AnsaOSPF::Router::RemoveExternalRoute(), OSPF::Router::RemoveExternalRoute(), AnsaOSPF::Neighbor::RetransmitUpdatePacket(), AnsaOspf6::Neighbor::RetransmitUpdatePacket(), and OSPF::Neighbor::RetransmitUpdatePacket().

#define MAX_AGE_DIFF   900

Definition at line 14 of file AnsaOSPFcommon.h.

Referenced by operator<(), and operator==().

#define MIN_LS_INTERVAL   5

Definition at line 10 of file AnsaOSPFcommon.h.

Definition at line 34 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

Definition at line 35 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

#define OSPF_LINK_HEADER_LENGTH   12

Definition at line 29 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

Definition at line 32 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

Definition at line 31 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

Definition at line 28 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

Definition at line 33 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

#define OSPF_TOS_LENGTH   4

Definition at line 30 of file AnsaOSPFcommon.h.

Referenced by CalculateLSASize().

#define VIRTUAL_LINK_TTL   32

Definition at line 21 of file AnsaOSPFcommon.h.

Referenced by AnsaOSPF::LinkStateUpdateHandler::AcknowledgeLSA(), AnsaOspf6::LinkStateUpdateHandler::AcknowledgeLSA(), OSPF::LinkStateUpdateHandler::AcknowledgeLSA(), AnsaOSPF::Interface::FloodLSA(), OSPF::Interface::FloodLSA(), AnsaOspf6::Interface::FloodLSA(), AnsaOSPF::InterfaceStatePointToPoint::ProcessEvent(), AnsaOSPF::InterfaceStateWaiting::ProcessEvent(), AnsaOSPF::InterfaceStateBackup::ProcessEvent(), AnsaOSPF::InterfaceStateDesignatedRouter::ProcessEvent(), AnsaOSPF::NeighborStateDown::ProcessEvent(), AnsaOspf6::NeighborStateDown::ProcessEvent(), AnsaOspf6::InterfaceStateDesignatedRouter::ProcessEvent(), AnsaOspf6::InterfaceStatePointToPoint::ProcessEvent(), AnsaOspf6::InterfaceStateWaiting::ProcessEvent(), AnsaOspf6::InterfaceStateBackup::ProcessEvent(), OSPF::InterfaceStatePointToPoint::ProcessEvent(), OSPF::InterfaceStateBackup::ProcessEvent(), OSPF::InterfaceStateDesignatedRouter::ProcessEvent(), OSPF::InterfaceStateWaiting::ProcessEvent(), OSPF::NeighborStateDown::ProcessEvent(), AnsaOSPF::LinkStateRequestHandler::ProcessPacket(), AnsaOspf6::LinkStateRequestHandler::ProcessPacket(), AnsaOSPF::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateRequestHandler::ProcessPacket(), AnsaOspf6::LinkStateUpdateHandler::ProcessPacket(), OSPF::LinkStateUpdateHandler::ProcessPacket(), AnsaOSPF::Neighbor::RetransmitDatabaseDescriptionPacket(), AnsaOspf6::Neighbor::RetransmitDatabaseDescriptionPacket(), OSPF::Neighbor::RetransmitDatabaseDescriptionPacket(), AnsaOSPF::Neighbor::RetransmitUpdatePacket(), AnsaOspf6::Neighbor::RetransmitUpdatePacket(), OSPF::Neighbor::RetransmitUpdatePacket(), AnsaOSPF::Neighbor::SendDatabaseDescriptionPacket(), AnsaOspf6::Neighbor::SendDatabaseDescriptionPacket(), OSPF::Neighbor::SendDatabaseDescriptionPacket(), AnsaOSPF::Interface::SendDelayedAcknowledgements(), OSPF::Interface::SendDelayedAcknowledgements(), AnsaOspf6::Interface::SendDelayedAcknowledgements(), AnsaOSPF::Neighbor::SendLinkStateRequestPacket(), AnsaOspf6::Neighbor::SendLinkStateRequestPacket(), OSPF::Neighbor::SendLinkStateRequestPacket(), AnsaOSPF::Interface::SendLSAcknowledgement(), OSPF::Interface::SendLSAcknowledgement(), and AnsaOspf6::Interface::SendLSAcknowledgement().


Function Documentation

char HexCharToByte ( char  hex) [inline]

Definition at line 309 of file AnsaOSPFcommon.h.

Referenced by HexPairToByte().

{
    switch (hex) {
        case '0':   return 0;
        case '1':   return 1;
        case '2':   return 2;
        case '3':   return 3;
        case '4':   return 4;
        case '5':   return 5;
        case '6':   return 6;
        case '7':   return 7;
        case '8':   return 8;
        case '9':   return 9;
        case 'A':   return 10;
        case 'B':   return 11;
        case 'C':   return 12;
        case 'D':   return 13;
        case 'E':   return 14;
        case 'F':   return 15;
        case 'a':   return 10;
        case 'b':   return 11;
        case 'c':   return 12;
        case 'd':   return 13;
        case 'e':   return 14;
        case 'f':   return 15;
        default:    return 0;
    };
}
AnsaOSPF::IPv4Address IPv4AddressFromAddressString ( const char *  charForm) [inline]

Definition at line 217 of file AnsaOSPFcommon.h.

Referenced by AnsaOSPFRouting::AnsaLoadArea(), AnsaOSPFRouting::AnsaLoadInterface(), OSPFRouting::LoadAreaFromXML(), AnsaOSPFRouting::LoadAreaFromXML(), OSPFRouting::LoadExternalRoute(), AnsaOSPFRouting::LoadExternalRoute(), OSPFRouting::LoadHostRoute(), AnsaOSPFRouting::LoadHostRoute(), OSPFRouting::LoadInterfaceParameters(), AnsaOSPFRouting::LoadInterfaceParameters(), AnsaOSPF::Interface::SetIfIndex(), OSPF::Interface::SetIfIndex(), and ULongFromAddressString().

{
    AnsaOSPF::IPv4Address byteForm = AnsaOSPF::NullIPv4Address;

    int  lastDot = -1;
    int  byteCount = 0;
    for (int i = 0; i < 16; i++) {
        if (charForm[i] == '\0') {
            if ((byteCount <= 3) && (i - lastDot - 1 <= 3)) {
                switch (i - lastDot - 1) {
                    case 3: byteForm.bytes[byteCount] += (((charForm[i - 3] - '0') < 3) ? (charForm[i - 3] - '0') : 0) * 100;
                    case 2: byteForm.bytes[byteCount] += (charForm[i - 2] - '0') * 10;
                    case 1: byteForm.bytes[byteCount] += charForm[i - 1] - '0';
                    default: break;
                }
            }
            break;
        }
        if ((!isdigit(charForm[i])) && (charForm[i] != '.')) {
            break;
        }
        if (charForm[i] == '.') {
            if (i == 0) {
                break;
            }
            if (i - lastDot - 1 > 3) {
                break;
            }
            switch (i - lastDot - 1) {
                case 3: byteForm.bytes[byteCount] += (((charForm[i - 3] - '0') < 3) ? (charForm[i - 3] - '0') : 0) * 100;
                case 2: byteForm.bytes[byteCount] += (charForm[i - 2] - '0') * 10;
                case 1: byteForm.bytes[byteCount] += charForm[i - 1] - '0';
                default: break;
            }
            byteCount++;
            lastDot = i;
            if (byteCount > 3) {
                break;
            }
        }
    }

    return byteForm;
}
bool operator!= ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 121 of file AnsaOSPFcommon.h.

{
    return (!(leftAddress == rightAddress));
}
bool operator!= ( AnsaOSPF::IPv4AddressRange  leftAddressRange,
AnsaOSPF::IPv4AddressRange  rightAddressRange 
) [inline]

Definition at line 182 of file AnsaOSPFcommon.h.

{
    return (!(leftAddressRange == rightAddressRange));
}
bool operator!= ( AnsaOSPF::DesignatedRouterID  leftID,
AnsaOSPF::DesignatedRouterID  rightID 
) [inline]

Definition at line 193 of file AnsaOSPFcommon.h.

{
    return (!(leftID == rightID));
}
AnsaOSPF::IPv4Address operator& ( AnsaOSPF::IPv4Address  address,
AnsaOSPF::IPv4Address  mask 
) [inline]

Definition at line 146 of file AnsaOSPFcommon.h.

{
    AnsaOSPF::IPv4Address maskedAddress;
    maskedAddress.bytes[0] = address.bytes[0] & mask.bytes[0];
    maskedAddress.bytes[1] = address.bytes[1] & mask.bytes[1];
    maskedAddress.bytes[2] = address.bytes[2] & mask.bytes[2];
    maskedAddress.bytes[3] = address.bytes[3] & mask.bytes[3];
    return maskedAddress;
}
bool operator< ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 126 of file AnsaOSPFcommon.h.

{
        return leftAddress.asInt() < rightAddress.asInt();
}
bool operator<= ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 131 of file AnsaOSPFcommon.h.

{
    return ((leftAddress < rightAddress) || (leftAddress == rightAddress));
}
bool operator== ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 113 of file AnsaOSPFcommon.h.

{
    return (leftAddress.bytes[0] == rightAddress.bytes[0] &&
            leftAddress.bytes[1] == rightAddress.bytes[1] &&
            leftAddress.bytes[2] == rightAddress.bytes[2] &&
            leftAddress.bytes[3] == rightAddress.bytes[3]);
}
bool operator== ( AnsaOSPF::IPv4AddressRange  leftAddressRange,
AnsaOSPF::IPv4AddressRange  rightAddressRange 
) [inline]

Definition at line 176 of file AnsaOSPFcommon.h.

{
    return (leftAddressRange.address == rightAddressRange.address &&
            leftAddressRange.mask    == rightAddressRange.mask);
}
bool operator== ( AnsaOSPF::DesignatedRouterID  leftID,
AnsaOSPF::DesignatedRouterID  rightID 
) [inline]

Definition at line 187 of file AnsaOSPFcommon.h.

{
    return (leftID.routerID == rightID.routerID &&
                leftID.ipInterfaceAddress == rightID.ipInterfaceAddress);
}
bool operator> ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 136 of file AnsaOSPFcommon.h.

{
    return (!(leftAddress <= rightAddress));
}
bool operator>= ( AnsaOSPF::IPv4Address  leftAddress,
AnsaOSPF::IPv4Address  rightAddress 
) [inline]

Definition at line 141 of file AnsaOSPFcommon.h.

{
    return (!(leftAddress < rightAddress));
}
AnsaOSPF::IPv4Address operator| ( AnsaOSPF::IPv4Address  address,
AnsaOSPF::IPv4Address  match 
) [inline]

Definition at line 156 of file AnsaOSPFcommon.h.

{
    AnsaOSPF::IPv4Address matchAddress;
    matchAddress.bytes[0] = address.bytes[0] | match.bytes[0];
    matchAddress.bytes[1] = address.bytes[1] | match.bytes[1];
    matchAddress.bytes[2] = address.bytes[2] | match.bytes[2];
    matchAddress.bytes[3] = address.bytes[3] | match.bytes[3];
    return matchAddress;
}

Definition at line 166 of file AnsaOSPFcommon.h.

{
    AnsaOSPF::IPv4Address mask;
    mask.bytes[0] = (~wildcard.bytes[0]);
    mask.bytes[1] = (~wildcard.bytes[1]);
    mask.bytes[2] = (~wildcard.bytes[2]);
    mask.bytes[3] = (~wildcard.bytes[3]);
    return mask;
}
unsigned long ULongFromIPv4Address ( AnsaOSPF::IPv4Address  byteForm) [inline]

Definition at line 274 of file AnsaOSPFcommon.h.

Referenced by AnsaOSPF::RoutingTableEntry::AddNextHop(), AnsaOSPF::Area::CalculateNextHops(), OSPF::Area::CalculateNextHops(), AnsaOSPF::InterfaceState::ChangeState(), AnsaOSPF::NeighborState::ChangeState(), OSPF::InterfaceState::ChangeState(), OSPF::NeighborState::ChangeState(), AnsaOSPF::Area::CreateRoutingTableEntryFromSummaryLSA(), OSPF::Area::CreateRoutingTableEntryFromSummaryLSA(), AnsaOSPF::Area::FindSameOrWorseCostRoute(), OSPF::Area::FindSameOrWorseCostRoute(), AnsaOSPF::Router::GetUniqueLinkStateID(), OSPF::Router::GetUniqueLinkStateID(), AnsaOSPF::Area::GetUniqueLinkStateID(), OSPF::Area::GetUniqueLinkStateID(), OSPFRouting::LoadExternalRoute(), AnsaOSPFRouting::LoadExternalRoute(), AnsaOSPF::Area::OriginateNetworkLSA(), OSPF::Area::OriginateNetworkLSA(), AnsaOSPF::Area::OriginateRouterLSA(), OSPF::Area::OriginateRouterLSA(), AnsaOSPF::HelloHandler::ProcessPacket(), OSPF::HelloHandler::ProcessPacket(), AnsaOSPF::MessageHandler::ProcessPacket(), OSPF::MessageHandler::ProcessPacket(), AnsaOSPF::Router::RemoveExternalRoute(), OSPF::Router::RemoveExternalRoute(), AnsaOSPF::Interface::SendHelloPacket(), OSPF::Interface::SendHelloPacket(), AnsaOSPF::MessageHandler::SendPacket(), OSPF::MessageHandler::SendPacket(), ULongFromAddressString(), AnsaOSPF::Router::UpdateExternalRoute(), and OSPF::Router::UpdateExternalRoute().

{
    return ((byteForm.bytes[0] << 24) + (byteForm.bytes[1] << 16) + (byteForm.bytes[2] << 8) + byteForm.bytes[3]);
}