X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Farp_proxy_binding.cpp;h=bbae9f683ebda986b86583a4fd0109761b6a8681;hb=0053de63ec4bf8b9bce7817f1b61c9791baf6c26;hp=73d3d844f53539bc7ab7346c0f65c51b7b9e4745;hpb=164e5f8c63652028ecb9c3570e1ea8618b163071;p=vpp.git diff --git a/extras/vom/vom/arp_proxy_binding.cpp b/extras/vom/vom/arp_proxy_binding.cpp index 73d3d844f53..bbae9f683eb 100644 --- a/extras/vom/vom/arp_proxy_binding.cpp +++ b/extras/vom/vom/arp_proxy_binding.cpp @@ -26,17 +26,14 @@ singular_db arp_proxy_binding::m_db; arp_proxy_binding::event_handler arp_proxy_binding::m_evh; -arp_proxy_binding::arp_proxy_binding(const interface& itf, - const arp_proxy_config& proxy_cfg) +arp_proxy_binding::arp_proxy_binding(const interface& itf) : m_itf(itf.singular()) - , m_arp_proxy_cfg(proxy_cfg.singular()) , m_binding(true) { } arp_proxy_binding::arp_proxy_binding(const arp_proxy_binding& o) : m_itf(o.m_itf) - , m_arp_proxy_cfg(o.m_arp_proxy_cfg) , m_binding(o.m_binding) { } @@ -44,8 +41,6 @@ arp_proxy_binding::arp_proxy_binding(const arp_proxy_binding& o) arp_proxy_binding::~arp_proxy_binding() { sweep(); - - // not in the DB anymore. m_db.release(m_itf->key(), this); } @@ -123,7 +118,25 @@ arp_proxy_binding::event_handler::handle_replay() void arp_proxy_binding::event_handler::handle_populate(const client_db::key_t& key) { - // FIXME + std::shared_ptr cmd = + std::make_shared(); + + HW::enqueue(cmd); + HW::write(); + + for (auto& record : *cmd) { + auto& payload = record.get_payload(); + + std::shared_ptr itf = interface::find(payload.sw_if_index); + + if (itf) { + arp_proxy_binding ab(*itf); + OM::commit(key, ab); + } else { + VOM_LOG(log_level_t::ERROR) << "arp-proxy-binding dump:" + << " itf:" << payload.sw_if_index; + } + } } dependency_t