From a370679bd82b3d86ac965e391cc3541973e5682f Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Fri, 12 Jan 2018 19:11:44 +0100 Subject: vom: ip_route: fix handle populate Change-Id: I91892084133daadb74caa7aa13ee1071599ba892 Signed-off-by: Mohsin Kazmi --- src/vpp-api/vom/route.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/vpp-api/vom/route.cpp') diff --git a/src/vpp-api/vom/route.cpp b/src/vpp-api/vom/route.cpp index a0474676ee6..3b86fb28357 100644 --- a/src/vpp-api/vom/route.cpp +++ b/src/vpp-api/vom/route.cpp @@ -424,10 +424,15 @@ ip_route::event_handler::handle_populate(const client_db::key_t& key) path path_v4(path::special_t::PROHIBIT); ip_r.add(path_v4); } else { - std::shared_ptr itf = interface::find(p.sw_if_index); boost::asio::ip::address address = from_bytes(0, p.next_hop); - path path_v4(address, *itf, p.weight, p.preference); - ip_r.add(path_v4); + std::shared_ptr itf = interface::find(p.sw_if_index); + if (itf) { + path path_v4(address, *itf, p.weight, p.preference); + ip_r.add(path_v4); + } else { + path path_v4(rd_temp, address, p.weight, p.preference); + ip_r.add(path_v4); + } } } VOM_LOG(log_level_t::DEBUG) << "ip-route-dump: " << ip_r.to_string(); @@ -468,8 +473,13 @@ ip_route::event_handler::handle_populate(const client_db::key_t& key) } else { std::shared_ptr itf = interface::find(p.sw_if_index); boost::asio::ip::address address = from_bytes(1, p.next_hop); - path path_v6(address, *itf, p.weight, p.preference); - ip_r.add(path_v6); + if (itf) { + path path_v6(address, *itf, p.weight, p.preference); + ip_r.add(path_v6); + } else { + path path_v6(rd_temp, address, p.weight, p.preference); + ip_r.add(path_v6); + } } } VOM_LOG(log_level_t::DEBUG) << "ip-route-dump: " << ip_r.to_string(); -- cgit 1.2.3-korg