80    Dbg info(Dbg::Port, Dbg::Info);
 
   85        auto *p = 
lookup(src, vlan_id);
 
   88            info.printf(
"%s %-20s -> ", !p ? 
"learned " : 
"replaced",
 
   95    auto status = _mac_table.emplace(std::tuple(src, vlan_id),
 
   96                                     &_entries[_rr_index]);
 
   99        if (_entries[_rr_index].port)
 
  102            _mac_table.erase(std::tuple(_entries[_rr_index].addr,
 
  103                                        _entries[_rr_index].vlan_id));
 
  106        _entries[_rr_index].port = port;
 
  107        _entries[_rr_index].addr = src;
 
  108        _entries[_rr_index].vlan_id = vlan_id;
 
  109        _rr_index = (_rr_index + 1U) % Size;
 
  114        status.first->second->port = port;
 
 
  131    typedef std::pair<std::tuple<const Mac_addr, l4_uint16_t>, Entry*> TableEntry;
 
  133    auto iter = _mac_table.begin();
 
  134    while ((iter = std::find_if(iter, _mac_table.end(),
 
  135                                [port](TableEntry 
const &p)
 
  136                                { return p.second->port == port; }))
 
  139        iter->second->port = 
nullptr;
 
  140        iter->second->addr = Mac_addr::Addr_unknown;
 
  141        iter->second->vlan_id = 0;
 
  142        iter = _mac_table.erase(iter);
 
  145    assert(std::find_if(_mac_table.begin(), _mac_table.end(),
 
  146                        [port](TableEntry 
const &p)
 
  147                        { return p.second->port == port; }) == _mac_table.end());