37 neighbours[dst].insert(port);
38 if(neighbours[dst].size() == 1){
39 rt->addFlow(addr,
"", dst,1);
45 neighbours[dst].erase(port);
46 if(neighbours[dst].size() <= 0){
47 rt->removeFlow(addr,
"", dst);
48 neighbours.erase(dst);
57 for(
DMRnms::s2AIt eIt = it->entries.begin(); eIt != it->entries.end(); eIt++){
58 std::string dst = eIt->first;
59 std::string nextHop = eIt->second.getIpcAddress().getName();
61 EV <<
"Entry ::: "<< dst <<
" -> " << nextHop <<
" ("<< eIt->second<<
")" <<endl;
64 NTableIt n = neighbours.find(nextHop);
65 if(n != neighbours.end()){
66 p = *(n->second.begin());
84 std::string alg = par(
"alg").stdstringValue();
87 rt->addDomain(
"", getModuleByPath(
"^.^")->par(
"ipcAddress").stringValue(),
DMRnms::LS);
89 rt->addDomain(
"", getModuleByPath(
"^.^")->par(
"ipcAddress").stringValue(),
DMRnms::DV);
const char * MOD_POL_ROUTING
const char * MOD_DIFALLOC
virtual void removedFlow(const Address &addr, const QoSCube &qos, RMTPort *port)
const APN & getIpcAddress() const
Getter of IPC Process address which should be unambiguous within DIF.
virtual void routingUpdated()
virtual void insertedFlow(const Address &addr, const QoSCube &qos, RMTPort *port)
const char * MOD_RELAYANDMUX
dmUpdateM::iterator dmUpdateMIt
Class representing QoSCube with all its properties that is primarily used by FA, RMT and RA Specifica...
Register_Class(SingleDomainGenerator)
virtual void onPolicyInit()
std::vector< dmNxt > dmUpdateM
const std::string & getName() const
Gets APN string name representation.
NTable::iterator NTableIt
const char * MOD_POL_RMT_PDUFWD
Address class holds IPC Process identification.