31 neighsAddr[dst] = dst_addr;
33 if(!fwd->setNeigh(dst, port)){
return; }
35 bool first = ports[dst_addr].empty();
36 ports[dst_addr].insert(port);
39 rt->insertNeighbour(addr, dst_addr);
46 neighsAddr[dst] = dst_addr;
49 ports[dst_addr].erase(port);
50 bool last = ports[dst_addr].empty();
53 p = *ports[dst_addr].begin();
55 ports.erase(dst_addr);
58 if(!fwd->setNeigh(dst, p)){
return; }
61 rt->removeNeighbour(addr, dst_addr);
68 if(!updateRoutes) {
return; }
70 auto entries = rt->getChanges();
72 for(
auto & e : entries) {
73 fwd->setDst(e.dst, e.next);
89 (getModuleByPath(
"^.^.relayAndMux.pduForwardingPolicy"));
91 (getModuleByPath(
"^.^.routingPolicy"));
93 difA = check_and_cast<
DA *>(getModuleByPath(
"^.^.^.difAllocator.da"));
95 string myAddr = getModuleByPath(
"^.^")->par(
"ipcAddress").stringValue();
97 fwd->setNodeInfo(myAddr);
99 simtime_t startUpdating = par(
"startUpdating").doubleValue();
100 if(startUpdating > simTime()) {
101 updateRoutes =
false;
102 scheduleAt(startUpdating,
new cMessage(
"start"));
Register_Class(SimpleDCGenerator)
const APN & getIpcAddress() const
Getter of IPC Process address which should be unambiguous within DIF.
void handleMessage(cMessage *msg)
virtual void removedFlow(const Address &addr, const QoSCube &qos, RMTPort *port)
virtual void onPolicyInit()
Class representing QoSCube with all its properties that is primarily used by FA, RMT and RA Specifica...
virtual void insertedFlow(const Address &addr, const QoSCube &qos, RMTPort *port)
const std::string & getName() const
Gets APN string name representation.
Address class holds IPC Process identification.
virtual void routingUpdated()