diff options
author | 2018-05-22 08:40:52 -0700 | |
---|---|---|
committer | 2018-05-25 11:45:48 +0000 | |
commit | 0053de63ec4bf8b9bce7817f1b61c9791baf6c26 (patch) | |
tree | 17fe95628d3b9f5c3d226c3ff79fb2b3027a2b80 /extras/vom/vom/arp_proxy_binding.cpp | |
parent | 096e6be4bda3b409aa6fc400d0ce507ea415f26b (diff) |
ARP proxy dumps
Change-Id: I8335ebf266becf2f42bb3f28a17dfed8d9b08f97
Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'extras/vom/vom/arp_proxy_binding.cpp')
-rw-r--r-- | extras/vom/vom/arp_proxy_binding.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
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<interface::key_t, arp_proxy_binding> 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<arp_proxy_binding_cmds::dump_cmd> cmd = + std::make_shared<arp_proxy_binding_cmds::dump_cmd>(); + + HW::enqueue(cmd); + HW::write(); + + for (auto& record : *cmd) { + auto& payload = record.get_payload(); + + std::shared_ptr<interface> 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 |