INET Framework for OMNeT++/OMNEST
inet::ospfv2 Namespace Reference

Classes

class  AsExternalLsa
 
struct  AuthenticationKeyType
 
class  DatabaseDescriptionHandler
 
struct  DesignatedRouterId
 
class  HelloHandler
 
struct  HostRouteParameters
 
class  IMessageHandler
 
class  InterfaceStateBackup
 
class  InterfaceStateDesignatedRouter
 
class  InterfaceStateDown
 
class  InterfaceStateLoopback
 
class  InterfaceStateNotDesignatedRouter
 
class  InterfaceStatePointToPoint
 
class  InterfaceStateWaiting
 
struct  Ipv4AddressRange
 
class  LinkStateAcknowledgementHandler
 
class  LinkStateRequestHandler
 
class  LinkStateUpdateHandler
 
struct  LsaKeyType
 
class  LsaKeyType_Less
 
class  LsaProcessingMarker
 
class  LsaTrackingInfo
 
class  MessageHandler
 
class  Neighbor
 
class  NeighborState
 
class  NeighborStateAttempt
 
class  NeighborStateDown
 
class  NeighborStateExchange
 
class  NeighborStateExchangeStart
 
class  NeighborStateFull
 
class  NeighborStateInit
 
class  NeighborStateLoading
 
class  NeighborStateTwoWay
 
class  NetworkLsa
 
struct  NextHop
 
class  Ospfv2
 Implements the OSPFv2 routing protocol. More...
 
class  Ospfv2Area
 
class  Ospfv2AsExternalLsa
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:201 by opp_msgtool. More...
 
class  Ospfv2AsExternalLsaContents
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:191 by opp_msgtool. More...
 
class  Ospfv2ConfigReader
 Configuration reader for the OSPF module. More...
 
class  Ospfv2DatabaseDescriptionPacket
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:220 by opp_msgtool. More...
 
struct  Ospfv2DdOptions
 Struct generated from inet/routing/ospfv2/Ospfv2Packet.msg:208 by opp_msgtool. More...
 
struct  Ospfv2ExternalTosInfo
 Struct generated from inet/routing/ospfv2/Ospfv2Packet.msg:177 by opp_msgtool. More...
 
class  Ospfv2HelloPacket
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:61 by opp_msgtool. More...
 
class  Ospfv2Interface
 
class  Ospfv2InterfaceState
 
class  Ospfv2Link
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:130 by opp_msgtool. More...
 
class  Ospfv2LinkStateAcknowledgementPacket
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:256 by opp_msgtool. More...
 
class  Ospfv2LinkStateRequestPacket
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:240 by opp_msgtool. More...
 
class  Ospfv2LinkStateUpdatePacket
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:248 by opp_msgtool. More...
 
class  Ospfv2Lsa
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:107 by opp_msgtool. More...
 
class  Ospfv2LsaHeader
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:90 by opp_msgtool. More...
 
struct  Ospfv2LsaRequest
 Struct generated from inet/routing/ospfv2/Ospfv2Packet.msg:229 by opp_msgtool. More...
 
class  Ospfv2NetworkLsa
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:159 by opp_msgtool. More...
 
struct  Ospfv2Options
 Struct generated from inet/routing/ospfv2/Ospfv2Packet.msg:33 by opp_msgtool. More...
 
class  Ospfv2Packet
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:49 by opp_msgtool. More...
 
class  Ospfv2PacketSerializer
 Converts between Ospfv2Packet and binary (network byte order) OSPF data. More...
 
class  Ospfv2RouterLsa
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:144 by opp_msgtool. More...
 
class  Ospfv2RoutingTableEntry
 
class  Ospfv2SummaryLsa
 Class generated from inet/routing/ospfv2/Ospfv2Packet.msg:169 by opp_msgtool. More...
 
struct  Ospfv2TosData
 Struct generated from inet/routing/ospfv2/Ospfv2Packet.msg:122 by opp_msgtool. More...
 
class  Router
 All OSPF classes are in this namespace. More...
 
class  RouterLsa
 
class  RoutingInfo
 
class  SummaryLsa
 

Typedefs

typedef unsigned long Metric
 
typedef Ipv4Address RouterId
 
typedef Ipv4Address AreaId
 
typedef Ipv4Address LinkStateId
 

Enumerations

enum  Ospfv2TimerType {
  INTERFACE_HELLO_TIMER = 0, INTERFACE_WAIT_TIMER = 1, INTERFACE_ACKNOWLEDGEMENT_TIMER = 3, NEIGHBOR_INACTIVITY_TIMER = 4,
  NEIGHBOR_POLL_TIMER = 5, NEIGHBOR_DD_RETRANSMISSION_TIMER = 6, NEIGHBOR_UPDATE_RETRANSMISSION_TIMER = 7, NEIGHBOR_REQUEST_RETRANSMISSION_TIMER = 8,
  DATABASE_AGE_TIMER = 9
}
 Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:19 by opp_msgtool. More...
 
enum  Ospfv2LsaType {
  ROUTERLSA_TYPE = 1, NETWORKLSA_TYPE = 2, SUMMARYLSA_NETWORKS_TYPE = 3, SUMMARYLSA_ASBOUNDARYROUTERS_TYPE = 4,
  AS_EXTERNAL_LSA_TYPE = 5
}
 Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:78 by opp_msgtool. More...
 
enum  LinkType { POINTTOPOINT_LINK = 1, TRANSIT_LINK = 2, STUB_LINK = 3, VIRTUAL_LINK = 4 }
 Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:113 by opp_msgtool. More...
 
enum  AuthenticationType { NULL_TYPE = 0, SIMPLE_PASSWORD_TYPE = 1, CRYTOGRAPHIC_TYPE = 2 }
 

Functions

std::ostream & operator<< (std::ostream &stream, const Ospfv2Interface &intf)
 
bool operator== (Neighbor::DdPacketId leftID, Neighbor::DdPacketId rightID)
 
bool operator!= (Neighbor::DdPacketId leftID, Neighbor::DdPacketId rightID)
 
 Define_Module (Ospfv2)
 
void setOspfCrc (const Ptr< Ospfv2Packet > &ospfPacket, CrcMode crcMode)
 
void setLsaCrc (Ospfv2Lsa &lsa, CrcMode crcMode)
 
void setLsaHeaderCrc (Ospfv2LsaHeader &lsaHeader, CrcMode crcMode)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2TimerType &e)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2TimerType &e)
 
void INET_API __doPacking (omnetpp::cCommBuffer *b, const Ospfv2Options &a)
 
void INET_API __doUnpacking (omnetpp::cCommBuffer *b, Ospfv2Options &a)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2Options &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2Options &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2Packet &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2Packet &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2HelloPacket &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2HelloPacket &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LsaType &e)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LsaType &e)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LsaHeader &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LsaHeader &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2Lsa &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2Lsa &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const LinkType &e)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, LinkType &e)
 
void INET_API __doPacking (omnetpp::cCommBuffer *b, const Ospfv2TosData &a)
 
void INET_API __doUnpacking (omnetpp::cCommBuffer *b, Ospfv2TosData &a)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2TosData &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2TosData &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2Link &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2Link &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2RouterLsa &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2RouterLsa &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2NetworkLsa &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2NetworkLsa &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2SummaryLsa &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2SummaryLsa &obj)
 
void INET_API __doPacking (omnetpp::cCommBuffer *b, const Ospfv2ExternalTosInfo &a)
 
