diff options
Diffstat (limited to 'hicn-plugin/src/udp_tunnels/udp_tunnel.h')
-rw-r--r-- | hicn-plugin/src/udp_tunnels/udp_tunnel.h | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/hicn-plugin/src/udp_tunnels/udp_tunnel.h b/hicn-plugin/src/udp_tunnels/udp_tunnel.h index 2e57b7857..f7865f58a 100644 --- a/hicn-plugin/src/udp_tunnels/udp_tunnel.h +++ b/hicn-plugin/src/udp_tunnels/udp_tunnel.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Cisco and/or its affiliates. + * Copyright (c) 2021 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -20,6 +20,8 @@ #include <vppinfra/error.h> #include <vnet/udp/udp_encap.h> +#include "../faces/face.h" + /** * @file udp_tunnel.h * @@ -70,6 +72,19 @@ u32 udp_tunnel_get (const ip46_address_t *src_ip, const ip46_address_t *dst_ip, u16 src_port, u16 dst_port); /** + * @brief Get udp tunnel UEI. Creates the tunnel if does not exist already. + * + * @param src_ip source address of the tunnel + * @param dst_ip destination address of the tunnel + * @param src_port source port + * @param src_port destination port + * @return id of the udp tunnel/encap + */ +u32 udp_tunnel_get_create (const ip46_address_t *src_ip, + const ip46_address_t *dst_ip, u16 src_port, + u16 dst_port); + +/** * @brief Delete a udp tunnel * * @param proto FIB_PROTOCOL_IP4 or FIB_PROTOCOL_IP6 @@ -96,6 +111,24 @@ int udp_tunnel_del (fib_protocol_t proto, index_t fib_index, void udp_tunnel_add_existing (index_t uei, dpo_proto_t proto); /** + * @brief Check if DPO is UDP encap + */ +always_inline int +dpo_is_udp_encap (const dpo_id_t *dpo) +{ + return dpo->dpoi_type == dpo_type_udp_ip4 || + dpo->dpoi_type == dpo_type_udp_ip6; +} + +always_inline dpo_proto_t +dpo_udp_encap_get_proto (const dpo_id_t *dpo) +{ + return dpo->dpoi_type == dpo_type_udp_ip4 ? DPO_PROTO_IP4 : DPO_PROTO_IP6; +} + +void udp_tunnel_set_face (hicn_face_id_t face_id, int isv4); + +/** * @brief Init the udp tunnel module * */ |