From b345e41ed02364a5957ce487ecad32c0b98d02f9 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 16 Oct 2019 11:21:41 -0700 Subject: session: increase max ctrl msg size Type: fix Connect ctrl message recently outgrew the maximum ctrl msg size, so increase the limit. Also add static asserts for messages that could potentially exceed the limit. Change-Id: I0d3e32e0d4d67d7e222cff14ddba59a0c3fb8b00 Signed-off-by: Florin Coras (cherry picked from commit e24a4bc023b880cb01aeaf8ffea98f44dd66ef4a) --- src/vnet/session/application_interface.h | 12 ++++++++++++ src/vnet/session/session.h | 2 -- src/vnet/session/session_types.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/vnet/session/application_interface.h b/src/vnet/session/application_interface.h index 015a297f852..748b1b5b52a 100644 --- a/src/vnet/session/application_interface.h +++ b/src/vnet/session/application_interface.h @@ -273,6 +273,9 @@ typedef struct session_listen_msg_ ip46_address_t ip; } __clib_packed session_listen_msg_t; +STATIC_ASSERT (sizeof (session_listen_msg_t) <= SESSION_CTRL_MSG_MAX_SIZE, + "msg too large"); + typedef struct session_listen_uri_msg_ { u32 client_index; @@ -280,6 +283,9 @@ typedef struct session_listen_uri_msg_ u8 uri[56]; } __clib_packed session_listen_uri_msg_t; +STATIC_ASSERT (sizeof (session_listen_uri_msg_t) <= SESSION_CTRL_MSG_MAX_SIZE, + "msg too large"); + typedef struct session_bound_msg_ { u32 context; @@ -345,6 +351,9 @@ typedef struct session_connect_msg_ u64 parent_handle; } __clib_packed session_connect_msg_t; +STATIC_ASSERT (sizeof (session_connect_msg_t) <= SESSION_CTRL_MSG_MAX_SIZE, + "msg too large"); + typedef struct session_connect_uri_msg_ { u32 client_index; @@ -352,6 +361,9 @@ typedef struct session_connect_uri_msg_ u8 uri[56]; } __clib_packed session_connect_uri_msg_t; +STATIC_ASSERT (sizeof (session_connect_uri_msg_t) <= + SESSION_CTRL_MSG_MAX_SIZE, "msg too large"); + typedef struct session_connected_msg_ { u32 context; diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index cb0cac7cda6..1d3ae0ca4b2 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -62,8 +62,6 @@ typedef struct session_tx_context_ session_dgram_hdr_t hdr; } session_tx_context_t; -#define SESSION_CTRL_MSG_MAX_SIZE 64 - typedef struct session_evt_elt { clib_llist_anchor_t evt_list; diff --git a/src/vnet/session/session_types.h b/src/vnet/session/session_types.h index bf45855e264..17a03403c97 100644 --- a/src/vnet/session/session_types.h +++ b/src/vnet/session/session_types.h @@ -21,6 +21,7 @@ #define SESSION_INVALID_INDEX ((u32)~0) #define SESSION_INVALID_HANDLE ((u64)~0) +#define SESSION_CTRL_MSG_MAX_SIZE 68 #define foreach_session_endpoint_fields \ foreach_transport_endpoint_cfg_fields \ -- cgit 1.2.3-korg