void INET_API __doUnpacking (omnetpp::cCommBuffer *b, Ospfv2ExternalTosInfo &a)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2ExternalTosInfo &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2ExternalTosInfo &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2AsExternalLsaContents &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2AsExternalLsaContents &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2AsExternalLsa &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2AsExternalLsa &obj)
 
void INET_API __doPacking (omnetpp::cCommBuffer *b, const Ospfv2DdOptions &a)
 
void INET_API __doUnpacking (omnetpp::cCommBuffer *b, Ospfv2DdOptions &a)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2DdOptions &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2DdOptions &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2DatabaseDescriptionPacket &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2DatabaseDescriptionPacket &obj)
 
void INET_API __doPacking (omnetpp::cCommBuffer *b, const Ospfv2LsaRequest &a)
 
void INET_API __doUnpacking (omnetpp::cCommBuffer *b, Ospfv2LsaRequest &a)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LsaRequest &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LsaRequest &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LinkStateRequestPacket &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LinkStateRequestPacket &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LinkStateUpdatePacket &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LinkStateUpdatePacket &obj)
 
void doParsimPacking (omnetpp::cCommBuffer *b, const Ospfv2LinkStateAcknowledgementPacket &obj)
 
void doParsimUnpacking (omnetpp::cCommBuffer *b, Ospfv2LinkStateAcknowledgementPacket &obj)
 
 Register_Serializer (Ospfv2Packet, Ospfv2PacketSerializer)
 
 Register_Serializer (Ospfv2HelloPacket, Ospfv2PacketSerializer)
 
 Register_Serializer (Ospfv2DatabaseDescriptionPacket, Ospfv2PacketSerializer)
 
 Register_Serializer (Ospfv2LinkStateRequestPacket, Ospfv2PacketSerializer)
 
 Register_Serializer (Ospfv2LinkStateUpdatePacket, Ospfv2PacketSerializer)
 
 Register_Serializer (Ospfv2LinkStateAcknowledgementPacket, Ospfv2PacketSerializer)
 
bool operator< (const Ospfv2LsaHeader &leftLSA, const Ospfv2LsaHeader &rightLSA)
 Returns true if leftLSA is older than rightLSA. More...
 
bool operator== (const Ospfv2LsaHeader &leftLSA, const Ospfv2LsaHeader &rightLSA)
 Returns true if leftLSA is the same age as rightLSA. More...
 
bool operator== (const Ospfv2Options &leftOptions, const Ospfv2Options &rightOptions)
 
B calculateLSASize (const Ospfv2Lsa *lsa)
 
B calculateLsaSize (const Ospfv2RouterLsa &lsa)
 
B calculateLsaSize (const Ospfv2NetworkLsa &lsa)
 
B calculateLsaSize (const Ospfv2SummaryLsa &lsa)
 
B calculateLsaSize (const Ospfv2AsExternalLsa &lsa)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2LsaRequest &request)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2LsaHeader &lsaHeader)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2NetworkLsa &lsa)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2TosData &tos)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2Link &link)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2RouterLsa &lsa)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2SummaryLsa &lsa)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2ExternalTosInfo &tos)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2AsExternalLsaContents &contents)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2AsExternalLsa &lsa)
 
std::ostream & operator<< (std::ostream &ostr, const Ospfv2Lsa &lsa)
 
bool operator!= (const Ospfv2Options &leftOptions, const Ospfv2Options &rightOptions)
 
bool operator== (const NextHop &leftHop, const NextHop &rightHop)
 
bool operator!= (const NextHop &leftHop, const NextHop &rightHop)
 
std::ostream & operator<< (std::ostream &ostr, Ospfv2Area &area)
 
const RouterId NULL_ROUTERID (0, 0, 0, 0)
 
const AreaId BACKBONE_AREAID (0, 0, 0, 0)
 
const LinkStateId NULL_LINKSTATEID (0, 0, 0, 0)
 
const Ipv4Address NULL_IPV4ADDRESS (0, 0, 0, 0)
 
const Ipv4AddressRange NULL_IPV4ADDRESSRANGE (Ipv4Address(0, 0, 0, 0), Ipv4Address(0, 0, 0, 0))
 
Ipv4Address operator& (Ipv4Address address, Ipv4Address mask)
 
Ipv4Address operator| (Ipv4Address address, Ipv4Address match)
 
bool isSameNetwork (Ipv4Address address1, Ipv4Address mask1, Ipv4Address address2, Ipv4Address mask2)
 
bool operator== (DesignatedRouterId leftID, DesignatedRouterId rightID)
 
bool operator!= (DesignatedRouterId leftID, DesignatedRouterId rightID)
 
Ipv4Address ipv4AddressFromAddressString (const char *charForm)
 
Ipv4Address ipv4NetmaskFromAddressString (const char *charForm)
 
char hexCharToByte (char hex)
 
char hexPairToByte (char upperHex, char lowerHex)
 
std::ostream & operator<< (std::ostream &out, const Ospfv2RoutingTableEntry &entry)
 

Variables

const B IPV4_DATAGRAM_LENGTH = B(65536)
 
const B OSPFv2_HEADER_LENGTH = B(24)
 
const B OSPFv2_LSA_HEADER_LENGTH = B(20)
 
const B OSPFv2_HELLO_HEADER_LENGTH = B(20)
 
const B OSPFv2_DD_HEADER_LENGTH = B(8)
 
const B OSPFv2_REQUEST_LENGTH = B(12)
 
const B OSPFv2_ROUTERLSA_HEADER_LENGTH = B(4)
 
const B OSPFv2_LINK_HEADER_LENGTH = B(12)
 
const B OSPFv2_TOS_LENGTH = B(4)
 
const B OSPFv2_NETWORKLSA_MASK_LENGTH = B(4)
 
const B OSPFv2_NETWORKLSA_ADDRESS_LENGTH = B(4)
 
const B OSPFv2_SUMMARYLSA_HEADER_LENGTH = B(8)
 
const B OSPFv2_ASEXTERNALLSA_HEADER_LENGTH = B(4)
 
const B OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH = B(12)
 
const DesignatedRouterId NULL_DESIGNATEDROUTERID
 

Typedef Documentation

◆ AreaId

◆ LinkStateId

◆ Metric

typedef unsigned long inet::ospfv2::Metric

◆ RouterId

Enumeration Type Documentation

◆ AuthenticationType

Enumerator
NULL_TYPE 
SIMPLE_PASSWORD_TYPE 
CRYTOGRAPHIC_TYPE 
58  {
59  NULL_TYPE = 0,
62 };

◆ LinkType

Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:113 by opp_msgtool.

enum LinkType
{
    POINTTOPOINT_LINK = 1;
    TRANSIT_LINK = 2;
    STUB_LINK = 3;
    VIRTUAL_LINK = 4;
}
Enumerator
POINTTOPOINT_LINK 
TRANSIT_LINK 
STUB_LINK 
VIRTUAL_LINK 
429  {
430  POINTTOPOINT_LINK = 1,
431  TRANSIT_LINK = 2,
432  STUB_LINK = 3,
433  VIRTUAL_LINK = 4
434 };

◆ Ospfv2LsaType

Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:78 by opp_msgtool.

