summaryrefslogtreecommitdiffstats
path: root/src/vnet/mfib
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/mfib')
-rw-r--r--src/vnet/mfib/mfib_api.c20
-rw-r--r--src/vnet/mfib/mfib_api.h7
-rw-r--r--src/vnet/mfib/mfib_types.api9
3 files changed, 34 insertions, 2 deletions
diff --git a/src/vnet/mfib/mfib_api.c b/src/vnet/mfib/mfib_api.c
index 1066a9d3b62..4743d889aef 100644
--- a/src/vnet/mfib/mfib_api.c
+++ b/src/vnet/mfib/mfib_api.c
@@ -92,6 +92,26 @@ mfib_api_path_itf_flags_decode (vl_api_mfib_itf_flags_t in,
*out |= MFIB_ITF_FLAG_DONT_PRESERVE;
}
+mfib_entry_flags_t
+mfib_api_path_entry_flags_decode (vl_api_mfib_entry_flags_t in)
+{
+ mfib_entry_flags_t out;
+
+ out = MFIB_ENTRY_FLAG_NONE;
+ in = clib_net_to_host_u32(in);
+
+ if (in & MFIB_API_ENTRY_FLAG_SIGNAL)
+ out |= MFIB_ENTRY_FLAG_SIGNAL;
+ if (in & MFIB_API_ENTRY_FLAG_DROP)
+ out |= MFIB_ENTRY_FLAG_DROP;
+ if (in & MFIB_API_ENTRY_FLAG_CONNECTED)
+ out |= MFIB_ENTRY_FLAG_CONNECTED;
+ if (in & MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF)
+ out |= MFIB_ENTRY_FLAG_ACCEPT_ALL_ITF;
+
+ return (out);
+}
+
int
mfib_api_path_decode (vl_api_mfib_path_t *in,
fib_route_path_t *out)
diff --git a/src/vnet/mfib/mfib_api.h b/src/vnet/mfib/mfib_api.h
index f9c0a74bedb..dc802b6ed15 100644
--- a/src/vnet/mfib/mfib_api.h
+++ b/src/vnet/mfib/mfib_api.h
@@ -17,6 +17,7 @@
#define __MFIB_API_H__
#include <vnet/mfib/mfib_types.h>
+#include <vnet/ip/ip.api_types.h>
/**
* Forward declare the API type, no need to include the generated api headers
@@ -27,10 +28,12 @@ struct _vl_api_mfib_path;
* Encode and decode functions from the API types to internal types
*/
extern void mfib_api_path_encode(const fib_route_path_t *in,
- struct _vl_api_mfib_path *out);
-extern int mfib_api_path_decode(struct _vl_api_mfib_path *in,
+ vl_api_mfib_path_t *out);
+extern int mfib_api_path_decode(vl_api_mfib_path_t *in,
fib_route_path_t *out);
+extern mfib_entry_flags_t mfib_api_path_entry_flags_decode (vl_api_mfib_entry_flags_t in);
+
extern int mfib_api_table_id_decode(fib_protocol_t fproto,
u32 table_id,
u32 *fib_index);
diff --git a/src/vnet/mfib/mfib_types.api b/src/vnet/mfib/mfib_types.api
index 118230680d1..515b6de36e3 100644
--- a/src/vnet/mfib/mfib_types.api
+++ b/src/vnet/mfib/mfib_types.api
@@ -16,6 +16,15 @@
import "vnet/fib/fib_types.api";
import "vnet/ip/ip_types.api";
+enum mfib_entry_flags
+{
+ MFIB_API_ENTRY_FLAG_NONE = 0,
+ MFIB_API_ENTRY_FLAG_SIGNAL = 0x1,
+ MFIB_API_ENTRY_FLAG_DROP = 0x2,
+ MFIB_API_ENTRY_FLAG_CONNECTED = 0x4,
+ MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF = 0x8,
+};
+
enum mfib_itf_flags
{
MFIB_API_ITF_FLAG_NONE = 0,