X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=extras%2Fvom%2Fvom%2Farp_proxy_config.cpp;h=275d9f9bf74dbf6d68c5d6bf31efa18129c25307;hb=0053de6;hp=3973eba55f9c3b417c05aa19cd2e815fef6a664e;hpb=096e6be4bda3b409aa6fc400d0ce507ea415f26b;p=vpp.git diff --git a/extras/vom/vom/arp_proxy_config.cpp b/extras/vom/vom/arp_proxy_config.cpp index 3973eba55f9..275d9f9bf74 100644 --- a/extras/vom/vom/arp_proxy_config.cpp +++ b/extras/vom/vom/arp_proxy_config.cpp @@ -15,6 +15,7 @@ #include "vom/arp_proxy_config.hpp" #include "vom/arp_proxy_config_cmds.hpp" +#include "vom/prefix.hpp" #include "vom/singular_db_funcs.hpp" namespace VOM { @@ -115,7 +116,21 @@ arp_proxy_config::event_handler::handle_replay() void arp_proxy_config::event_handler::handle_populate(const client_db::key_t& key) { - // VPP provides no dump for ARP proxy. + std::shared_ptr cmd = + std::make_shared(); + + HW::enqueue(cmd); + HW::write(); + + for (auto& record : *cmd) { + auto& payload = record.get_payload(); + + boost::asio::ip::address lo = from_bytes(0, payload.proxy.low_address); + boost::asio::ip::address hi = from_bytes(0, payload.proxy.hi_address); + + arp_proxy_config ap(lo.to_v4(), hi.to_v4()); + OM::commit(key, ap); + } } dependency_t