aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-plugin/src/udp_tunnels/udp_tunnel.h
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-plugin/src/udp_tunnels/udp_tunnel.h')
-rw-r--r--hicn-plugin/src/udp_tunnels/udp_tunnel.h35
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
*
*/