path_flags = FIB_ROUTE_PATH_FLAG_NONE;
next_hop_via_label = ntohl (in->via_label);
- memset(out, 0, sizeof(*out));
+ clib_memset(out, 0, sizeof(*out));
out->frp_sw_if_index = ~0;
out->frp_proto = in->afi;
fib_api_path_encode (const fib_route_path_encode_t * api_rpath,
vl_api_fib_path_t *out)
{
- memset (out, 0, sizeof (*out));
+ clib_memset (out, 0, sizeof (*out));
switch (api_rpath->dpo.dpoi_type)
{
case DPO_RECEIVE:
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_IP4 == api_rpath->rpath.frp_proto))
}
}
+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));
+}