fib: fib api updates
[vpp.git] / src / vnet / fib / fib_api.h
index 041f962..ffff228 100644 (file)
 #define __FIB_API_H__
 
 #include <vnet/fib/fib_types.h>
+#include <vnet/fib/fib_entry.h>
 
-int
-add_del_route_check (fib_protocol_t table_proto,
-                    u32 table_id,
-                    u32 next_hop_sw_if_index,
-                    dpo_proto_t next_hop_table_proto,
-                    u32 next_hop_table_id,
-                     u8 is_rpf_id,
-                    u32 * fib_index, u32 * next_hop_fib_index);
-
-int
-add_del_route_t_handler (u8 is_multipath,
-                        u8 is_add,
-                        u8 is_drop,
-                        u8 is_unreach,
-                        u8 is_prohibit,
-                        u8 is_local,
-                        u8 is_multicast,
-                        u8 is_classify,
-                        u32 classify_table_index,
-                        u8 is_resolve_host,
-                        u8 is_resolve_attached,
-                        u8 is_interface_rx,
-                         u8 is_rpf_id,
-                         u8 is_dvr,
-                         u8 is_source_lookup,
-                         u8 is_udp_encap,
-                        u32 fib_index,
-                        const fib_prefix_t * prefix,
-                        dpo_proto_t next_hop_proto,
-                        const ip46_address_t * next_hop,
-                         u32 next_hop_id,
-                        u32 next_hop_sw_if_index,
-                        u8 next_hop_fib_index,
-                        u16 next_hop_weight,
-                        u16 next_hop_preference,
-                        mpls_label_t next_hop_via_label,
-                        fib_mpls_label_t * next_hop_out_label_stack);
-
+/**
+ * Forward declare the API type, no need to include the generated api headers
+ */
 struct _vl_api_fib_path;
+struct _vl_api_fib_prefix;
 
-extern void fib_api_path_encode (const fib_route_path_encode_t * api_rpath,
-                                 struct _vl_api_fib_path *out);
+/**
+ * Encode and decode functions from the API types to internal types
+ */
+extern void fib_api_path_encode(const fib_route_path_t * api_rpath,
+                                struct _vl_api_fib_path *out);
+extern int fib_api_path_decode(struct _vl_api_fib_path *in,
+                               fib_route_path_t *out);
 
-void
-fib_prefix_to_api (const fib_prefix_t *pfx,
-                   u8 address[16],
-                   u8 *length,
-                   u8 *is_ip6);
+extern int fib_api_table_id_decode(fib_protocol_t fproto,
+                                   u32 table_id,
+                                   u32 *fib_index);
 
+/**
+ * Adding routes from the API
+ */
+extern void fib_api_route_add_del (u8 is_add,
+                                   u8 is_multipath,
+                                   u32 fib_index,
+                                   const fib_prefix_t * prefix,
+                                   fib_entry_flag_t entry_flags,
+                                   fib_route_path_t *rpaths);
 
-struct _vl_api_fib_path;
+extern u8* format_vl_api_fib_path(u8 * s, va_list * args);
 
-extern int fib_path_api_parse(const struct _vl_api_fib_path *in,
-                              fib_route_path_t *out);
 
 extern fib_protocol_t fib_proto_from_api_address_family (int af);
 extern int fib_proto_to_api_address_family (fib_protocol_t fproto);