enum Ospfv2LsaType
{
    ROUTERLSA_TYPE = 1;
    NETWORKLSA_TYPE = 2;
    SUMMARYLSA_NETWORKS_TYPE = 3;
    SUMMARYLSA_ASBOUNDARYROUTERS_TYPE = 4;
    AS_EXTERNAL_LSA_TYPE = 5;
}
Enumerator
ROUTERLSA_TYPE 
NETWORKLSA_TYPE 
SUMMARYLSA_NETWORKS_TYPE 
SUMMARYLSA_ASBOUNDARYROUTERS_TYPE 
AS_EXTERNAL_LSA_TYPE 
282  {
283  ROUTERLSA_TYPE = 1,
284  NETWORKLSA_TYPE = 2,
288 };

◆ Ospfv2TimerType

Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:19 by opp_msgtool.

enum Ospfv2TimerType
{
    INTERFACE_HELLO_TIMER = 0;
    INTERFACE_WAIT_TIMER = 1;
    INTERFACE_ACKNOWLEDGEMENT_TIMER = 3;
    NEIGHBOR_INACTIVITY_TIMER = 4;
    NEIGHBOR_POLL_TIMER = 5;
    NEIGHBOR_DD_RETRANSMISSION_TIMER = 6;
    NEIGHBOR_UPDATE_RETRANSMISSION_TIMER = 7;
    NEIGHBOR_REQUEST_RETRANSMISSION_TIMER = 8;
    DATABASE_AGE_TIMER = 9;
}
Enumerator
INTERFACE_HELLO_TIMER 
INTERFACE_WAIT_TIMER 
INTERFACE_ACKNOWLEDGEMENT_TIMER 
NEIGHBOR_INACTIVITY_TIMER 
NEIGHBOR_POLL_TIMER 
NEIGHBOR_DD_RETRANSMISSION_TIMER 
NEIGHBOR_UPDATE_RETRANSMISSION_TIMER 
NEIGHBOR_REQUEST_RETRANSMISSION_TIMER 
DATABASE_AGE_TIMER 

Function Documentation

◆ __doPacking() [1/5]

void INET_API inet::ospfv2::__doPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2DdOptions a 
)

◆ __doPacking() [2/5]

void INET_API inet::ospfv2::__doPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2ExternalTosInfo a 
)

◆ __doPacking() [3/5]

void INET_API inet::ospfv2::__doPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LsaRequest a 
)

◆ __doPacking() [4/5]

void INET_API inet::ospfv2::__doPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2Options a 
)

Referenced by doParsimPacking().

◆ __doPacking() [5/5]

void INET_API inet::ospfv2::__doPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2TosData a 
)

◆ __doUnpacking() [1/5]

void INET_API inet::ospfv2::__doUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2DdOptions a 
)

◆ __doUnpacking() [2/5]

void INET_API inet::ospfv2::__doUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2ExternalTosInfo a 
)

◆ __doUnpacking() [3/5]

void INET_API inet::ospfv2::__doUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LsaRequest a 
)

◆ __doUnpacking() [4/5]

void INET_API inet::ospfv2::__doUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2Options a 
)

Referenced by doParsimUnpacking().

◆ __doUnpacking() [5/5]

void INET_API inet::ospfv2::__doUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2TosData a 
)

◆ BACKBONE_AREAID()

◆ calculateLsaSize() [1/4]

B inet::ospfv2::calculateLsaSize ( const Ospfv2AsExternalLsa lsa)
115 {
117  + (OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH * lsa.getContents().getExternalTOSInfoArraySize());
118 }

◆ calculateLSASize()

B inet::ospfv2::calculateLSASize ( const Ospfv2Lsa lsa)
67 {
68  switch (lsa->getHeader().getLsType()) {
70  auto routerLsa = check_and_cast<const Ospfv2RouterLsa *>(lsa);
71  return calculateLsaSize(*routerLsa);
72  }
74  auto networkLsa = check_and_cast<const Ospfv2NetworkLsa *>(lsa);
75  return calculateLsaSize(*networkLsa);
76  }
79  auto summaryLsa = check_and_cast<const Ospfv2SummaryLsa *>(lsa);
80  return calculateLsaSize(*summaryLsa);
81  }
83  auto asExternalLsa = check_and_cast<const Ospfv2AsExternalLsa *>(lsa);
84  return calculateLsaSize(*asExternalLsa);
85  }
86  default:
87  throw cRuntimeError("Unknown LsaType value: %d", (int)lsa->getHeader().getLsType());
88  break;
89  }
90 }

Referenced by inet::ospfv2::Ospfv2Interface::createUpdatePacket(), inet::ospfv2::Ospfv2Area::originateRouterLSA(), and inet::ospfv2::Neighbor::retransmitUpdatePacket().

◆ calculateLsaSize() [2/4]

B inet::ospfv2::calculateLsaSize ( const Ospfv2NetworkLsa lsa)
103 {
105  + (OSPFv2_NETWORKLSA_ADDRESS_LENGTH * lsa.getAttachedRoutersArraySize());
106 }

◆ calculateLsaSize() [3/4]

B inet::ospfv2::calculateLsaSize ( const Ospfv2RouterLsa lsa)
93 {
95  for (uint32_t i = 0; i < lsa.getLinksArraySize(); i++) {
96  const auto& link = lsa.getLinks(i);
97  lsaLength += OSPFv2_LINK_HEADER_LENGTH + (OSPFv2_TOS_LENGTH * link.getTosDataArraySize());
98  }
99  return lsaLength;
100 }

Referenced by calculateLSASize(), inet::ospfv2::Ospfv2Area::originateNetworkLSA(), inet::ospfv2::Ospfv2Area::originateSummaryLSA(), inet::ospfv2::Ospfv2Area::originateSummaryLSA_Stub(), and inet::ospfv2::Router::updateExternalRoute().

◆ calculateLsaSize() [4/4]

B inet::ospfv2::calculateLsaSize ( const Ospfv2SummaryLsa lsa)
109 {
111  + (OSPFv2_TOS_LENGTH * lsa.getTosDataArraySize());
112 }

◆ Define_Module()

inet::ospfv2::Define_Module ( Ospfv2  )

◆ doParsimPacking() [1/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const LinkType e 
)
inline
436 { b->pack(static_cast<int>(e)); }

◆ doParsimPacking() [2/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2AsExternalLsa obj 
)
inline
831 {obj.parsimPack(b);}

◆ doParsimPacking() [3/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2AsExternalLsaContents obj 
)
inline
790 {obj.parsimPack(b);}

◆ doParsimPacking() [4/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2DatabaseDescriptionPacket obj 
)
inline
919 {obj.parsimPack(b);}

◆ doParsimPacking() [5/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2DdOptions obj 
)
inline
850 { __doPacking(b, obj); }

◆ doParsimPacking() [6/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2ExternalTosInfo obj 
)
inline
736 { __doPacking(b, obj); }

◆ doParsimPacking() [7/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2HelloPacket obj 
)
inline
266 {obj.parsimPack(b);}

◆ doParsimPacking() [8/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2Link obj 
)
inline
525 {obj.parsimPack(b);}

◆ doParsimPacking() [9/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LinkStateAcknowledgementPacket obj 
)
inline
1080 {obj.parsimPack(b);}

◆ doParsimPacking() [10/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LinkStateRequestPacket obj 
)
inline
984 {obj.parsimPack(b);}

◆ doParsimPacking() [11/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LinkStateUpdatePacket obj 
)
inline
1033 {obj.parsimPack(b);}

◆ doParsimPacking() [12/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2Lsa obj 
)
inline
414 {obj.parsimPack(b);}

◆ doParsimPacking() [13/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LsaHeader obj 
)
inline
373 {obj.parsimPack(b);}

