summaryrefslogtreecommitdiffstats
path: root/src/vnet/udp/udp_local.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/udp/udp_local.c')
-rw-r--r--src/vnet/udp/udp_local.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vnet/udp/udp_local.c b/src/vnet/udp/udp_local.c
index bb7305d8d03..a16ba22cf27 100644
--- a/src/vnet/udp/udp_local.c
+++ b/src/vnet/udp/udp_local.c
@@ -549,6 +549,22 @@ udp_unregister_dst_port (vlib_main_t * vm, udp_dst_port_t dst_port, u8 is_ip4)
n[0] = SPARSE_VEC_INVALID_INDEX;
}
+bool
+udp_is_valid_dst_port (udp_dst_port_t dst_port, u8 is_ip4)
+{
+ udp_main_t *um = &udp_main;
+ u16 *n;
+
+ if (is_ip4)
+ n = sparse_vec_validate (um->next_by_dst_port4,
+ clib_host_to_net_u16 (dst_port));
+ else
+ n = sparse_vec_validate (um->next_by_dst_port6,
+ clib_host_to_net_u16 (dst_port));
+
+ return (n[0] != SPARSE_VEC_INVALID_INDEX);
+}
+
void
udp_punt_unknown (vlib_main_t * vm, u8 is_ip4, u8 is_add)
{