X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Fip_unnumbered.cpp;h=74a6edeceeb02e3478b6120e592275ecb61edea6;hp=caeeb419993588da00ead74549754949de9208b1;hb=9e2f915;hpb=8c3f8a29374deed5a67a5fd084f186413f6183d7 diff --git a/extras/vom/vom/ip_unnumbered.cpp b/extras/vom/vom/ip_unnumbered.cpp index caeeb419993..74a6edeceeb 100644 --- a/extras/vom/vom/ip_unnumbered.cpp +++ b/extras/vom/vom/ip_unnumbered.cpp @@ -117,7 +117,27 @@ ip_unnumbered::event_handler::handle_replay() void ip_unnumbered::event_handler::handle_populate(const client_db::key_t& key) { - // VPP provides no dump for IP unnumbered + std::shared_ptr cmd = + std::make_shared(); + + HW::enqueue(cmd); + HW::write(); + + for (auto& ip_record : *cmd) { + auto& payload = ip_record.get_payload(); + + VOM_LOG(log_level_t::DEBUG) << "ip-unnumbered dump: " + << " itf: " << payload.sw_if_index + << " ip: " << payload.ip_sw_if_index; + + std::shared_ptr itf = interface::find(payload.sw_if_index); + std::shared_ptr ip_itf = interface::find(payload.ip_sw_if_index); + + if (itf && ip_itf) { + ip_unnumbered ipun(*itf, *ip_itf); + OM::commit(key, ipun); + } + } } dependency_t