◆ doParsimPacking() [14/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LsaRequest obj 
)
inline
937 { __doPacking(b, obj); }

◆ doParsimPacking() [15/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2LsaType e 
)
inline
290 { b->pack(static_cast<int>(e)); }

◆ doParsimPacking() [16/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2NetworkLsa obj 
)
inline
657 {obj.parsimPack(b);}

◆ doParsimPacking() [17/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2Options obj 
)
inline
127 { __doPacking(b, obj); }

◆ doParsimPacking() [18/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2Packet obj 
)
inline
175 {obj.parsimPack(b);}

◆ doParsimPacking() [19/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2RouterLsa obj 
)
inline
603 {obj.parsimPack(b);}

◆ doParsimPacking() [20/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2SummaryLsa obj 
)
inline
716 {obj.parsimPack(b);}

◆ doParsimPacking() [21/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2TimerType e 
)
inline
104 { b->pack(static_cast<int>(e)); }

◆ doParsimPacking() [22/22]

void inet::ospfv2::doParsimPacking ( omnetpp::cCommBuffer *  b,
const Ospfv2TosData obj 
)
inline
453 { __doPacking(b, obj); }

◆ doParsimUnpacking() [1/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
LinkType e 
)
inline
437 { int n; b->unpack(n); e = static_cast<LinkType>(n); }

◆ doParsimUnpacking() [2/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2AsExternalLsa obj 
)
inline
832 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [3/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2AsExternalLsaContents obj 
)
inline
791 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [4/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2DatabaseDescriptionPacket obj 
)
inline
920 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [5/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2DdOptions obj 
)
inline
851 { __doUnpacking(b, obj); }

◆ doParsimUnpacking() [6/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2ExternalTosInfo obj 
)
inline
737 { __doUnpacking(b, obj); }

◆ doParsimUnpacking() [7/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2HelloPacket obj 
)
inline
267 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [8/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2Link obj 
)
inline
526 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [9/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LinkStateAcknowledgementPacket obj 
)
inline
1081 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [10/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LinkStateRequestPacket obj 
)
inline
985 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [11/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LinkStateUpdatePacket obj 
)
inline
1034 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [12/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2Lsa obj 
)
inline
415 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [13/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LsaHeader obj 
)
inline
374 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [14/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LsaRequest obj 
)
inline
938 { __doUnpacking(b, obj); }

◆ doParsimUnpacking() [15/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2LsaType e 
)
inline
291 { int n; b->unpack(n); e = static_cast<Ospfv2LsaType>(n); }

◆ doParsimUnpacking() [16/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2NetworkLsa obj 
)
inline
658 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [17/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2Options obj 
)
inline
128 { __doUnpacking(b, obj); }

◆ doParsimUnpacking() [18/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2Packet obj 
)
inline
176 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [19/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2RouterLsa obj 
)
inline
604 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [20/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2SummaryLsa obj 
)
inline
717 {obj.parsimUnpack(b);}

◆ doParsimUnpacking() [21/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2TimerType e 
)
inline
105 { int n; b->unpack(n); e = static_cast<Ospfv2TimerType>(n); }

◆ doParsimUnpacking() [22/22]

void inet::ospfv2::doParsimUnpacking ( omnetpp::cCommBuffer *  b,
Ospfv2TosData obj 
)
inline
454 { __doUnpacking(b, obj); }

◆ hexCharToByte()

char inet::ospfv2::hexCharToByte ( char  hex)
inline
208 {
209  switch (hex) {
210  case '0':
211  return 0;
212 
213  case '1':
214  return 1;
215 
216  case '2':
217  return 2;
218 
219  case '3':
220  return 3;
221 
222  case '4':
223  return 4;
224 
225  case '5':
226  return 5;
227 
228  case '6':
229  return 6;
230 
231  case '7':
232  return 7;
233 
234  case '8':
235  return 8;
236 
237  case '9':
238  return 9;
239 
240  case 'A':
241  return 10;
242 
243  case 'B':
244  return 11;
245 
246  case 'C':
247  return 12;
248 
249  case 'D':
250  return 13;
251 
252  case 'E':
253  return 14;
254 
255  case 'F':
256  return 15;
257 
258  case 'a':
259  return 10;
260 
261  case 'b':
262  return 11;
263 
264  case 'c':
265  return 12;
266 
267  case 'd':
268  return 13;
269 
270  case 'e':
271  return 14;
272 
273  case 'f':
274  return 15;
275 
276  default:
277  break;
278  }
279  return 0;
280 }

Referenced by hexPairToByte().

◆ hexPairToByte()

char inet::ospfv2::hexPairToByte ( char  upperHex,
char  lowerHex 
)
inline
283 {
284  return (hexCharToByte(upperHex) << 4) & (hexCharToByte(lowerHex));
285 }

Referenced by inet::ospfv2::Ospfv2ConfigReader::loadAuthenticationConfig().

◆ ipv4AddressFromAddressString()

◆ ipv4NetmaskFromAddressString()

Ipv4Address inet::ospfv2::ipv4NetmaskFromAddressString ( const char *  charForm)
inline
203 {
204  return L3AddressResolver().resolve(charForm, L3AddressResolver::ADDR_IPv4 | L3AddressResolver::ADDR_MASK).toIpv4();
205 }

Referenced by inet::ospfv2::Ospfv2ConfigReader::initiateDefaultRouteDistribution(), inet::ospfv2::Ospfv2ConfigReader::loadAreaFromXML(), and inet::ospfv2::Ospfv2ConfigReader::loadExternalRoute().

◆ isSameNetwork()

bool inet::ospfv2::isSameNetwork ( Ipv4Address  address1,
Ipv4Address  mask1,
Ipv4Address  address2,
Ipv4Address  mask2 
)
inline
175 {
176  return (mask1 == mask2) && ((address1 & mask1) == (address2 & mask2));
177 }

Referenced by inet::ospfv2::Ospfv2Area::calculateNextHops(), and inet::ospfv2::Ospfv2Area::originateSummaryLSA().

◆ NULL_IPV4ADDRESS()

◆ NULL_IPV4ADDRESSRANGE()

◆ NULL_LINKSTATEID()

const LinkStateId inet::ospfv2::NULL_LINKSTATEID ( ,
,
,
 
)

◆ NULL_ROUTERID()

const RouterId inet::ospfv2::NULL_ROUTERID ( ,
,
,
 
)

◆ operator!=() [1/4]

bool inet::ospfv2::operator!= ( const NextHop leftHop,
const NextHop rightHop 
)
inline
174 {
175  return !(leftHop == rightHop);
176 }

◆ operator!=() [2/4]

bool inet::ospfv2::operator!= ( const Ospfv2Options leftOptions,
const Ospfv2Options rightOptions 
)
inline
162 {
163  return !(leftOptions == rightOptions);
164 }

◆ operator!=() [3/4]

bool inet::ospfv2::operator!= ( DesignatedRouterId  leftID,
DesignatedRouterId  rightID 
)
inline
186 {
187  return !(leftID == rightID);
188 }

◆ operator!=() [4/4]

bool inet::ospfv2::operator!= ( Neighbor::DdPacketId  leftID,
Neighbor::DdPacketId  rightID 
)
inline
199 {
200  return !(leftID == rightID);
201 }

◆ operator&()

Ipv4Address inet::ospfv2::operator& ( Ipv4Address  address,
Ipv4Address  mask 
)
inline
161 {
162  Ipv4Address maskedAddress;
163  maskedAddress.set(address.getInt() & mask.getInt());
164  return maskedAddress;
165 }

