in astra-sim-alibabacloud/astra-sim/network_frontend/ns3/common.h [341:416]
void printRoutingEntries() {
map<uint32_t, string> types;
types[0] = "HOST";
types[1] = "SWITCH";
types[2] = "NVSWITCH";
map<Ptr<Node>, map<Ptr<Node>, vector<pair<Ptr<Node>, uint32_t> >>> NVSwitch, NetSwitch, Host;
for (auto i = nextHop.begin(); i != nextHop.end(); i++) {
Ptr<Node> src = i -> first;
auto &table = i->second;
for (auto j = table.begin(); j != table.end(); j++) {
Ptr<Node> dst = j->first;
Ipv4Address dstAddr = dst->GetObject<Ipv4>()->GetAddress(1, 0).GetLocal();
vector<Ptr<Node>> nexts = j->second;
for (int k = 0; k < (int)nexts.size(); k++) {
Ptr<Node> firstHop = nexts[k];
uint32_t interface = nbr2if[src][firstHop].idx;
if(src->GetNodeType() == 0) {
Host[src][dst].push_back(pair<Ptr<Node>, uint32_t>(firstHop, interface));
} else if(src->GetNodeType() == 1) {
NetSwitch[src][dst].push_back(pair<Ptr<Node>, uint32_t>(firstHop, interface));
} else if(src->GetNodeType() == 2) {
NVSwitch[src][dst].push_back(pair<Ptr<Node>, uint32_t>(firstHop, interface));
}
}
}
}
cout << "********************* PRINT SWITCH ROUTING TABLE *********************" << endl << endl << endl;
for(auto it = NetSwitch.begin(); it != NetSwitch.end(); ++ it) {
Ptr<Node> src = it -> first;
auto table = it -> second;
cout << "SWITCH: " << src->GetId() << "'s routing entries are as follows:" << endl;
for(auto j = table.begin(); j != table.end(); ++ j) {
Ptr<Node> dst = j -> first;
auto entries = j -> second;
for(auto k = entries.begin(); k != entries.end(); ++ k) {
Ptr<Node> nextHop = k->first;
uint32_t interface = k->second;
cout << "To " << dst->GetId() << "[" << types[dst->GetNodeType()] << "] via " << nextHop->GetId() << "[" << types[nextHop->GetNodeType()] << "]" << " from port: " << interface << endl;
}
}
}
cout << "********************* PRINT NVSWITCH ROUTING TABLE *********************" << endl << endl << endl;
for(auto it = NVSwitch.begin(); it != NVSwitch.end(); ++ it) {
Ptr<Node> src = it -> first;
auto table = it -> second;
cout << "NVSWITCH: " << src->GetId() << "'s routing entries are as follows:" << endl;
for(auto j = table.begin(); j != table.end(); ++ j) {
Ptr<Node> dst = j -> first;
auto entries = j -> second;
for(auto k = entries.begin(); k != entries.end(); ++ k) {
Ptr<Node> nextHop = k->first;
uint32_t interface = k->second;
cout << "To " << dst->GetId() << "[" << types[dst->GetNodeType()] << "] via " << nextHop->GetId() << "[" << types[nextHop->GetNodeType()] << "]" << " from port: " << interface << endl;
}
}
}
cout << "********************* HOST ROUTING TABLE *********************" << endl << endl << endl;
for(auto it = Host.begin(); it != Host.end(); ++ it) {
Ptr<Node> src = it -> first;
auto table = it -> second;
cout << "HOST: " << src->GetId() << "'s routing entries are as follows:" << endl;
for(auto j = table.begin(); j != table.end(); ++ j) {
Ptr<Node> dst = j -> first;
auto entries = j -> second;
for(auto k = entries.begin(); k != entries.end(); ++ k) {
Ptr<Node> nextHop = k->first;
uint32_t interface = k->second;
cout << "To " << dst->GetId() << "[" << types[dst->GetNodeType()] << "] via " << nextHop->GetId() << "[" << types[nextHop->GetNodeType()] << "]" << " from port: " << interface << endl;
}
}
}
}