X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_api.c;h=3c832eb01fbdb91c83e68f464e1bd29d7dc9f9b2;hb=d1e68ab7;hp=a2f7e79b03c31cdf23ec495493b9daa3d885b3f4;hpb=8145842bf273823192140c57fc773bb92d9db64f;p=vpp.git diff --git a/src/vnet/fib/fib_api.c b/src/vnet/fib/fib_api.c index a2f7e79b03c..3c832eb01fb 100644 --- a/src/vnet/fib/fib_api.c +++ b/src/vnet/fib/fib_api.c @@ -217,7 +217,7 @@ fib_api_path_encode (const fib_route_path_encode_t * api_rpath, out->is_drop = true; break; case DPO_IP_NULL: - switch (api_rpath->dpo.dpoi_index) + switch (ip_null_dpo_get_action(api_rpath->dpo.dpoi_index)) { case IP_NULL_ACTION_NONE: out->is_drop = true; @@ -241,11 +241,10 @@ fib_api_path_encode (const fib_route_path_encode_t * api_rpath, out->afi = api_rpath->rpath.frp_proto; fib_api_path_copy_next_hop (api_rpath, out); - if (~0 == api_rpath->rpath.frp_sw_if_index && - !ip46_address_is_zero(&api_rpath->rpath.frp_addr)) + if (0 != api_rpath->rpath.frp_fib_index) { if ((DPO_PROTO_IP6 == api_rpath->rpath.frp_proto) || - (DPO_PROTO_IP6 == api_rpath->rpath.frp_proto)) + (DPO_PROTO_IP4 == api_rpath->rpath.frp_proto)) { fib_table_t *fib; @@ -266,3 +265,35 @@ fib_api_path_encode (const fib_route_path_encode_t * api_rpath, out->next_hop_id = api_rpath->rpath.frp_udp_encap_id; } } + +fib_protocol_t +fib_proto_from_api_address_family (int af) +{ + switch (clib_net_to_host_u32 (af)) + { + case ADDRESS_IP4: + return (FIB_PROTOCOL_IP4); + case ADDRESS_IP6: + return (FIB_PROTOCOL_IP6); + } + + ASSERT(0); + return (FIB_PROTOCOL_IP4); +} + +int +fib_proto_to_api_address_family (fib_protocol_t fproto) +{ + switch (fproto) + { + case FIB_PROTOCOL_IP4: + return (clib_net_to_host_u32 (ADDRESS_IP4)); + case FIB_PROTOCOL_IP6: + return (clib_net_to_host_u32 (ADDRESS_IP6)); + default: + break; + } + + ASSERT(0); + return (clib_net_to_host_u32 (ADDRESS_IP4)); +}