◆ operator<()

bool inet::ospfv2::operator< ( const Ospfv2LsaHeader leftLSA,
const Ospfv2LsaHeader rightLSA 
)

Returns true if leftLSA is older than rightLSA.

14 {
15  long leftSequenceNumber = leftLSA.getLsSequenceNumber();
16  long rightSequenceNumber = rightLSA.getLsSequenceNumber();
17 
18  if (leftSequenceNumber > rightSequenceNumber)
19  return false;
20  else if (leftSequenceNumber < rightSequenceNumber)
21  return true;
22  else {
23  // TODO checksum comparison should be added here
24 
25  unsigned short leftAge = leftLSA.getLsAge();
26  unsigned short rightAge = rightLSA.getLsAge();
27 
28  if ((leftAge != MAX_AGE) && (rightAge == MAX_AGE))
29  return true;
30  else if ((leftAge == MAX_AGE) && (rightAge != MAX_AGE))
31  return false;
32  else if ((abs(leftAge - rightAge) > MAX_AGE_DIFF) && (leftAge > rightAge))
33  return true;
34  }
35  return false;
36 }

◆ operator<<() [1/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2AsExternalLsa lsa 
)
300 {
301  ostr << lsa.getHeader() << lsa.getContents();
302  return ostr;
303 }

◆ operator<<() [2/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2AsExternalLsaContents contents 
)
283 {
284  ostr << "Mask: " << contents.getNetworkMask()
285  << ", ";
286  unsigned int cnt = contents.getExternalTOSInfoArraySize();
287  if (cnt) {
288  ostr << ", tosData: {";
289  for (unsigned int i = 0; i < cnt; i++) {
290  if (i)
291  ostr << ", ";
292  ostr << contents.getExternalTOSInfo(i);
293  }
294  ostr << "}";
295  }
296  return ostr;
297 }

◆ operator<<() [3/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2ExternalTosInfo tos 
)
274 {
275  ostr << "Tos: {" << tos.tos
276  << "}, MetricType: " << tos.E_ExternalMetricType
277  << ", fwAddr: " << tos.forwardingAddress
278  << ", extRouteTag: " << tos.externalRouteTag;
279  return ostr;
280 }

◆ operator<<() [4/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2Link link 
)
190 {
191  ostr << "ID: " << link.getLinkID().str(false)
192  << ", data: ";
193  unsigned long data = link.getLinkData();
194  if ((data & 0xFF000000) != 0)
195  ostr << Ipv4Address(data);
196  else
197  ostr << data;
198  ostr << ", type=";
199  switch (link.getType()) {
200  case POINTTOPOINT_LINK:
201  ostr << "PointToPoint";
202  break;
203 
204  case TRANSIT_LINK:
205  ostr << "Transit";
206  break;
207 
208  case STUB_LINK:
209  ostr << "Stub";
210  break;
211 
212  case VIRTUAL_LINK:
213  ostr << "Virtual";
214  break;
215 
216  default:
217  ostr << "Unknown";
218  break;
219  }
220  ostr << ", cost: " << link.getLinkCost();
221  unsigned int cnt = link.getTosDataArraySize();
222  if (cnt) {
223  ostr << ", tos: {";
224  for (unsigned int i = 0; i < cnt; i++) {
225  if (i)
226  ostr << ", ";
227  ostr << link.getTosData(i);
228  }
229  ostr << "}";
230  }
231  return ostr;
232 }

◆ operator<<() [5/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2Lsa lsa 
)
306 {
307  ASSERT(lsa.getHeader().getLsCrcMode() != CrcMode::CRC_MODE_UNDEFINED);
308  ASSERT(lsa.getHeader().getLsaLength() != 0);
309 
310  switch (lsa.getHeader().getLsType()) {
311  case ROUTERLSA_TYPE:
312  ostr << *check_and_cast<const RouterLsa *>(&lsa);
313  break;
314 
315  case NETWORKLSA_TYPE:
316  ostr << *check_and_cast<const NetworkLsa *>(&lsa);
317  break;
318 
321  ostr << *check_and_cast<const SummaryLsa *>(&lsa);
322  break;
323 
325  ostr << *check_and_cast<const AsExternalLsa *>(&lsa);
326  break;
327 
328  default:
329  ostr << lsa.getHeader();
330  ostr << ", Unknown";
331  break;
332  }
333  return ostr;
334 }

◆ operator<<() [6/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2LsaHeader lsaHeader 
)
129 {
130  ostr << "LSAHeader (age: " << lsaHeader.getLsAge()
131  << ", type: ";
132  switch (lsaHeader.getLsType()) {
133  case ROUTERLSA_TYPE:
134  ostr << "RouterLsa";
135  break;
136 
137  case NETWORKLSA_TYPE:
138  ostr << "NetworkLsa";
139  break;
140 
142  ostr << "SummaryLSA_Networks";
143  break;
144 
146  ostr << "SummaryLSA_ASBoundaryRouters";
147  break;
148 
150  ostr << "AsExternalLsa";
151  break;
152 
153  default:
154  ostr << "Unknown";
155  break;
156  }
157  ostr << ", LSID: " << lsaHeader.getLinkStateID().str(false)
158  << ", advertisingRouter: " << lsaHeader.getAdvertisingRouter().str(false)
159  << ", seqNumber: " << lsaHeader.getLsSequenceNumber();
160  ostr << ")";
161  return ostr;
162 }

◆ operator<<() [7/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2LsaRequest request 
)
121 {
122  ostr << "type=" << request.lsType
123  << ", LSID=" << request.linkStateID
124  << ", advertisingRouter=" << request.advertisingRouter;
125  return ostr;
126 }

◆ operator<<() [8/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2NetworkLsa lsa 
)
165 {
166  unsigned int cnt = lsa.getAttachedRoutersArraySize();
167  ostr << lsa.getHeader();
168  ostr << ", numAttachedRouters: " << cnt;
169  if (cnt) {
170  ostr << ", Attached routers: {";
171  for (unsigned int i = 0; i < cnt; i++) {
172  if (i)
173  ostr << ", ";
174  ostr << lsa.getAttachedRouters(i);
175  }
176  ostr << "}";
177  }
178  ostr << ", Mask: " << lsa.getNetworkMask();
179  return ostr;
180 }

◆ operator<<() [9/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2RouterLsa lsa 
)
235 {
236  ostr << lsa.getHeader()
237  << ", flags: "
238  << (lsa.getV_VirtualLinkEndpoint() ? "V" : "_")
239  << (lsa.getE_ASBoundaryRouter() ? "E" : "_")
240  << (lsa.getB_AreaBorderRouter() ? "B" : "_")
241  << ", numberOfLinks: " << lsa.getNumberOfLinks() << ", ";
242  unsigned int cnt = lsa.getLinksArraySize();
243  if (cnt) {
244  ostr << "Links: {";
245  for (unsigned int i = 0; i < cnt; i++) {
246  if (i)
247  ostr << ",";
248  ostr << " {" << lsa.getLinks(i) << "}";
249  }
250  ostr << "}";
251  }
252  return ostr;
253 }

