X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fudp%2Fudp.h;h=f8eefdac8a1e637c00ef78eda869c9c6eab7aac3;hb=3b7261978ee4ffdc1e92336e708ae05e2be25f71;hp=19db4f81777d07fc0e84e44fe97b9b8308604316;hpb=e88865d7bc9cd45b044f8aeadf1916c38e0eb165;p=vpp.git diff --git a/src/vnet/udp/udp.h b/src/vnet/udp/udp.h index 19db4f81777..f8eefdac8a1 100644 --- a/src/vnet/udp/udp.h +++ b/src/vnet/udp/udp.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Cisco and/or its affiliates. + * Copyright (c) 2017-2019 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: @@ -34,13 +34,20 @@ typedef enum UDP_N_ERROR, } udp_error_t; +typedef enum +{ + UDP_CONN_F_CONNECTED = 1 << 0, /**< connected mode */ + UDP_CONN_F_OWNS_PORT = 1 << 1, /**< port belong to conn (UDPC) */ + UDP_CONN_F_CLOSING = 2 << 2, /**< conn closed with data */ +} udp_conn_flags_t; + typedef struct { /** Required for pool_get_aligned */ CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); transport_connection_t connection; /**< must be first */ clib_spinlock_t rx_lock; /**< rx fifo lock */ - u8 is_connected; /**< connected mode */ + u8 flags; /**< connection flags */ } udp_connection_t; #define foreach_udp4_dst_port \ @@ -148,6 +155,8 @@ typedef struct extern udp_main_t udp_main; extern vlib_node_registration_t udp4_input_node; extern vlib_node_registration_t udp6_input_node; +extern vlib_node_registration_t udp4_local_node; +extern vlib_node_registration_t udp6_local_node; always_inline udp_connection_t * udp_connection_get (u32 conn_index, u32 thread_index) @@ -232,6 +241,7 @@ udp_connection_clone_safe (u32 connection_index, u32 thread_index) udp_pool_remove_peeker (thread_index); new_c->c_thread_index = current_thread_index; new_c->c_c_index = udp_connection_index (new_c); + new_c->c_fib_index = old_c->c_fib_index; return new_c; }