diff options
author | Neale Ranns <nranns@cisco.com> | 2018-10-01 01:42:13 -0700 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2018-10-01 17:08:55 +0000 |
commit | d1e68ab77e57f3f170c989d9f73b6a44648b4f60 (patch) | |
tree | 8b68e26b2f89ac98a0ba775cb40ed1306fecbeca /src/vnet/fib | |
parent | 346ed07526326f0b1c48ac356d5d786ff9ae0013 (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/fib')
-rw-r--r-- | src/vnet/fib/fib_api.c | 31 | ||||
-rw-r--r-- | src/vnet/fib/fib_api.h | 3 |
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__ */ |