X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fudp%2Fudp_local.c;fp=src%2Fvnet%2Fip%2Fudp_local.c;h=6b239f734816dd7dc207a3fde576897827aa8030;hb=68b0fb0c620c7451ef1a6380c43c39de6614db51;hp=13ab6e4fb32c9c40fbe47c1fce21ad53d1938b0a;hpb=f869028740aaebeb0375077d4d84fa07a17fff1a;p=vpp.git diff --git a/src/vnet/ip/udp_local.c b/src/vnet/udp/udp_local.c similarity index 96% rename from src/vnet/ip/udp_local.c rename to src/vnet/udp/udp_local.c index 13ab6e4fb32..6b239f73481 100644 --- a/src/vnet/ip/udp_local.c +++ b/src/vnet/udp/udp_local.c @@ -17,8 +17,8 @@ #include #include -#include -#include +#include +#include #include udp_main_t udp_main; @@ -527,6 +527,27 @@ udp_register_dst_port (vlib_main_t * vm, n[0] = pi->next_index; } +void +udp_unregister_dst_port (vlib_main_t * vm, udp_dst_port_t dst_port, u8 is_ip4) +{ + udp_main_t *um = &udp_main; + udp_dst_port_info_t *pi; + udp_input_runtime_t *rt; + u16 *n; + + pi = udp_get_dst_port_info (um, dst_port, is_ip4); + /* Not registered? Fagedaboudit */ + if (!pi) + return; + + /* Kill the mapping. Don't bother killing the pi, it may be back. */ + rt = vlib_node_get_runtime_data + (vm, is_ip4 ? udp4_input_node.index : udp6_input_node.index); + n = sparse_vec_validate (rt->next_by_dst_port, + clib_host_to_net_u16 (dst_port)); + n[0] = SPARSE_VEC_INVALID_INDEX; +} + void udp_punt_unknown (vlib_main_t * vm, u8 is_ip4, u8 is_add) {