◆ operator<<() [10/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2SummaryLsa lsa 
)
256 {
257  ostr << lsa.getHeader();
258  ostr << ", Mask: " << lsa.getNetworkMask().str(false)
259  << ", Cost: " << lsa.getRouteCost() << ", ";
260  unsigned int cnt = lsa.getTosDataArraySize();
261  if (cnt) {
262  ostr << ", tosData: {";
263  for (unsigned int i = 0; i < cnt; i++) {
264  if (i)
265  ostr << ", ";
266  ostr << lsa.getTosData(i);
267  }
268  ostr << "}";
269  }
270  return ostr;
271 }

◆ operator<<() [11/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  ostr,
const Ospfv2TosData tos 
)
183 {
184  ostr << "tos: " << (int)tos.tos
185  << "metric: " << tos.tosMetric;
186  return ostr;
187 }

◆ operator<<() [12/14]

std::ostream& inet::ospfv2::operator<< ( std::ostream &  ostr,
Ospfv2Area area 
)
inline
149 {
150  ostr << area.info();
151  return ostr;
152 }

◆ operator<<() [13/14]

std::ostream & inet::ospfv2::operator<< ( std::ostream &  out,
const Ospfv2RoutingTableEntry entry 
)
88 {
89  if (entry.getDestination().isUnspecified())
90  out << "0.0.0.0";
91  else
92  out << entry.getDestination();
93  out << "/";
94  if (entry.getNetmask().isUnspecified())
95  out << "0";
96  else
97  out << entry.getNetmask().getNetmaskLength();
98  out << " nextHops: ";
99  for (unsigned int i = 0; i < entry.getNextHopCount(); i++) {
100  Ipv4Address gateway = entry.getNextHop(i).hopAddress;
101  if (gateway.isUnspecified())
102  out << "* ";
103  else
104  out << gateway << " ";
105  }
106  out << "cost: " << entry.getCost() << " ";
107  if (entry.getPathType() == Ospfv2RoutingTableEntry::TYPE2_EXTERNAL)
108  out << "type2Cost: " << entry.getType2Cost() << " ";
109  out << "if: " << entry.getInterfaceName() << " ";
110  out << "destType: " << Ospfv2RoutingTableEntry::getDestinationTypeString(entry.getDestinationType());
111  out << " area: " << entry.getArea().str(false) << " ";
112  out << "pathType: " << Ospfv2RoutingTableEntry::getPathTypeString(entry.getPathType()) << " ";
113  out << "Origin: [" << entry.getLinkStateOrigin()->getHeader() << "] ";
114 
115  return out;
116 }

◆ operator<<() [14/14]

std::ostream& inet::ospfv2::operator<< ( std::ostream &  stream,
const Ospfv2Interface intf 
)
623 {
624  std::string neighbors = "";
625  for (auto& neighbor : intf.neighboringRoutersByID) {
626  std::string neighborState = Neighbor::getStateString((neighbor.second)->getState());
627  neighbors = neighbors + (neighbor.first).str() + "(" + neighborState + ") ";
628  }
629 
630  return stream << "name: " << intf.getInterfaceName() << " "
631  << "index: " << intf.ifIndex << " "
632  << "type: '" << intf.getTypeString(intf.interfaceType) << "' "
633  << "MTU: " << intf.mtu << " "
634  << "state: '" << intf.getStateString(intf.state->getState()) << "' "
635  << "mode: '" << intf.getModeString(intf.interfaceMode) << "' "
636  << "cost: " << intf.interfaceOutputCost << " "
637 
638  << "area: " << intf.areaID.str(false) << " "
639  << "transitArea: " << intf.transitAreaID.str(false) << " "
640 
641  << "helloInterval: " << intf.helloInterval << " "
642  << "pollInterval: " << intf.pollInterval << " "
643  << "routerDeadInterval: " << intf.routerDeadInterval << " "
644  << "retransmissionInterval: " << intf.retransmissionInterval << " "
645 
646  << "acknowledgementDelay: " << intf.acknowledgementDelay << " "
647  << "interfaceTransmissionDelay: " << intf.interfaceTransmissionDelay << " "
648 
649  << "neighboringRouters: " << ((neighbors == "") ? "<none>(down)" : neighbors) << " "
650 
651  << "routerPriority: " << (int)(intf.routerPriority) << " "
652  << "designatedRouterID: " << intf.designatedRouter.routerID << " "
653  << "designatedRouterInterface: " << intf.designatedRouter.ipInterfaceAddress << " "
654  << "backupDesignatedRouterID: " << intf.backupDesignatedRouter.routerID << " "
655  << "backupDesignatedRouterInterface: " << intf.backupDesignatedRouter.ipInterfaceAddress;
656 }

◆ operator==() [1/5]

bool inet::ospfv2::operator== ( const NextHop leftHop,
const NextHop rightHop 
)
inline
167 {
168  return (leftHop.ifIndex == rightHop.ifIndex) &&
169  (leftHop.hopAddress == rightHop.hopAddress) &&
170  (leftHop.advertisingRouter == rightHop.advertisingRouter);
171 }

◆ operator==() [2/5]

bool inet::ospfv2::operator== ( const Ospfv2LsaHeader leftLSA,
const Ospfv2LsaHeader rightLSA 
)

Returns true if leftLSA is the same age as rightLSA.

39 {
40  long leftSequenceNumber = leftLSA.getLsSequenceNumber();
41  long rightSequenceNumber = rightLSA.getLsSequenceNumber();
42  unsigned short leftAge = leftLSA.getLsAge();
43  unsigned short rightAge = rightLSA.getLsAge();
44 
45  if ((leftSequenceNumber == rightSequenceNumber) &&
46  (((leftAge == MAX_AGE) && (rightAge == MAX_AGE)) ||
47  (((leftAge != MAX_AGE) && (rightAge != MAX_AGE)) &&
48  (abs(leftAge - rightAge) <= MAX_AGE_DIFF))))
49  {
50  return true;
51  }
52  else {
53  return false;
54  }
55 }

◆ operator==() [3/5]

bool inet::ospfv2::operator== ( const Ospfv2Options leftOptions,
const Ospfv2Options rightOptions 
)
58 {
59  return (leftOptions.E_ExternalRoutingCapability == rightOptions.E_ExternalRoutingCapability) &&
60  (leftOptions.MC_MulticastForwarding == rightOptions.MC_MulticastForwarding) &&
61  (leftOptions.NP_Type7LSA == rightOptions.NP_Type7LSA) &&
62  (leftOptions.EA_ForwardExternalLSAs == rightOptions.EA_ForwardExternalLSAs) &&
63  (leftOptions.DC_DemandCircuits == rightOptions.DC_DemandCircuits);
64 }

◆ operator==() [4/5]

bool inet::ospfv2::operator== ( DesignatedRouterId  leftID,
DesignatedRouterId  rightID 
)
inline
180 {
181  return leftID.routerID == rightID.routerID &&
182  leftID.ipInterfaceAddress == rightID.ipInterfaceAddress;
183 }

◆ operator==() [5/5]

bool inet::ospfv2::operator== ( Neighbor::DdPacketId  leftID,
Neighbor::DdPacketId  rightID 
)
inline
190 {
191  return (leftID.ddOptions.I_Init == rightID.ddOptions.I_Init) &&
192  (leftID.ddOptions.M_More == rightID.ddOptions.M_More) &&
193  (leftID.ddOptions.MS_MasterSlave == rightID.ddOptions.MS_MasterSlave) &&
194  (leftID.options == rightID.options) &&
195  (leftID.sequenceNumber == rightID.sequenceNumber);
196 }

Referenced by inet::ospfv2::LinkStateUpdateHandler::processPacket().

◆ operator|()

