udp: fix connection flags
[vpp.git] / src / vnet / udp / udp.h
index 19db4f8..f8eefda 100644 (file)
@@ -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;
 }