64,65c64
< for(int i = 0;i < m_virtual_networks;++i)
< {
---
> for(int i = 0;i < m_virtual_networks;++i) {
71c70
< PerfectSwitch::addInPort(const vector<MessageBuffer*>& in)
---
> PerfectSwitch::addInPort(const map<int, MessageBuffer*>& in)
73d71
< assert(in.size() == m_virtual_networks);
77,78c75,76
< for (int j = 0; j < m_virtual_networks; j++) {
< m_in[port][j]->setConsumer(this);
---
> for (auto& it : in) {
> it.second->setConsumer(this);
81,84c79,83
< to_string(m_switch_id), to_string(port), to_string(j));
< m_in[port][j]->setDescription(desc);
< m_in[port][j]->setIncomingLink(port);
< m_in[port][j]->setVnet(j);
---
> to_string(m_switch_id), to_string(port), to_string(it.first));
>
> it.second->setDescription(desc);
> it.second->setIncomingLink(port);
> it.second->setVnet(it.first);
89c88
< PerfectSwitch::addOutPort(const vector<MessageBuffer*>& out,
---
> PerfectSwitch::addOutPort(const map<int, MessageBuffer*>& out,
92,93d90
< assert(out.size() == m_virtual_networks);
<
155c152,157
< while (m_in[incoming][vnet]->isReady()) {
---
> auto it = m_in[incoming].find(vnet);
> if (it == m_in[incoming].end())
> continue;
> MessageBuffer *buffer = (*it).second;
>
> while (buffer->isReady()) {
159c161
< msg_ptr = m_in[incoming][vnet]->peekMsgPtr();
---
> msg_ptr = buffer->peekMsgPtr();
264c266
< m_in[incoming][vnet]->dequeue();
---
> buffer->dequeue();