- rv = ipip_add_tunnel (mp->is_ipv6 ? IPIP_TRANSPORT_IP6 : IPIP_TRANSPORT_IP4,
- ntohl (mp->instance), &src, &dst,
- ntohl (mp->fib_index), mp->tc_tos, &sw_if_index);
+ fib_index =
+ fib_table_find (fib_ip_proto (mp->is_ipv6), ntohl (mp->table_id));
+
+ if (~0 == fib_index)
+ {
+ rv = VNET_API_ERROR_NO_SUCH_FIB;
+ }
+ else
+ {
+ rv = ipip_add_tunnel ((mp->is_ipv6 ?
+ IPIP_TRANSPORT_IP6 :
+ IPIP_TRANSPORT_IP4),
+ ntohl (mp->instance), &src, &dst,
+ fib_index, mp->tc_tos, &sw_if_index);
+ }