summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2021-03-09 18:36:06 -0800
committerDave Barach <openvpp@barachs.net>2021-06-03 14:25:00 +0000
commit67c90a32b7ad0c5a38c483ce849cc7a231e7ba54 (patch)
tree19e3446443ff7ce3e35db9857dca4eb441a8b7bb /src
parent8dd0d75b55ab71ecaab4b3c0240a10a5bf0f252b (diff)
session: lcl transport info on accept
Type: improvement Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Ia46b0b8afed30f84b244c06f0457303f9e8832cd
Diffstat (limited to 'src')
-rw-r--r--src/vcl/vppcom.c4
-rw-r--r--src/vnet/session/application_interface.h1
-rw-r--r--src/vnet/session/session_api.c2
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);