Ipv4Address inet::ospfv2::operator| ( Ipv4Address  address,
Ipv4Address  match 
)
inline
168 {
169  Ipv4Address matchAddress;
170  matchAddress.set(address.getInt() | match.getInt());
171  return matchAddress;
172 }

◆ Register_Serializer() [1/6]

inet::ospfv2::Register_Serializer ( Ospfv2DatabaseDescriptionPacket  ,
Ospfv2PacketSerializer   
)

◆ Register_Serializer() [2/6]

inet::ospfv2::Register_Serializer ( Ospfv2HelloPacket  ,
Ospfv2PacketSerializer   
)

◆ Register_Serializer() [3/6]

inet::ospfv2::Register_Serializer ( Ospfv2LinkStateAcknowledgementPacket  ,
Ospfv2PacketSerializer   
)

◆ Register_Serializer() [4/6]

inet::ospfv2::Register_Serializer ( Ospfv2LinkStateRequestPacket  ,
Ospfv2PacketSerializer   
)

◆ Register_Serializer() [5/6]

inet::ospfv2::Register_Serializer ( Ospfv2LinkStateUpdatePacket  ,
Ospfv2PacketSerializer   
)

◆ Register_Serializer() [6/6]

inet::ospfv2::Register_Serializer ( Ospfv2Packet  ,
Ospfv2PacketSerializer   
)

◆ setLsaCrc()

INET_API void inet::ospfv2::setLsaCrc ( Ospfv2Lsa lsa,
CrcMode  crcMode 
)
50 {
51  auto& lsaHeader = lsa.getHeaderForUpdate();
52  lsaHeader.setLsCrcMode(crcMode);
53  switch (crcMode) {
55  lsaHeader.setLsCrc(0xC00D);
56  break;
58  lsaHeader.setLsCrc(0xBAAD);
59  break;
60  case CrcMode::CRC_COMPUTED: {
61  lsaHeader.setLsCrc(0);
62  MemoryOutputStream stream;
63  auto lsAge = lsaHeader.getLsAge();
64  lsaHeader.setLsAge(0); // disable lsAge from CRC
65  Ospfv2PacketSerializer::serializeLsa(stream, lsa);
66  uint16_t crc = TcpIpChecksum::checksum(stream.getData());
67  lsaHeader.setLsAge(lsAge); // restore lsAge
68  lsaHeader.setLsCrc(crc);
69  break;
70  }
71  default:
72  throw cRuntimeError("Unknown CRC mode: %d", (int)crcMode);
73  }
74 }

Referenced by inet::ospfv2::Ospfv2Interface::createUpdatePacket(), inet::ospfv2::Ospfv2Area::originateNetworkLSA(), inet::ospfv2::Ospfv2Area::originateRouterLSA(), inet::ospfv2::Ospfv2Area::originateSummaryLSA(), inet::ospfv2::Ospfv2Area::originateSummaryLSA_Stub(), and inet::ospfv2::Neighbor::retransmitUpdatePacket().

◆ setLsaHeaderCrc()

INET_API void inet::ospfv2::setLsaHeaderCrc ( Ospfv2LsaHeader lsaHeader,
CrcMode  crcMode 
)
77 {
78  lsaHeader.setLsCrcMode(crcMode);
79  switch (crcMode) {
81  lsaHeader.setLsCrc(0xC00D);
82  break;
84  lsaHeader.setLsCrc(0xBAAD);
85  break;
86  case CrcMode::CRC_COMPUTED: {
87  lsaHeader.setLsCrc(0);
88  MemoryOutputStream stream;
89  auto lsAge = lsaHeader.getLsAge();
90  lsaHeader.setLsAge(0); // disable lsAge from CRC
91  Ospfv2PacketSerializer::serializeLsaHeader(stream, lsaHeader);
92  uint16_t crc = TcpIpChecksum::checksum(stream.getData());
93  lsaHeader.setLsAge(lsAge); // restore lsAge
94  lsaHeader.setLsCrc(crc);
95  break;
96  }
97  default:
98  throw cRuntimeError("Unknown CRC mode: %d", (int)crcMode);
99  }
100 }

Referenced by inet::ospfv2::Neighbor::sendDatabaseDescriptionPacket().

◆ setOspfCrc()

INET_API void inet::ospfv2::setOspfCrc ( const Ptr< Ospfv2Packet > &  ospfPacket,
CrcMode  crcMode 
)
18 {
19  ospfPacket->setCrcMode(crcMode);
20  switch (crcMode) {
22  ospfPacket->setCrc(0xC00D);
23  break;
25  ospfPacket->setCrc(0xBAAD);
26  break;
27  case CrcMode::CRC_COMPUTED: {
28  AuthenticationKeyType authenticationKey;
29  ospfPacket->setCrc(0);
30  // RFC 2328: OSPF checksum is calculated over the entire OSPF packet, excluding the 64-bit authentication field.
31  for (int i = 0; i < 8; i++) {
32  authenticationKey.bytes[i] = ospfPacket->getAuthentication(i);
33  ospfPacket->setAuthentication(i, 0);
34  }
35  MemoryOutputStream stream;
36  Chunk::serialize(stream, ospfPacket);
37  uint16_t crc = TcpIpChecksum::checksum(stream.getData());
38  for (int i = 0; i < 8; i++) {
39  ospfPacket->setAuthentication(i, authenticationKey.bytes[i]);
40  }
41  ospfPacket->setCrc(crc);
42  break;
43  }
44  default:
45  throw cRuntimeError("Unknown CRC mode: %d", (int)crcMode);
46  }
47 }

Referenced by inet::ospfv2::LinkStateUpdateHandler::acknowledgeLSA(), inet::ospfv2::Ospfv2Interface::createUpdatePacket(), inet::ospfv2::Neighbor::retransmitUpdatePacket(), inet::ospfv2::Neighbor::sendDatabaseDescriptionPacket(), inet::ospfv2::Ospfv2Interface::sendDelayedAcknowledgements(), inet::ospfv2::Ospfv2Interface::sendHelloPacket(), inet::ospfv2::Neighbor::sendLinkStateRequestPacket(), and inet::ospfv2::Ospfv2Interface::sendLsAcknowledgement().

Variable Documentation

◆ IPV4_DATAGRAM_LENGTH

◆ NULL_DESIGNATEDROUTERID

◆ OSPFv2_ASEXTERNALLSA_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_ASEXTERNALLSA_HEADER_LENGTH = B(4)

◆ OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH

const B inet::ospfv2::OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH = B(12)

◆ OSPFv2_DD_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_DD_HEADER_LENGTH = B(8)

◆ OSPFv2_HEADER_LENGTH

◆ OSPFv2_HELLO_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_HELLO_HEADER_LENGTH = B(20)

◆ OSPFv2_LINK_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_LINK_HEADER_LENGTH = B(12)

Referenced by calculateLsaSize().

◆ OSPFv2_LSA_HEADER_LENGTH

◆ OSPFv2_NETWORKLSA_ADDRESS_LENGTH

const B inet::ospfv2::OSPFv2_NETWORKLSA_ADDRESS_LENGTH = B(4)

◆ OSPFv2_NETWORKLSA_MASK_LENGTH

◆ OSPFv2_REQUEST_LENGTH

const B inet::ospfv2::OSPFv2_REQUEST_LENGTH = B(12)

◆ OSPFv2_ROUTERLSA_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_ROUTERLSA_HEADER_LENGTH = B(4)

Referenced by calculateLsaSize().

