From 67c90a32b7ad0c5a38c483ce849cc7a231e7ba54 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 9 Mar 2021 18:36:06 -0800 Subject: [PATCH] session: lcl transport info on accept Type: improvement Signed-off-by: Florin Coras Change-Id: Ia46b0b8afed30f84b244c06f0457303f9e8832cd --- src/vcl/vppcom.c | 4 ++-- src/vnet/session/application_interface.h | 1 + src/vnet/session/session_api.c | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index b3efdcd9817..28f46f17b93 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -471,8 +471,8 @@ vcl_session_accepted_handler (vcl_worker_t * wrk, session_accepted_msg_t * mp, sizeof (ip46_address_t)); vcl_session_table_add_vpp_handle (wrk, mp->handle, session->session_index); - session->transport.lcl_port = listen_session->transport.lcl_port; - session->transport.lcl_ip = listen_session->transport.lcl_ip; + session->transport.lcl_port = mp->lcl.port; + session->transport.lcl_ip = mp->lcl.ip; session->session_type = listen_session->session_type; session->is_dgram = vcl_proto_is_dgram (session->session_type); session->listener_index = listen_session->session_index; diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h index 733f5dc0ef6..46029f0307a 100644 --- a/src/vnet/session/application_interface.h +++ b/src/vnet/session/application_interface.h @@ -378,6 +378,7 @@ typedef struct session_accepted_msg_ u64 segment_handle; uword vpp_event_queue_address; u32 mq_index; + transport_endpoint_t lcl; transport_endpoint_t rmt; u8 flags; } __clib_packed session_accepted_msg_t; diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index cf5a66d9e7a..fe9ebc15db3 100644 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -163,6 +163,7 @@ mq_send_session_accepted_cb (session_t * s) m.handle = session_handle (s); session_get_endpoint (s, &m.rmt, 0 /* is_lcl */); + session_get_endpoint (s, &m.lcl, 1 /* is_lcl */); } else { @@ -173,6 +174,7 @@ mq_send_session_accepted_cb (session_t * s) m.listener_handle = app_listen_session_handle (listener); m.rmt.is_ip4 = session_type_is_ip4 (listener->session_type); m.rmt.port = ct->c_rmt_port; + m.lcl.port = ct->c_lcl_port; m.handle = session_handle (s); m.vpp_event_queue_address = fifo_segment_msg_q_offset (eq_seg, s->thread_index); -- 2.16.6