|
INET Framework for OMNeT++/OMNEST
|
#include <MessageHandler.h>
|
| | MessageHandler (Router *containingRouter, cSimpleModule *containingModule) |
| |
| void | messageReceived (cMessage *message) |
| |
| void | handleTimer (cMessage *timer) |
| |
| void | processPacket (Packet *packet, Ospfv2Interface *unused1=nullptr, Neighbor *unused2=nullptr) override |
| |
| void | sendPacket (Packet *packet, Ipv4Address destination, Ospfv2Interface *outputIf, short ttl=1) |
| |
| void | clearTimer (cMessage *timer) |
| |
| void | startTimer (cMessage *timer, simtime_t delay) |
| |
| void | printEvent (const char *eventString, const Ospfv2Interface *onInterface=nullptr, const Neighbor *forNeighbor=nullptr) const |
| |
| void | printHelloPacket (const Ospfv2HelloPacket *helloPacket, Ipv4Address destination, int outputIfIndex) const |
| |
| void | printDatabaseDescriptionPacket (const Ospfv2DatabaseDescriptionPacket *ddPacket, Ipv4Address destination, int outputIfIndex) const |
| |
| void | printLinkStateRequestPacket (const Ospfv2LinkStateRequestPacket *requestPacket, Ipv4Address destination, int outputIfIndex) const |
| |
| void | printLinkStateUpdatePacket (const Ospfv2LinkStateUpdatePacket *updatePacket, Ipv4Address destination, int outputIfIndex) const |
| |
| void | printLinkStateAcknowledgementPacket (const Ospfv2LinkStateAcknowledgementPacket *ackPacket, Ipv4Address destination, int outputIfIndex) const |
| |
| bool | authenticatePacket (const Ospfv2Packet *packet) |
| |
Public Member Functions inherited from inet::ospfv2::IMessageHandler |
| | IMessageHandler (Router *containingRouter) |
| |
| virtual | ~IMessageHandler () |
| |
◆ MessageHandler()
| inet::ospfv2::MessageHandler::MessageHandler |
( |
Router * |
containingRouter, |
|
|
cSimpleModule * |
containingModule |
|
) |
| |
◆ authenticatePacket()
| bool inet::ospfv2::MessageHandler::authenticatePacket |
( |
const Ospfv2Packet * |
packet | ) |
|
|
inline |
◆ clearTimer()
| void inet::ospfv2::MessageHandler::clearTimer |
( |
cMessage * |
timer | ) |
|
Referenced by inet::ospfv2::Neighbor::clearRequestRetransmissionTimer(), inet::ospfv2::Neighbor::clearUpdateRetransmissionTimer(), inet::ospfv2::NeighborStateTwoWay::processEvent(), inet::ospfv2::NeighborStateDown::processEvent(), inet::ospfv2::NeighborStateExchange::processEvent(), inet::ospfv2::NeighborStateExchangeStart::processEvent(), inet::ospfv2::NeighborStateFull::processEvent(), inet::ospfv2::NeighborStateInit::processEvent(), inet::ospfv2::NeighborStateLoading::processEvent(), inet::ospfv2::NeighborStateAttempt::processEvent(), inet::ospfv2::Ospfv2Interface::reset(), inet::ospfv2::Neighbor::reset(), inet::ospfv2::Neighbor::~Neighbor(), inet::ospfv2::Ospfv2Interface::~Ospfv2Interface(), and inet::ospfv2::Router::~Router().
◆ handleTimer()
| void inet::ospfv2::MessageHandler::handleTimer |
( |
cMessage * |
timer | ) |
|
53 switch (timer->getKind()) {
55 Ospfv2Interface *intf;
56 if (!(intf =
reinterpret_cast<Ospfv2Interface *
>(timer->getContextPointer()))) {
58 EV_INFO <<
"Discarding invalid InterfaceHelloTimer.\n";
69 Ospfv2Interface *intf;
70 if (!(intf =
reinterpret_cast<Ospfv2Interface *
>(timer->getContextPointer()))) {
72 EV_INFO <<
"Discarding invalid InterfaceWaitTimer.\n";
83 Ospfv2Interface *intf;
84 if (!(intf =
reinterpret_cast<Ospfv2Interface *
>(timer->getContextPointer()))) {
86 EV_INFO <<
"Discarding invalid InterfaceAcknowledgementTimer.\n";
90 printEvent(
"Acknowledgement Timer expired", intf);
98 if (!(neighbor =
reinterpret_cast<Neighbor *
>(timer->getContextPointer()))) {
100 EV_INFO <<
"Discarding invalid NeighborInactivityTimer.\n";
104 printEvent(
"Inactivity Timer expired", neighbor->getInterface(), neighbor);
112 if (!(neighbor =
reinterpret_cast<Neighbor *
>(timer->getContextPointer()))) {
114 EV_INFO <<
"Discarding invalid NeighborInactivityTimer.\n";
118 printEvent(
"Poll Timer expired", neighbor->getInterface(), neighbor);
126 if (!(neighbor =
reinterpret_cast<Neighbor *
>(timer->getContextPointer()))) {
128 EV_INFO <<
"Discarding invalid NeighborDDRetransmissionTimer.\n";
132 printEvent(
"Database Description Retransmission Timer expired", neighbor->getInterface(), neighbor);
140 if (!(neighbor =
reinterpret_cast<Neighbor *
>(timer->getContextPointer()))) {
142 EV_INFO <<
"Discarding invalid NeighborUpdateRetransmissionTimer.\n";
146 printEvent(
"Update Retransmission Timer expired", neighbor->getInterface(), neighbor);
154 if (!(neighbor =
reinterpret_cast<Neighbor *
>(timer->getContextPointer()))) {
156 EV_INFO <<
"Discarding invalid NeighborRequestRetransmissionTimer.\n";
160 printEvent(
"Request Retransmission Timer expired", neighbor->getInterface(), neighbor);
Referenced by messageReceived().
◆ messageReceived()
| void inet::ospfv2::MessageHandler::messageReceived |
( |
cMessage * |
message | ) |
|
◆ printDatabaseDescriptionPacket()
446 EV_INFO <<
"Sending Database Description packet to " << destination <<
" on interface[" << outputIfIndex <<
"] with contents:\n";
448 const Ospfv2DdOptions& ddOptions = ddPacket->getDdOptions();
449 EV_INFO <<
" ddOptions="
450 << ((ddOptions.I_Init) ?
"I " :
"_ ")
451 << ((ddOptions.M_More) ?
"M " :
"_ ")
452 << ((ddOptions.MS_MasterSlave) ?
"MS" :
"__")
454 EV_INFO <<
" seqNumber=" << ddPacket->getDdSequenceNumber() <<
"\n";
455 EV_DETAIL <<
" LSA headers:\n";
457 unsigned int lsaCount = ddPacket->getLsaHeadersArraySize();
458 for (
unsigned int i = 0; i < lsaCount; i++) {
459 EV_DETAIL <<
" " << ddPacket->getLsaHeaders(i) <<
"\n";
Referenced by sendPacket().
◆ printEvent()
| void inet::ospfv2::MessageHandler::printEvent |
( |
const char * |
eventString, |
|
|
const Ospfv2Interface * |
onInterface = nullptr, |
|
|
const Neighbor * |
forNeighbor = nullptr |
|
) |
| const |
◆ printHelloPacket()
| void inet::ospfv2::MessageHandler::printHelloPacket |
( |
const Ospfv2HelloPacket * |
helloPacket, |
|
|
Ipv4Address |
destination, |
|
|
int |
outputIfIndex |
|
) |
| const |
431 EV_INFO <<
"Sending Hello packet to " << destination <<
" on interface[" << outputIfIndex <<
"] with contents:\n";
432 EV_INFO <<
" netMask=" << helloPacket->getNetworkMask() <<
"\n";
433 EV_INFO <<
" DR=" << helloPacket->getDesignatedRouter() <<
"\n";
434 EV_INFO <<
" BDR=" << helloPacket->getBackupDesignatedRouter() <<
"\n";
436 EV_DETAIL <<
" neighbors:\n";
438 unsigned int neighborCount = helloPacket->getNeighborArraySize();
439 for (
unsigned int i = 0; i < neighborCount; i++) {
440 EV_DETAIL <<
" " << helloPacket->getNeighbor(i) <<
"\n";
Referenced by sendPacket().
◆ printLinkStateAcknowledgementPacket()
569 EV_INFO <<
"Sending Link State Acknowledgement packet to " << destination <<
" on interface[" << outputIfIndex <<
"] with acknowledgements:\n";
571 unsigned int lsaCount = ackPacket->getLsaHeadersArraySize();
572 for (
unsigned int i = 0; i < lsaCount; i++) {
573 EV_DETAIL <<
" " << ackPacket->getLsaHeaders(i) <<
"\n";
Referenced by sendPacket().
◆ printLinkStateRequestPacket()
465 EV_INFO <<
"Sending Link State Request packet to " << destination <<
" on interface[" << outputIfIndex <<
"] with requests:\n";
467 unsigned int requestCount = requestPacket->getRequestsArraySize();
468 for (
unsigned int i = 0; i < requestCount; i++) {
469 EV_DETAIL <<
" " << requestPacket->getRequests(i) <<
"\n";
Referenced by sendPacket().
◆ printLinkStateUpdatePacket()
475 EV_INFO <<
"Sending Link State Update packet to " << destination <<
" on interface[" << outputIfIndex <<
"] with updates:\n";
478 unsigned int updateCount = updatePacket->getOspfLSAsArraySize();
480 for (i = 0; i < updateCount; i++) {
481 const Ospfv2Lsa *ospfLsa = updatePacket->getOspfLSAs(i);
482 EV_DETAIL <<
" " << ospfLsa->getHeader() <<
"\n";
484 switch (ospfLsa->getHeader().getLsType()) {
486 const Ospfv2RouterLsa& lsa = *check_and_cast<const Ospfv2RouterLsa *>(ospfLsa);
487 EV_DETAIL <<
" bits="
488 << ((lsa.getV_VirtualLinkEndpoint()) ?
"V " :
"_ ")
489 << ((lsa.getE_ASBoundaryRouter()) ?
"E " :
"_ ")
490 << ((lsa.getB_AreaBorderRouter()) ?
"B" :
"_")
492 EV_DETAIL <<
" links:\n";
494 unsigned int linkCount = lsa.getLinksArraySize();
495 for (
unsigned int j = 0; j < linkCount; j++) {
496 const auto& link = lsa.getLinks(j);
497 EV_DETAIL <<
" ID=" << link.getLinkID();
498 EV_DETAIL <<
", data="
499 << link.getLinkData() <<
" (" << Ipv4Address(link.getLinkData()) <<
")"
501 switch (link.getType()) {
503 EV_INFO <<
"PointToPoint";
507 EV_INFO <<
"Transit";
515 EV_INFO <<
"Virtual";
519 EV_INFO <<
"Unknown";
522 EV_DETAIL <<
", cost=" << link.getLinkCost() <<
"\n";
527 const Ospfv2NetworkLsa& lsa = *check_and_cast<const Ospfv2NetworkLsa *>(ospfLsa);
528 EV_DETAIL <<
" netMask=" << lsa.getNetworkMask() <<
"\n";
529 EV_DETAIL <<
" attachedRouters:\n";
531 unsigned int routerCount = lsa.getAttachedRoutersArraySize();
532 for (
unsigned int j = 0; j < routerCount; j++) {
533 EV_DETAIL <<
" " << lsa.getAttachedRouters(j) <<
"\n";
539 const Ospfv2SummaryLsa& lsa = *check_and_cast<const Ospfv2SummaryLsa *>(ospfLsa);
540 EV_DETAIL <<
" netMask=" << lsa.getNetworkMask() <<
"\n";
541 EV_DETAIL <<
" cost=" << lsa.getRouteCost() <<
"\n";
545 const Ospfv2AsExternalLsa& lsa = *check_and_cast<const Ospfv2AsExternalLsa *>(ospfLsa);
547 const Ospfv2AsExternalLsaContents& contents = lsa.getContents();
548 EV_DETAIL <<
" netMask=" << contents.getNetworkMask() <<
"\n";
549 unsigned int tosCount = contents.getExternalTOSInfoArraySize();
550 for (
unsigned int j = 0; j < tosCount; j++) {
551 EV_DETAIL <<
" " << j <<
": "
552 <<
" bits=" << ((contents.getExternalTOSInfo(j).E_ExternalMetricType) ?
"E" :
"_")
553 <<
" tos=" << contents.getExternalTOSInfo(j).tos
554 <<
" cost=" << contents.getExternalTOSInfo(j).routeCost
555 <<
" forward=" << contents.getExternalTOSInfo(j).forwardingAddress
556 <<
" routeTag=" << contents.getExternalTOSInfo(j).externalRouteTag
Referenced by sendPacket().
◆ processPacket()
Implements inet::ospfv2::IMessageHandler.
179 const auto& packet = pk->peekAtFront<Ospfv2Packet>();
180 EV_INFO <<
"Received packet: (" << packet.get()->getClassName() <<
")" << pk->getName() <<
"\n";
182 EV_INFO <<
"This packet is from ourselves, discarding.\n";
189 if (packet->getVersion() == 2) {
190 int interfaceId = pk->getTag<InterfaceInd>()->getInterfaceId();
191 AreaId areaID = packet->getAreaID();
194 if (area !=
nullptr) {
196 Ospfv2Interface *intf = area->
getInterface(interfaceId);
198 if (intf ==
nullptr) {
203 intf = area->findVirtualLink(packet->getRouterID());
205 if (intf !=
nullptr) {
206 Ospfv2Area *virtualLinkTransitArea =
router->
getAreaByID(intf->getTransitAreaId());
208 if (virtualLinkTransitArea !=
nullptr) {
210 Ospfv2Interface *virtualLinkInterface = virtualLinkTransitArea->
getInterface(interfaceId);
212 if (virtualLinkInterface ==
nullptr) {
223 if (intf !=
nullptr) {
224 Ipv4Address sourceAddress = pk->getTag<
L3AddressInd>()->getSrcAddress().toIpv4();
225 Ipv4Address destinationAddress = pk->getTag<
L3AddressInd>()->getDestAddress().toIpv4();
231 ((destinationAddress == allDRouters) &&
237 (destinationAddress != allDRouters)
243 Neighbor *neighbor =
nullptr;
247 switch (intf->getType()) {
251 neighbor = intf->getNeighborByAddress(sourceAddress);
256 neighbor = intf->getNeighborById(packet->getRouterID());
263 switch (packetType) {
269 if (neighbor !=
nullptr) {
275 if (neighbor !=
nullptr) {
281 if (neighbor !=
nullptr) {
287 if (neighbor !=
nullptr) {
Referenced by messageReceived().
◆ sendPacket()
307 throw cRuntimeError(
"Interface '%u' is in NoOSPF mode and cannot send out OSPF messages", outputIf->getIfIndex());
314 int outputIfIndex = outputIf->getIfIndex();
316 packet->addTagIfAbsent<
InterfaceReq>()->setInterfaceId(outputIfIndex);
317 packet->addTagIfAbsent<L3AddressReq>()->setDestAddress(destination);
318 packet->addTagIfAbsent<
HopLimitReq>()->setHopLimit(ttl);
319 const auto& ospfPacket = packet->peekAtFront<Ospfv2Packet>();
321 switch (ospfPacket->getType()) {
323 packet->setName(
"OSPF_HelloPacket");
325 const auto& helloPacket = packet->peekAtFront<Ospfv2HelloPacket>();
331 packet->setName(
"OSPF_DDPacket");
333 const auto& ddPacket = packet->peekAtFront<Ospfv2DatabaseDescriptionPacket>();
339 packet->setName(
"OSPF_LSReqPacket");
341 const auto& requestPacket = packet->peekAtFront<Ospfv2LinkStateRequestPacket>();
347 packet->setName(
"OSPF_LSUpdPacket");
349 const auto& updatePacket = packet->peekAtFront<Ospfv2LinkStateUpdatePacket>();
355 packet->setName(
"OSPF_LSAckPacket");
357 const auto& ackPacket = packet->peekAtFront<Ospfv2LinkStateAcknowledgementPacket>();
Referenced by inet::ospfv2::LinkStateUpdateHandler::acknowledgeLSA(), inet::ospfv2::Ospfv2Interface::floodLsa(), inet::ospfv2::LinkStateRequestHandler::processPacket(), inet::ospfv2::LinkStateUpdateHandler::processPacket(), inet::ospfv2::Neighbor::retransmitDatabaseDescriptionPacket(), 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().
◆ startTimer()
| void inet::ospfv2::MessageHandler::startTimer |
( |
cMessage * |
timer, |
|
|
simtime_t |
delay |
|
) |
| |
Referenced by inet::ospfv2::Router::ageDatabase(), inet::ospfv2::InterfaceStateBackup::processEvent(), inet::ospfv2::InterfaceStateDown::processEvent(), inet::ospfv2::NeighborStateTwoWay::processEvent(), inet::ospfv2::NeighborStateLoading::processEvent(), inet::ospfv2::NeighborStateInit::processEvent(), inet::ospfv2::NeighborStateFull::processEvent(), inet::ospfv2::NeighborStateExchangeStart::processEvent(), inet::ospfv2::NeighborStateExchange::processEvent(), inet::ospfv2::NeighborStateDown::processEvent(), inet::ospfv2::InterfaceStateNotDesignatedRouter::processEvent(), inet::ospfv2::NeighborStateAttempt::processEvent(), inet::ospfv2::InterfaceStateDesignatedRouter::processEvent(), inet::ospfv2::InterfaceStateWaiting::processEvent(), inet::ospfv2::InterfaceStatePointToPoint::processEvent(), inet::ospfv2::Router::Router(), inet::ospfv2::Ospfv2Interface::sendDelayedAcknowledgements(), inet::ospfv2::Neighbor::startRequestRetransmissionTimer(), and inet::ospfv2::Neighbor::startUpdateRetransmissionTimer().
◆ ddHandler
◆ helloHandler
◆ lsAckHandler
◆ lsRequestHandler
◆ lsUpdateHandler
◆ ospfModule
| cSimpleModule* inet::ospfv2::MessageHandler::ospfModule |
|
private |
The documentation for this class was generated from the following files:
Ospfv2Interface * getInterface(unsigned char ifIndex)
Definition: Ospfv2Area.cc:197
void printEvent(const char *eventString, const Ospfv2Interface *onInterface=nullptr, const Neighbor *forNeighbor=nullptr) const
Definition: MessageHandler.cc:380
@ LINKSTATE_ACKNOWLEDGEMENT_PACKET
Definition: OspfPacketBase_m.h:69
@ POINTTOPOINT
Definition: Ospfv2Interface.h:32
@ INTERFACE_HELLO_TIMER
Definition: Ospfv2Packet_m.h:93
@ STUB_LINK
Definition: Ospfv2Packet_m.h:432
DatabaseDescriptionHandler ddHandler
Definition: MessageHandler.h:27
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down protocol
Definition: IUdp-gates.txt:25
@ WAIT_TIMER
Definition: Ospfv2Interface.h:42
@ SUMMARYLSA_NETWORKS_TYPE
Definition: Ospfv2Packet_m.h:285
unsigned long getAreaCount() const
Definition: Ospfv2Router.h:63
@ LINKSTATE_REQUEST_PACKET
Definition: OspfPacketBase_m.h:67
static const Protocol ipv4
Definition: Protocol.h:93
void printDatabaseDescriptionPacket(const Ospfv2DatabaseDescriptionPacket *ddPacket, Ipv4Address destination, int outputIfIndex) const
Definition: MessageHandler.cc:444
@ DESIGNATED_ROUTER_STATE
Definition: Ospfv2Interface.h:58
Ospfv2InterfaceStateType
Definition: Ospfv2Interface.h:51
bool authenticatePacket(const Ospfv2Packet *packet)
Definition: MessageHandler.h:52
void printLinkStateUpdatePacket(const Ospfv2LinkStateUpdatePacket *updatePacket, Ipv4Address destination, int outputIfIndex) const
Definition: MessageHandler.cc:473
static const Protocol icmpv4
Definition: Protocol.h:71
removed InterfaceReq
Definition: IUdp-gates.txt:11
@ NEIGHBOR_REQUEST_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:100
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down DispatchProtocolReq
Definition: IUdp-gates.txt:25
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd L3AddressInd
Definition: IUdp-gates.txt:20
@ ROUTERLSA_TYPE
Definition: Ospfv2Packet_m.h:283
@ ACKNOWLEDGEMENT_TIMER
Definition: Ospfv2Interface.h:43
void handleTimer(cMessage *timer)
Definition: MessageHandler.cc:51
@ HELLO_PACKET
Definition: OspfPacketBase_m.h:65
@ LINKSTATE_UPDATE_PACKET
Definition: OspfPacketBase_m.h:68
removed DscpReq Ipv4ControlInfo Ipv6ControlInfo up L3AddressInd DispatchProtocolReq L4PortInd Ipv4ControlInfo Ipv6ControlInfo down PacketProtocolTag
Definition: IUdp-gates.txt:25
LinkStateRequestHandler lsRequestHandler
Definition: MessageHandler.h:28
@ NEIGHBOR_POLL_TIMER
Definition: Ospfv2Packet_m.h:97
@ SUMMARYLSA_ASBOUNDARYROUTERS_TYPE
Definition: Ospfv2Packet_m.h:286
const AreaId BACKBONE_AREAID(0, 0, 0, 0)
Ospfv2Area * getAreaByID(AreaId areaID)
Returns the pointer to the Area identified by the input areaID, if it's on the Area list,...
Definition: Ospfv2Router.cc:63
@ VIRTUAL
Definition: Ospfv2Interface.h:36
HelloHandler helloHandler
Definition: MessageHandler.h:26
void processPacket(Packet *packet, Ospfv2Interface *intf, Neighbor *neighbor) override
Definition: LinkStateUpdateHandler.cc:39
@ AS_EXTERNAL_LSA_TYPE
Definition: Ospfv2Packet_m.h:287
static const Ipv4Address ALL_OSPF_DESIGNATED_ROUTERS_MCAST
224.0.0.6 All OSPF Designated Routers
Definition: Ipv4Address.h:100
@ DATABASE_DESCRIPTION_PACKET
Definition: OspfPacketBase_m.h:66
@ HELLO_TIMER
Definition: Ospfv2Interface.h:41
void printLinkStateRequestPacket(const Ospfv2LinkStateRequestPacket *requestPacket, Ipv4Address destination, int outputIfIndex) const
Definition: MessageHandler.cc:463
removed HopLimitReq
Definition: IUdp-gates.txt:11
@ INACTIVITY_TIMER
Definition: Ospfv2Neighbor.h:41
OspfPacketType
Enum generated from inet/routing/ospf_common/OspfPacketBase.msg:15 by opp_msgtool.
Definition: OspfPacketBase_m.h:64
@ INTERFACE_ACKNOWLEDGEMENT_TIMER
Definition: Ospfv2Packet_m.h:95
@ VIRTUAL_LINK
Definition: Ospfv2Packet_m.h:433
@ NBMA
Definition: Ospfv2Interface.h:34
void processPacket(Packet *packet, Ospfv2Interface *intf, Neighbor *neighbor) override
Definition: LinkStateRequestHandler.cc:23
void printLinkStateAcknowledgementPacket(const Ospfv2LinkStateAcknowledgementPacket *ackPacket, Ipv4Address destination, int outputIfIndex) const
Definition: MessageHandler.cc:567
@ PASSIVE
Definition: Ospfv2Interface.h:63
@ UPDATE_RETRANSMISSION_TIMER
Definition: Ospfv2Neighbor.h:45
cSimpleModule * ospfModule
Definition: MessageHandler.h:24
IMessageHandler(Router *containingRouter)
Definition: IMessageHandler.h:27
void processPacket(Packet *packet, Ospfv2Interface *unused1=nullptr, Neighbor *unused2=nullptr) override
Definition: MessageHandler.cc:177
@ NEIGHBOR_INACTIVITY_TIMER
Definition: Ospfv2Packet_m.h:96
LinkStateUpdateHandler lsUpdateHandler
Definition: MessageHandler.h:29
RouterId getRouterID() const
Definition: Ospfv2Router.h:60
@ POINTTOPOINT_LINK
Definition: Ospfv2Packet_m.h:430
void ageDatabase()
Ages the LSAs in the Router's database.
Definition: Ospfv2Router.cc:278
void processPacket(Packet *packet, Ospfv2Interface *intf, Neighbor *unused=nullptr) override
Definition: HelloHandler.cc:23
@ POINTTOMULTIPOINT
Definition: Ospfv2Interface.h:35
LinkStateAcknowledgementHandler lsAckHandler
Definition: MessageHandler.h:30
@ DATABASE_AGE_TIMER
Definition: Ospfv2Packet_m.h:101
@ DD_RETRANSMISSION_TIMER
Definition: Ospfv2Neighbor.h:44
static const Protocol ospf
Definition: Protocol.h:102
void processPacket(Packet *packet, Ospfv2Interface *intf, Neighbor *neighbor) override
Definition: LinkStateAcknowledgementHandler.cc:19
@ NETWORKLSA_TYPE
Definition: Ospfv2Packet_m.h:284
@ POLL_TIMER
Definition: Ospfv2Neighbor.h:42
@ BROADCAST
Definition: Ospfv2Interface.h:33
@ TRANSIT_LINK
Definition: Ospfv2Packet_m.h:431
@ NEIGHBOR_UPDATE_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:99
Ipv4Address AreaId
Definition: Ospfv2Common.h:130
@ NO_OSPF
Definition: Ospfv2Interface.h:64
Router * router
Definition: IMessageHandler.h:24
@ BACKUP_STATE
Definition: Ospfv2Interface.h:57
@ INTERFACE_WAIT_TIMER
Definition: Ospfv2Packet_m.h:94
@ NEIGHBOR_DD_RETRANSMISSION_TIMER
Definition: Ospfv2Packet_m.h:98
void printHelloPacket(const Ospfv2HelloPacket *helloPacket, Ipv4Address destination, int outputIfIndex) const
Definition: MessageHandler.cc:429
@ REQUEST_RETRANSMISSION_TIMER
Definition: Ospfv2Neighbor.h:46
void processPacket(Packet *packet, Ospfv2Interface *intf, Neighbor *neighbor) override
Definition: DatabaseDescriptionHandler.cc:22