◆ OSPFv2_SUMMARYLSA_HEADER_LENGTH

const B inet::ospfv2::OSPFv2_SUMMARYLSA_HEADER_LENGTH = B(8)

Referenced by calculateLsaSize().

◆ OSPFv2_TOS_LENGTH

const B inet::ospfv2::OSPFv2_TOS_LENGTH = B(4)
inet::ospfv2::INTERFACE_HELLO_TIMER
@ INTERFACE_HELLO_TIMER
Definition: Ospfv2Packet_m.h:93
inet::ospfv2::STUB_LINK
@ STUB_LINK
Definition: Ospfv2Packet_m.h:432
inet::ospfv2::SUMMARYLSA_NETWORKS_TYPE
@ SUMMARYLSA_NETWORKS_TYPE
Definition: Ospfv2Packet_m.h:285
inet::ospfv2::__doPacking
void INET_API __doPacking(omnetpp::cCommBuffer *b, const Ospfv2LsaRequest &a)
inet::utils::hex
std::string hex(uint16_t l)
Definition: INETUtils.cc:28
inet::ospfv2::Ospfv2LsaType
Ospfv2LsaType
Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:78 by opp_msgtool.
Definition: Ospfv2Packet_m.h:282
inet::CRC_COMPUTED
@ CRC_COMPUTED
Definition: CrcMode_m.h:59
inet::units::constants::e
const value< double, units::C > e(1.602176487e-19)
inet::ospfv2::NEIGHBOR_REQUEST_RETRANSMISSION_TIMER
@ NEIGHBOR_REQUEST_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:100
inet::ospfv2::calculateLsaSize
B calculateLsaSize(const Ospfv2AsExternalLsa &lsa)
Definition: Lsa.cc:114
inet::ospfv2::ROUTERLSA_TYPE
@ ROUTERLSA_TYPE
Definition: Ospfv2Packet_m.h:283
MAX_AGE
#define MAX_AGE
Definition: Ospfv2Common.h:27
inet::ospfv2::Ospfv2TimerType
Ospfv2TimerType
Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:19 by opp_msgtool.
Definition: Ospfv2Packet_m.h:92
inet::CRC_MODE_UNDEFINED
@ CRC_MODE_UNDEFINED
Definition: CrcMode_m.h:55
inet::ospfv2::OSPFv2_ASEXTERNALLSA_HEADER_LENGTH
const B OSPFv2_ASEXTERNALLSA_HEADER_LENGTH
Definition: Ospfv2Common.h:50
inet::ospfv2::NULL_TYPE
@ NULL_TYPE
Definition: Ospfv2Common.h:59
inet::ospfv2::NEIGHBOR_POLL_TIMER
@ NEIGHBOR_POLL_TIMER
Definition: Ospfv2Packet_m.h:97
inet::ospfv2::SUMMARYLSA_ASBOUNDARYROUTERS_TYPE
@ SUMMARYLSA_ASBOUNDARYROUTERS_TYPE
Definition: Ospfv2Packet_m.h:286
inet::ospfv2::SIMPLE_PASSWORD_TYPE
@ SIMPLE_PASSWORD_TYPE
Definition: Ospfv2Common.h:60
inet::ospfv2::OSPFv2_ROUTERLSA_HEADER_LENGTH
const B OSPFv2_ROUTERLSA_HEADER_LENGTH
Definition: Ospfv2Common.h:44
inet::units::units::B
intscale< b, 1, 8 > B
Definition: Units.h:1168
inet::ospfv2::OSPFv2_SUMMARYLSA_HEADER_LENGTH
const B OSPFv2_SUMMARYLSA_HEADER_LENGTH
Definition: Ospfv2Common.h:49
inet::ospfv2::AS_EXTERNAL_LSA_TYPE
@ AS_EXTERNAL_LSA_TYPE
Definition: Ospfv2Packet_m.h:287
inet::ospfv2::OSPFv2_LSA_HEADER_LENGTH
const B OSPFv2_LSA_HEADER_LENGTH
Definition: Ospfv2Common.h:40
inet::ospfv2::OSPFv2_LINK_HEADER_LENGTH
const B OSPFv2_LINK_HEADER_LENGTH
Definition: Ospfv2Common.h:45
MAX_AGE_DIFF
#define MAX_AGE_DIFF
Definition: Ospfv2Common.h:29
inet::ospfv2::INTERFACE_ACKNOWLEDGEMENT_TIMER
@ INTERFACE_ACKNOWLEDGEMENT_TIMER
Definition: Ospfv2Packet_m.h:95
inet::ospfv2::VIRTUAL_LINK
@ VIRTUAL_LINK
Definition: Ospfv2Packet_m.h:433
inet::ospfv2::OSPFv2_NETWORKLSA_ADDRESS_LENGTH
const B OSPFv2_NETWORKLSA_ADDRESS_LENGTH
Definition: Ospfv2Common.h:48
inet::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
inet::ospfv2::NEIGHBOR_INACTIVITY_TIMER
@ NEIGHBOR_INACTIVITY_TIMER
Definition: Ospfv2Packet_m.h:96
inet::ospfv2::POINTTOPOINT_LINK
@ POINTTOPOINT_LINK
Definition: Ospfv2Packet_m.h:430
inet::ospfv2::DATABASE_AGE_TIMER
@ DATABASE_AGE_TIMER
Definition: Ospfv2Packet_m.h:101
inet::CRC_DECLARED_CORRECT
@ CRC_DECLARED_CORRECT
Definition: CrcMode_m.h:57
inet::CRC_DECLARED_INCORRECT
@ CRC_DECLARED_INCORRECT
Definition: CrcMode_m.h:58
inet::ospfv2::CRYTOGRAPHIC_TYPE
@ CRYTOGRAPHIC_TYPE
Definition: Ospfv2Common.h:61
inet::ospfv2::LinkType
LinkType
Enum generated from inet/routing/ospfv2/Ospfv2Packet.msg:113 by opp_msgtool.
Definition: Ospfv2Packet_m.h:429
inet::ospfv2::OSPFv2_NETWORKLSA_MASK_LENGTH
const B OSPFv2_NETWORKLSA_MASK_LENGTH
Definition: Ospfv2Common.h:47
inet::ospfv2::hexCharToByte
char hexCharToByte(char hex)
Definition: Ospfv2Common.h:207
inet::ospfv2::NETWORKLSA_TYPE
@ NETWORKLSA_TYPE
Definition: Ospfv2Packet_m.h:284
inet::ospfv2::TRANSIT_LINK
@ TRANSIT_LINK
Definition: Ospfv2Packet_m.h:431
inet::ospfv2::NEIGHBOR_UPDATE_RETRANSMISSION_TIMER
@ NEIGHBOR_UPDATE_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:99
inet::ospfv2::OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH
const B OSPFv2_ASEXTERNALLSA_TOS_INFO_LENGTH
Definition: Ospfv2Common.h:51
inet::ospfv2::OSPFv2_TOS_LENGTH
const B OSPFv2_TOS_LENGTH
Definition: Ospfv2Common.h:46
inet::ospfv2::__doUnpacking
void INET_API __doUnpacking(omnetpp::cCommBuffer *b, Ospfv2LsaRequest &a)
inet::ospfv2::INTERFACE_WAIT_TIMER
@ INTERFACE_WAIT_TIMER
Definition: Ospfv2Packet_m.h:94
inet::ospfv2::NEIGHBOR_DD_RETRANSMISSION_TIMER
@ NEIGHBOR_DD_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:98