vcl: ldp support SO_ORIGINAL_DST
[vpp.git] / src / vnet / session / application_interface.h
index 138953b..510068b 100644 (file)
@@ -233,7 +233,8 @@ typedef enum
   _ (USE_LOCAL_SCOPE, "App can use local session scope")                      \
   _ (EVT_MQ_USE_EVENTFD, "Use eventfds for signaling")                        \
   _ (MEMFD_FOR_BUILTIN, "Use memfd for builtin app segs")                     \
-  _ (USE_HUGE_PAGE, "Use huge page for FIFO")
+  _ (USE_HUGE_PAGE, "Use huge page for FIFO")                                 \
+  _ (GET_ORIGINAL_DST, "Get original dst enabled")
 
 typedef enum _app_options
 {
@@ -299,15 +300,15 @@ typedef struct app_session_transport_
   u8 is_ip4;                   /**< set if uses ip4 networking */
 } app_session_transport_t;
 
-#define foreach_app_session_field                                      \
-  _(svm_fifo_t, *rx_fifo)              /**< rx fifo */                 \
-  _(svm_fifo_t, *tx_fifo)              /**< tx fifo */                 \
-  _(session_type_t, session_type)      /**< session type */            \
-  _(volatile u8, session_state)                /**< session state */           \
-  _(u32, session_index)                        /**< index in owning pool */    \
-  _(app_session_transport_t, transport)        /**< transport info */          \
-  _(svm_msg_q_t, *vpp_evt_q)           /**< vpp event queue  */        \
-  _(u8, is_dgram)                      /**< flag for dgram mode */     \
+#define foreach_app_session_field                                             \
+  _ (svm_fifo_t, *rx_fifo)              /**< rx fifo */                      \
+  _ (svm_fifo_t, *tx_fifo)              /**< tx fifo */                      \
+  _ (session_type_t, session_type)      /**< session type */                 \
+  _ (volatile u8, session_state)        /**< session state */                \
+  _ (u32, session_index)                /**< index in owning pool */         \
+  _ (app_session_transport_t, transport) /**< transport info */               \
+  _ (svm_msg_q_t, *vpp_evt_q)           /**< vpp event queue  */             \
+  _ (u8, is_dgram)                      /**< flag for dgram mode */
 
 typedef struct
 {
@@ -386,6 +387,8 @@ typedef struct session_accepted_msg_
   transport_endpoint_t lcl;
   transport_endpoint_t rmt;
   u8 flags;
+  u32 original_dst_ip4;
+  u16 original_dst_port;
 } __clib_packed session_accepted_msg_t;
 
 typedef struct session_accepted_reply_msg_