+ if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_INTF_RX)
+ {
+ out->is_interface_rx = 1;
+ }
+ if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_LOCAL)
+ {
+ out->is_local = 1;
+ }
+ if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_RESOLVE_VIA_HOST)
+ {
+ out->is_resolve_host = 1;
+ }
+ if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_RESOLVE_VIA_ATTACHED)
+ {
+ out->is_resolve_attached = 1;
+ }
+ /* if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_ATTACHED) { */
+ /* out->is_attached = 1; */
+ /* } */
+ /* if (api_rpath->rpath.frp_flags & FIB_ROUTE_PATH_CONNECTED) { */
+ /* out->is_connected = 1; */
+ /* } */
+ if (api_rpath->rpath.frp_label_stack)
+ {
+ for (ii = 0; ii < vec_len(api_rpath->rpath.frp_label_stack); ii++)
+ {
+ out->label_stack[ii].label =
+ htonl(api_rpath->rpath.frp_label_stack[ii].fml_value);
+ out->label_stack[ii].ttl =
+ api_rpath->rpath.frp_label_stack[ii].fml_ttl;
+ out->label_stack[ii].exp =
+ api_rpath->rpath.frp_label_stack[ii].fml_exp;
+ }
+ out->n_labels = ii;
+ }
+}
+
+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));