QuISP
Loading...
Searching...
No Matches
RoutingDaemon.h
Go to the documentation of this file.
1/*
2 * RoutingDaemon.h
3 *
4 * Created on: 2018/06/12
5 * Author: takaakimatsuo
6 */
7
8#pragma once
9
10#include "IRoutingDaemon.h"
12#include "modules/QNIC.h"
15
21
22// destaddr -> {self_qnic_address (unique)}
23using RoutingTable = std::map<int, int>;
24
25using namespace ospf;
26using namespace quisp::messages;
27
29 public:
31
32 protected:
38
40 void generateRoutingTable(cTopology *topo);
41 int getQNicAddr(const cGate *const parentModuleGate);
42
43 void initialize(int stage) override;
44 void handleMessage(cMessage *msg) override;
45 int numInitStages() const override { return 3; };
46
47 size_t getNumNeighbors();
48
49 void ospfHandleHelloPacket(const OspfHelloPacket *const pk);
52 bool ospfMyAddressIsRecognizedByNeighbor(const OspfHelloPacket *const msg);
53 void ospfRegisterNeighbor(const OspfPacket *const pk, OspfState state);
54 bool ospfNeighborIsRegistered(NodeAddr address) const;
55
56 void ospfHandleDbdPacket(const OspfDbdPacket *const pk);
57 void ospfExStartState(const OspfDbdPacket *const pk);
61 void ospfSendLsdbSummary(NodeAddr destination, bool i_am_master = false);
62
63 void ospfSendLinkStateRequest(NodeAddr dst, const RouterIds &missing_lsa_ids);
64 void ospfHandleLinkStateRequest(const OspfLsrPacket *const pk);
65
66 void ospfHandleLinkStateUpdate(const OspfLsuPacket *const pk);
67 void ospfUpdateLinkStateDatabase(const OspfLsuPacket *const msg);
68 void ospfSendUpdatedLsdbToNeighboringRouters(NodeAddr source_of_updated_lsdb);
69
71
72 public:
73 int getNumEndNodes() override;
74 int findQNicAddrByDestAddr(int destAddr) override;
75
76 private:
78};
79
80} // namespace quisp::modules::routing_daemon
This file contains the declaration of the LinkStateDatabase and classes and structs which LinkStateDa...
QNIC.
Definition IRoutingDaemon.h:9
int getQNicAddr(const cGate *const parentModuleGate)
Definition RoutingDaemon.cc:101
int numInitStages() const override
Definition RoutingDaemon.h:45
void ospfHandleHelloPacket(const OspfHelloPacket *const pk)
Definition RoutingDaemon.cc:174
void ospfSlaveInitiateExchangeState(NodeAddr dest)
Definition RoutingDaemon.cc:293
void ospfHandleLinkStateUpdate(const OspfLsuPacket *const pk)
Definition RoutingDaemon.cc:335
void ospfHandleLinkStateRequest(const OspfLsrPacket *const pk)
Definition RoutingDaemon.cc:324
bool ospfNeighborIsRegistered(NodeAddr address) const
Definition RoutingDaemon.cc:235
void ospfMasterEnterExchangeState(NodeAddr dest)
Definition RoutingDaemon.cc:298
void ospfSendLsdbSummary(NodeAddr destination, bool i_am_master=false)
Definition RoutingDaemon.cc:303
bool ospfMyAddressIsRecognizedByNeighbor(const OspfHelloPacket *const msg)
Definition RoutingDaemon.cc:218
RoutingDaemon()
RoutingDaemon.
Definition RoutingDaemon.cc:48
int getNumEndNodes() override
Definition RoutingDaemon.cc:121
void ospfSendExstartDbdPacket(NodeAddr neighbor)
Definition RoutingDaemon.cc:284
void handleMessage(cMessage *msg) override
Definition RoutingDaemon.cc:142
bool run_ospf
Definition RoutingDaemon.h:77
void ospfUpdateLinkStateDatabase(const OspfLsuPacket *const msg)
Definition RoutingDaemon.cc:347
void ospfSendHelloPacketToNeighbor(NodeAddr neighbor)
Definition RoutingDaemon.cc:210
void initialize(int stage) override
Definition RoutingDaemon.cc:50
void ospfHandleDbdPacket(const OspfDbdPacket *const pk)
Definition RoutingDaemon.cc:237
int findQNicAddrByDestAddr(int destAddr) override
Definition RoutingDaemon.cc:112
void ospfUpdateMyAddressLsaInLsdb()
Definition RoutingDaemon.cc:362
ospf::NeighborTable neighbor_table
Definition RoutingDaemon.h:36
void generateRoutingTable()
Definition RoutingDaemon.cc:72
utils::ComponentProvider provider
Definition RoutingDaemon.h:35
void ospfInitializeRoutingDaemon()
Definition RoutingDaemon.cc:196
size_t getNumNeighbors()
returns the number of neighbors of this node
Definition RoutingDaemon.cc:172
void ospfRegisterNeighbor(const OspfPacket *const pk, OspfState state)
Definition RoutingDaemon.cc:226
RoutingTable qrtable
Definition RoutingDaemon.h:34
LinkStateDatabase link_state_database
Definition RoutingDaemon.h:37
NodeAddr my_address
Definition RoutingDaemon.h:33
void ospfSendUpdatedLsdbToNeighboringRouters(NodeAddr source_of_updated_lsdb)
Definition RoutingDaemon.cc:354
void ospfSendLinkStateRequest(NodeAddr dst, const RouterIds &missing_lsa_ids)
Definition RoutingDaemon.cc:314
void ospfExStartState(const OspfDbdPacket *const pk)
Exchange packets to decide who the master or slave is.
Definition RoutingDaemon.cc:268
ComponentProvider class provides a way to access other quisp other modules.
Definition ComponentProvider.h:22
std::map< NodeAddr, OspfNeighborInfo > NeighborTable
Definition Ospf.h:34
int NodeAddr
Definition Ospf.h:32
OspfState
Definition Ospf.h:38
std::vector< int > RouterIds
Definition Ospf.h:33
Definition RoutingDaemon.cc:14
std::map< int, int > RoutingTable
Definition RoutingDaemon.h:23