aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-10-01 01:42:13 -0700
committerDamjan Marion <dmarion@me.com>2018-10-01 17:08:55 +0000
commitd1e68ab77e57f3f170c989d9f73b6a44648b4f60 (patch)
tree8b68e26b2f89ac98a0ba775cb40ed1306fecbeca /src/vnet
parent346ed07526326f0b1c48ac356d5d786ff9ae0013 (diff)
Source VRF Select
match against a packet's source address to determine the VRF for the subsequent destination address lookup. Change-Id: I48ee0ef54dcb891f0ec7f879e4d3b925a0ed0081 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet')
-rw-r--r--src/vnet/fib/fib_api.c31
-rw-r--r--src/vnet/fib/fib_api.h3
2 files changed, 34 insertions, 0 deletions
diff --git a/src/vnet/fib/fib_api.c b/src/vnet/fib/fib_api.c
index eca5e614531..3c832eb01fb 100644
--- a/src/vnet/fib/fib_api.c
+++ b/src/vnet/fib/fib_api.c
@@ -266,3 +266,34 @@ fib_api_path_encode (const fib_route_path_encode_t * api_rpath,
}
}
+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));
+}
diff --git a/src/vnet/fib/fib_api.h b/src/vnet/fib/fib_api.h
index 66f0b51e891..041f962e3d7 100644
--- a/src/vnet/fib/fib_api.h
+++ b/src/vnet/fib/fib_api.h
@@ -73,4 +73,7 @@ struct _vl_api_fib_path;
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);
+
#endif /* __FIB_API_H__ */